操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)
生活随笔
收集整理的這篇文章主要介紹了
操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2、內存管理的功能
- 功能1:內存空間的分配與回收
- 連續分配管理:
- 方法1:單一連續分配
- 方法2:固定分區分配
- 方法3:動態分區分配
- 1、什么是動態分區分配?
- 2、系統用什么樣的數據結構記錄內存使用情況?
- 3、當很多個空閑分區都能滿足需求時,應該選擇哪個分區進行分配?(首次適應、最佳適應、最壞適應、臨近適應)
- 4、如何進行分區的分配與回收操作?
- 5、如何解決動態分區分配碎片化問題?
- 非連續分配管理方式
- 功能2:內存空間的擴充
- 方法1、覆蓋技術
- 方法2、交換技術
- 方法3、虛擬存儲技術
- 功能3:地址轉化
- 方法1、絕對裝入
- 方法2、可重定位裝入
- 方法3、動態重定位
- 功能4:存儲保護
- 方法1:上下限寄存器法
- 方法2:重定位寄存器(基址寄存器)和界地址寄存器法(限長寄存器)
看幾個問題
功能1:內存空間的分配與回收
連續分配管理:
方法1:單一連續分配
方法2:固定分區分配
問題:如何對每一塊分區進行記錄呢?
方法3:動態分區分配
1、什么是動態分區分配?
一個接一個的放入。
2、系統用什么樣的數據結構記錄內存使用情況?
3、當很多個空閑分區都能滿足需求時,應該選擇哪個分區進行分配?(首次適應、最佳適應、最壞適應、臨近適應)
4、如何進行分區的分配與回收操作?
能合并就合并
5、如何解決動態分區分配碎片化問題?
采用“拼湊”技術,就是將使用的存儲空間拼接到一起,閑散的存儲空間拼接到一起。例如現在內存中有互不相鄰的三塊空間:1K,3K,5K;現在有一個7K的程序要運行,但是由于內存空間不連續而無法運行,此時就需要將三塊空間拼接。
非連續分配管理方式
見下篇:
操作系統之內存管理:3、基本分頁存儲管理
功能2:內存空間的擴充
方法1、覆蓋技術
看上圖:
假設現在B、C不能同時放入內存,D、E、F不能同時放入內存;
所以:
可以將A放入固定區;(8K)
將B、C設置一個覆蓋區用于存放B、C(只需10K)
將D、E、F設置一個覆蓋區用于存放D、E、F(只需12K)
從而從邏輯上達到內存擴充的目的,以淘汰
方法2、交換技術
方法3、虛擬存儲技術
功能3:地址轉化
方法1、絕對裝入
方法2、可重定位裝入
裝入后可執行文件中的地址都被修改為了物理地址,地址變換在裝入時一次性完成
方法3、動態重定位
在裝入后通過重定位寄存器和邏輯地址計算數據存放地址,即使程序移動后,也可以通過再次計算得到新的物理地址
功能4:存儲保護
方法1:上下限寄存器法
用物理地址設置倆個上下界寄存器,CPU訪問存儲單元時判斷是否在上下界寄存器地址范圍內
方法2:重定位寄存器(基址寄存器)和界地址寄存器法(限長寄存器)
重定位寄存器:存放起始物理地址
界地址寄存器:存放最大邏輯地址
此時,CPU想要訪問邏輯地址80,首先要與界地址寄存器比較判斷是否越界,未越界則訪問物理地址:80+100=180.
總結
以上是生活随笔為你收集整理的操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件操作:fread()和fwrite(
- 下一篇: 操作系统之进程管理:9、进程互斥的硬件实