mm1
cpu發(fā)出線性地址,linux內存管理單元做如下四步:
1.用線性地址中最高的那一位段作為下標在PGD中找到相應的表項,該表項指向相應的中間目錄PMD。
2.用線性地址中的第二個位段作為下標在第一步中找到的表項中找相應的表項,該表項指向相應的頁面表。
3.用線性地址中的第三個位段作為下標在頁面表中找到相應的表項PTE,該表項中存放的就是指向物理頁面的指針。
4.線性地址中最后位段為物理頁面的相對位移量,將此位移量與目標物理頁面的起始地址相加便得到相應的物理地址。
linux為了兼容所有的cpu體系結構,特意對內存管理進行了一層抽象。
常規(guī)映射是: 進程虛擬地址(線性地址)->頁目錄->中間目錄->物理地址
而對i386的cpu直接略過中間目錄的映射。
其中PGD == page dir,PMD == page middle dir, PTE == page table entry。
這個過程可以有mmu來處理。
1.用線性地址中最高的那一位段作為下標在PGD中找到相應的表項,該表項指向相應的中間目錄PMD。
2.用線性地址中的第二個位段作為下標在第一步中找到的表項中找相應的表項,該表項指向相應的頁面表。
3.用線性地址中的第三個位段作為下標在頁面表中找到相應的表項PTE,該表項中存放的就是指向物理頁面的指針。
4.線性地址中最后位段為物理頁面的相對位移量,將此位移量與目標物理頁面的起始地址相加便得到相應的物理地址。
linux為了兼容所有的cpu體系結構,特意對內存管理進行了一層抽象。
常規(guī)映射是: 進程虛擬地址(線性地址)->頁目錄->中間目錄->物理地址
而對i386的cpu直接略過中間目錄的映射。
其中PGD == page dir,PMD == page middle dir, PTE == page table entry。
這個過程可以有mmu來處理。
posted on 2009-10-21 16:32 tiny 閱讀(1158) 評論(0) 編輯 收藏 引用 所屬分類: os