1. 程式人生 > >操作系統Day1地址空間與地址生成

操作系統Day1地址空間與地址生成

link 重復 重置 無法 有一個 重要 linker 偏移 分頁

1.地址空間
分成(1)物理地址空間 (2)邏輯地址空間
二者之間的關系:
*邏輯地址空間的生成:程序——》匯編--》linker——》loader
*物理地址的生成:內存的邏輯地址空間會有一個到物理地址的映射,cpu的mmu表示了一個邏輯地址對應的物理地址,操作系統最重要的功能使在其中做了一個對應地址的安全檢測。

**連續內存的分配
內存碎片問題 (1)外部碎片 (2)內部碎片
內存分配算法:(1)首次適配 (2)最優適配 (3)最差適配
(1)首次適配:按地址排序的空間列表,容易產生外部碎片
(2)最優適配算法:選擇差值最小的空閑塊,容易產生很多沒使用的微小碎片。
(3) 最差分配算法,選擇差值最大的空閑塊,破碎了大塊的空閑塊以至於無法被分配

**進一步處理使得內存碎片消失的辦法
(1)壓縮碎片整理:重置所有程序以合並空塊,要求所有的程序是動態可以重置的,缺陷:重復拷貝,內存開銷比較大
(2)交換式碎片整理:搶占等待的程序


**非連續物理內存的分配
(1)分段
(2)分頁
(3)頁表
連續內存分配的缺點:
(1)內存利用率低
(2)有外碎片和內碎片對的問題
非連續內存的分配優點:
(1)允許共享代碼和數據
(2)支持動態鏈接和動態加載
缺點:從虛擬內存到物理地址之間轉換的開銷比較大

分段:(1)分段的尋址 (2)如何實現尋址
分段:分割成堆、棧、程序數據、庫
分段尋址對方案: 段號+偏移(cpu MMU進行尋址)

操作系統Day1地址空間與地址生成