1.内存的分配方式(连续分配)
单一连续分配:划分为系统区和用户区,内存中仅允许驻留一道程序,适合于单用户、单任务的操作系统。
固定分区分配:分区大小相同 或 分区大小不等。需要一张分区说明表来记录分区的情况。
动态分区分配:它是根据进程的实际需要,动态地为之分配内存。需要空闲分区表或者空闲分区链。
回收内存:
(1)回收区下面有空闲内存
(2)回收区上面有空闲内存
(3)回收区上下都有空闲内存
2.动态分区分配算法
首次适应算法(first fit,FF):要求空闲分区链地址递增的顺序排列,每次都从链首开始查找,找到一个满足大小的内存分区。
循环首次适应算法(next fit,NF): 每次从上次找到的空闲分区的下一个空闲分区开始查找,找到一个满足大小的空闲分区即可。
最佳适应算法(best fit,BF): 按照分区从小到大进行排列,每次找满足需求并且还是最小的空闲分区,避免大材小用。
最坏适应算法(worst fit,WF): 跳远一个最大的空闲分区,分割一块给作业使用。查找效率高,而且不容易产生碎片。
3.分页存储管理方式(离散分配)
(1) 把进程的逻辑地址空间划分为页面,将内存的物理地址空间划分为物理块或页框(frame)
(2) 地址结构:
页号p 位移量W
(3)页表(Page Table):实现从页号到物理块号的地址映射。每一个页号对应一个页表项,页表项的长度取决于有多少个
物理块(两次访存)
(4)快表(TLB):高速缓冲寄存器或联想寄存器或快表,(一次或两次访存)
(5)访问内存的有效时间:EAT = 命中率*(快表时间+访存时间)+( 1-命中率)*(快表时间+页表时间+访存时间)
(6)两级页表和多级页表:
外层页号 外层页内地址 页内地址
(7)反置页表:有多少个物理块就有多少个页表项,页表项的大小取决于进程标识符和页号
4.分段存储管理方式
(1)为什么引入?方便编程、信息共享、信息保护、动态增长、动态链接
(2)地址结构:
段号 段内地址
(3)段表:(段号)| 段长 | 基址 (访存两次)
(4)分页和分段的主要区别:
a.页是信息的物理单位;段是信息的逻辑单位
b.页的大小固定且由系统决定;段的长度不固定,由用户编写的程序来决定
c.分页的用户程序地址空间是一维的;分段的用户程序的地址空间是二维的
5.段页式存储管理方式 (访存三次)
段号S 段内页号P 页内地址W