【操作系统】连续内存分配策略
最為簡單的內存分配方法之一就是將內存分為多個固定大小的分區。每個分區只能容納一個進程。
為此,操作系統有一個表用于記錄哪些內存可用和哪些內存已用。
一開始,所有內存都可用于用戶進程,因此能夠作為一個大塊可用內存,稱為孔。通常,一組不同大小的孔分散在內存中。
當有新進程需要內存時,為該進程查找足夠大的孔。
如果找到,可以為該進程分配所需的內存,未分配的可以下次再用。
如果孔太大,那么就分為兩塊:一塊分配給新進程,另一塊還回到孔集合。當進程終止時,它將釋放其內存,該內存將還給孔集合。
如果新孔與其它孔相鄰,那么將這些孔合并成大孔。這時,系統可以檢查是否有進程在等內存空間,新合并的內存空間是否滿足等待進程。
從一組可用孔中選擇一個空閑孔的最為常用方法有:
- 首次適應(firsr-fit):分配第一個足夠大的孔。
- 最佳適應(best-fit):分配最小的足夠孔。
- 最差適應(worst-fit):分配最大的孔。
模擬結果顯示首次適應核最好適應在執行時間和利用空間方面都好于最差適應。首次適應和最好適應在利用空間方面難分伯仲,但是首次適應要快些。
首次適應算法的統計說明,不管是用什么優化,都會有1/3的內存稱為外部碎片而不能使用,這一特性稱為50%規則。
這些算法都有外部碎片。隨著進程裝入和移出內存,自由內存空間被分為小片段。當所有總的內存之和可以滿足請求,但并不連續時,就出現了外部碎片問題。
通常將內存以固定大小的塊為單元來分配。采用這種方案,進程所分配的內存可能比所需要的要大。這兩個數字之差稱為內部碎片,這部分內存在分區內,而又不能用。
一種解決外部碎片問題的方法是緊縮。緊縮的目的是移動內存內容,以便所有空閑空間合并成一整塊。緊縮是有一定條件的,要求重定位是動態的。
另一種可能解決外部碎片問題的方法是允許物理地址空間為非連續,這樣只要有物理內存就可為進程分配。
總結
以上是生活随笔為你收集整理的【操作系统】连续内存分配策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:刘强强(1992-),男,贵州大学
- 下一篇: 【软件测试】系统测试