顯示廣告
隱藏 ✕
※ 本文為 swallow.bbs. 轉寄自 cd.twbbs.org 更新時間: 2013-01-31 01:55:06
看板 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
--
紅狼太難畫了 我可不可以畫隻紅色的波利就好?
    『紅色波利』
        ◢◣
      ◣█
     █▇                               這年頭 都流行在簽名檔放BLOG...
      ◥██◤ ψjohn112136 (畢卡囧)           http://nublog.cc/?u=ch890333
--
* Origin: 中正築夢園 (CcuDream.twbbs.org) ★ From: 140.123.28.100

--
※ 看板: Swallow 文章推薦值: 0 目前人氣: 0 累積人氣: 748 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇