日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OS存储器管理(一)

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OS存储器管理(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

存儲器的層次:


分為寄存器、主存(內存)輔存(外存)三個層次。

?

主存高速緩沖存儲器、主存儲器、磁盤緩沖存儲器,

???????? 主存又稱為可執行存儲器;

輔存固定磁盤存儲器、可移動的外部存儲器;

???????? 其可長期保存數據,但不能被處理器直接訪問。

?

此處針對的是在OS層面上對主存(內存)的管理。

?

內(主)存儲器管理的主要功能:?邏輯地址到物理地址的轉換 ? ? ②?內存(主存)空間的分配與回收 ? ? ③?內存信息(數據)的共享與保護 ? ? ④?內存的邏輯擴充(虛擬存儲器的實現)


一個用戶程序在運行之前需要經歷若干步驟,為了執行,程序應被調入內存并放在進程內: 在這些步驟中,地址可能有不同的表示形式: 符號(源程序中),可重定位的地址(目標模塊),絕對地址(內存映像) 邏輯地址:目標代碼的相對編址。由CPU生成,也稱為虛擬地址 物理地址:內存存儲單元的編址,內存單元的實際地址 邏輯地址空間:目標代碼用邏輯地址編址對應的區域 內存存儲空間:內存若干存儲單元用物理地址編址對應的區域 重定位:邏輯地址轉換為物理地址的操作(過程) 接下來,將指令與數據捆綁到內存地址,可以在以下步驟的任何一步中執行: 編譯時MS-DOS的COM格式程序 加載時編譯器生成可重定位代碼 執行時進程在執行時可以從一個內存段移到另一內存段,那么捆綁必須延遲到執行時才進行。 運行時從虛擬地址映射到物理地址的硬件設備稱為內存管理單元(MMU) 用戶進程所生成的地址在送交內存之前,都將加上重定位寄存器的值。 用戶程序處理的是邏輯地址,它不會看到真實的物理地址。 原理圖如下: ? 例如: 重定位的方式: 靜態重定位:目標代碼裝入內存時,一次性進行邏輯地址到物理地址的地址轉換。 動態重定位:目標代碼裝入內存時,先不進行地址轉換(即原代碼裝入),在執行時,再實施地址轉換。 內存分配的方式連續分配非連續分配 內存通常分為兩個區域: 一個用于駐留操作系統,常與中斷向量一起放在低內存 另一個用于用戶進程,常放在高內存。 一、連續分配 四種方式: ①單一連續區分配

②固定分區分配

③可變(動態)分區分配

④可重定位分區分配

?

?

①單分區分配方法(Single-partition allocation

?

重定位寄存器方案用來保護用戶進程之間,用戶進程與操作系統之間不會相互修改代碼與數據

重定位寄存器包含了最小的物理地址;界限寄存器包含了邏輯地址的范圍,每個邏輯地址必須小于界限寄存器

?

②固定分區分配 * 算法思想 內存可用區劃分成若干個大小固定的存區,每個存區分別裝入一道作業的代碼(數據)。 * 算法實現 建立分區說明表,記錄各分區大小、地址及分配情況 例如:

分區號

分區大小

起始地址

狀態

1

12k

20k

已分配

2

32k

32k

已分配

3

64k

64k

已分配

4

128k

128k

空閑

5

???

?

?

?

?

?

?

?

?

分配:查分區說明表,找到一個足夠大的空閑分區分配之;

回收:將回收分區對應的分區說明表狀態改為“空閑”

?

優點:內存可同時裝入多道作業代碼,算法實現簡單;?

缺點:存在浪費(分區一次性全部分配出去);會產生內部碎片。

?

③動態存儲分配問題

?

算法思想:事先不劃分分區,待作業需要分配內存時,再按需分配劃分分區(分區的大小及個數不固定)。

?

數據結構:

空閑分區表或空閑分區鏈表 ?----> ??記錄空閑分區的大小、地址等

?

?

空閑分區鏈表狀況:

?

?

?

分配:查空閑分區鏈表,找到第一個足夠大的分區,將其一分為二分配之;

分配策略(算法)首次適應算法,循環首次適應算法,最佳適應算法,最差適應算法

?

回收:先將回收分區與相鄰空閑分區合并再修改空閑分區鏈表。

回收算法前鄰接合并,后鄰接合并,前、后鄰接合并,不鄰接處理

?

* 優、缺點

? ? ?按需分配,可解決浪費問題;
? ? ?
分配算法復雜,會產生外部碎片;

? ? ?鄰接合并系統開銷大。

?

* 碎片問題

碎片:可變分區分配過程中形成的若干個非常小的無法再利用的小分區,形成外部碎片

?

?

碎片分為外部碎片內部碎片。

?

處理碎片的方法:

1.緊縮(compaction,拼接):用來降低外部碎片移動內存內容,以便所有空閑空間合并成一整塊。

如果重定位是動態的,是在運行時進行的,那么就能采用緊縮

2.另一種可能解決外部碎片問題的方法是允許物理地址空間為非連續,這樣只要有物理內存就可為進程分配:分頁或分段

?

?

④可重定位分區分配

?

* 算法思想

???在可變分區分配算法的基礎上,采用動態重定位方式裝入程序(數據)。當無足夠大的分區供分配時,若總的空閑存儲容量夠用,則將各分區中的內容向內存一端移動(緊湊),使另一端形成一個大的空閑分區,然后再分配。

?

例:前例若要為作業10分配120k的存儲空間,因無足夠大分區(總空閑容量290k),則先進行合并處理:

?

?

?

內存的離散分配方式見下篇。

?

轉載于:https://www.cnblogs.com/z941030/p/5154483.html

總結

以上是生活随笔為你收集整理的OS存储器管理(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。