實體地址空間管理
參考資料
1. 位址空間
實體地址空間:硬體支援的位址空間,起始位址為0,直到 max
sysmax_
maxsys
。邏輯位址空間:cpu執行的程序所能看到的位址,起始位址為0,直到 max
為什麼需要邏輯位址空間?
- 安全風險:直接訪問物理記憶體,意味著惡意程式可以隨意修改作業系統資料,以達到破壞的目的。
2. 邏輯位址生成
變數本質上就是代表乙個」可操作的儲存空間」,源程式經過編譯、彙編及鏈結變為組合語言,變數名就翻譯成為邏輯位址。例如,函式名 foo
foofo
o 編譯彙編後的邏輯位址為 75
7575
,鏈結上函式庫後位址變為 175
3. 硬體支援
mmu 檢查邏輯位址是否超過界位址暫存器的內容,超出則發出越界異常,作業系統處理該異常;如未越界,mmu則進行邏輯位址與實體地址的轉換
4. 實體地址生成
movl %eax, $0xfffa620e // 邏輯位址 $0xfffa620e 的記憶體塊內容送到 eax 暫存器
實體地址生成過程如下:
cpu的算術邏輯單元(alu)需要獲取$0xfffa620e
的內容,向匯流排發出實體地址請求
作業系統建立邏輯位址與實體地址的對映關係
記憶體管理單元(mmu)進行越界檢查,然後根據該對映關係將邏輯位址轉換為實體地址
記憶體根據生成的實體地址尋找記憶體單元,並將內容送到 eax
eaxea
x 暫存器
1.分配演算法
例: 某系統的空閒分割槽表如下圖,現有如下程序序列:96kb、20kb、200kb。分別採用首次適應、最佳適應、最壞適應及鄰近適應,則哪些演算法可滿足該程序序列請求,為什麼?
分割槽號大小
空閒記憶體起始位址
132kb
100kb
210kb
150kb
35kb
200kb
4218kb
220kb
596kb
530kb
答:首次適應:96kb大小的程序進入4號空閒區,20kb大小的程序進入1號空閒區,此時無記憶體可滿足200kb大小的程序要求。此題鄰近適應與首次適應結果一致。
分割槽號大小
空閒記憶體起始位址
112kb
100kb
210kb
150kb
35kb
200kb
4122kb
316kb
596kb
530kb
最佳適應:96kb大小的程序進入5號空閒區,20kb大小的程序進入1號空閒區,200kb大小的程序進入4號空閒區,滿足要求。
分割槽號大小
空閒記憶體起始位址
112kb
120kb
210kb
150kb
35kb
200kb
418kb
420kb
50kb
530kb
最壞適應:96kb大小的程序進入4號空閒區,20kb大小的程序進入5號空閒區,此時無記憶體可滿足200kb大小的程序要求。
分割槽號大小
空閒記憶體起始位址
132kb
100kb
210kb
150kb
35kb
200kb
4122kb
316kb
570kb
550kb
2.碎片問題
記憶體碎片:無法被利用的空閒記憶體。記憶體碎片又分為外部碎片和內部碎片。
實體地址的使用包括安全風險、效率低下及位址不確定的缺點,而且實體地址空間只能進行連續分配記憶體,不可避免地產生外碎片及內碎片,降低記憶體利用率。邏輯位址空間的使用允許乙個程式分散地裝入到不相鄰的記憶體分割槽,提高記憶體利用效率級管理的靈活性。相比於實體地址對應記憶體塊,邏輯位址需要表示記憶體塊所在的分割槽、記憶體塊在分割槽內部的位置,所以邏輯位址一般是二維、三維甚至更高維度的。
《operating system: three easy pieces》
《operating system concepts》
《作業系統考研複習指導》王道考研
作業系統 清華大學 向勇
《linux中為什麼要使用虛擬位址》
作業系統 實體地址與邏輯位址
實體地址 載入到記憶體位址暫存器中的位址,記憶體單元的真正位址。在前端匯流排上傳輸的記憶體位址都是物理記憶體位址,編號從0開始一直到可用物理記憶體的最高端。這些數字被北橋 nortbridge chip 對映到實際的記憶體條上。實體地址是明確的 最終用在匯流排上的編號,不必轉換,不必分頁,也沒有特權...
作業系統學習筆記 邏輯位址 實體地址 以及分頁管理
之前軟考寫寫題目,關於位址這裡的題目是會寫了,但是也僅限於題目會寫,於是準備把作業系統系統性的過一遍,然後到了這裡的位置有一點疑惑,對邏輯位址作用於分頁管理這裡有點疑惑,於是就在這裡學一下寫下心得。實體地址就是絕對位址,是記憶體裡的實際位址。主要的還是邏輯位址。一開始我沒搞清楚邏輯位址的性質,就想著...
作業系統 邏輯位址轉換為實體地址
在儲存管理中分為連續儲存和非連續儲存,非連續儲存又分為分頁儲存 分段儲存和段頁式儲存。例如 已知某個分頁系統,頁面大小為1k 即1024位元組 某乙個作業有4個頁面,分別裝入到主存的第3 4 6 8塊中,求邏輯位址2100對應的實體地址。解 第一步 求該邏輯位址的頁號 2100 1024 2 整除 ...