看板 F_wiki
作者 ch890333 (紅狼)
標題 [OS] 羅習五 12/25
時間 Thu Dec 25 10:49:48 2008


當程式需要記憶體時,需要是"連續的"

如果size小那ok 但基本上記憶體要有"連續""夠大"的空間不太可能

所以就用mmu/TLBs來分配記憶體 用mmu+TLBs偽裝成連續的位址



如果沒有TLB 那在切換PTBR位址時 之後都從新位址存取

在有TLB時 如果在P1和P2的虛擬記憶體一樣時 就會存取錯誤

所以在process切換時 那TLB表內的值也要刷掉重寫

在有ASID時 可以不用flush重寫 ASID: address space identifier ->多存一個欄位 用
空間換取時間

    要flush 有加ASID
p1  0x400   0x1400
p2  0x400   0x2400

p.s.如果p1p2都很小 那TLB可以一起存 不用擔心flush問題
    如果TLB很小 也幾乎不需要ASID 因為每次都需要flush

i7有two-level的TLB -> 窩喔好大

32bit machine, 4k page
4G/4k x 20b/8b = 1M x 3B = 3M的page table 要連續~~

那就對page table再做一次paging

->連續的page 對應到page2中的任一page
outer page不大 4k
page2 中每個都是4k (Intel常用4k為底)

   LA    PA
CPU -> MMU -> memory
                    -> L1$ -> L2$ ->MM
                    PA     PA     PA
--
紅狼太難畫了 我可不可以畫隻紅色的波利就好?
    『紅色波利』
        ◢◣
--
* Origin: 中正築夢園 (CcuDream.twbbs.org) ★ From: 140.123.28.100

--