Re: [問題] 虛擬記憶體mapping 實體記憶體
※ 引述《ICECOCA (unknow)》之銘言:
: ※ 引述《mayasky ( )》之銘言:
: : 有可能,實際上要對到哪裡都可以,只要在ADDRESS LINE範圍內
: 實體記憶體分高記憶體區和低記憶體區,
這是軟體設計問題,如果只談LINUX,是如此沒錯,但這概念是在32BITS CPU
: 若要求實體記憶體連續則會分配低記憶體區出去 比方說kmalloc()
: 或是匯流排要使用DMA,這也必須使用連續記憶體,所以也是分配這段。
一些老DMA會有ADDRESS LINE限制,現代的大多沒了
: 通常會有一個offset,至於offset多少可能每個平台不一樣。
: 所以1000,應該不會直接mapping到1000
您這邊說的就是軟體的設計了,我只說了硬體可以做到啥:)
硬體沒這些限制
: 若沒有特別要求要連續,則會分配高端記憶體出去,並透過page table
: 紀錄虛擬位址和實體位址之間的mapping關係。
: 比方說vmalloc() 雖然在虛擬記憶體連續,但是對應到實體記憶體的位置可以不連續
: 不同process有自己的記憶體空間,也有自己的page table
: 不同process做context switch時會連同page table一起交換...
其實只是改個REGISTER,指向不同地方
: 換的時候,我不知道TLB會做什麼...? 把他全部設成dirty嗎?
有ASID可以啥都不做,直到一些特殊狀況(EX.ARM,MIPS,冷門的台灣芯Score..XD)
沒ASID就要清光光(INVALIDATE)
我映像中..X86是TLB都清掉,有進化了嗎?雖然他們都幹掉還是比別人有ASID快..威武
AMD為了VIRTUALIZATION多了VMID的樣子(名字可能有誤),概念就是ASID
當然有更細緻的方式..這裡不提了..因為那些未必有效率
--
KERNEL先生。。。別整蠱我了orz
http://www.wretch.cc/blog/mayasky
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.97.16
※ 編輯: mayasky 來自: 61.231.97.16 (11/15 02:52)
推
11/15 11:41, , 1F
11/15 11:41, 1F
→
11/15 11:42, , 2F
11/15 11:42, 2F
→
11/15 11:43, , 3F
11/15 11:43, 3F
→
11/15 12:18, , 4F
11/15 12:18, 4F
→
11/15 12:19, , 5F
11/15 12:19, 5F
推
11/16 01:22, , 6F
11/16 01:22, 6F
→
11/16 01:45, , 7F
11/16 01:45, 7F
推
02/08 23:23, , 8F
02/08 23:23, 8F
→
03/08 21:33, , 9F
03/08 21:33, 9F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章