操作系统——存储管理
结合王道ppt,简单介绍了操作系统的存储管理。
一、存储管理的基本概念概念
1.逻辑地址与物理地址
- 逻辑地址:相对于程序起始位置的偏移量,与实际内存没有联系
- 物理地址(绝对地址):CPU执行指令或者访问数据时面向主存地址
- 地址映射(重定位):逻辑地址修订为物理地址的过程(PA=VA+BA)
2.地址转换
地址转换又叫重定位,把逻辑地址转换为物理地址,有下面两种方式:
- 静态重定位 (装入时转换,不能移动)
- 动态重定位 (运行时转换)
二、连续分配管理方式
连续内存分配:一次性将程序装入连续的内存空间,分为以下三种:
1.单一连续分配
内存被分为系统区和用户区,内存中只能有一道用户程序,无外部碎片。
缺点:有内部碎片(分给进程的内存区域,有部分没用上),只能用在单任务操作系统。
2.固定分区分配
分区大小可以相等、也可以不相等。需要一个分区说明表,说明分区的占用情况以及大小。
3.可变分区分配
两种方法记录内存的使用情况:
动态分区分配算法(四种):
首次适应算法
分区按地址递增排列,比较好
最佳适应算法
分区按分区大小递增排列,每分配一个,要调整队列
最坏适应算法
分区按分区大小递减排序排列,每分配一个,要调整队列
邻近适应算法
分区按地址递增排列,比起首次适应算法,多加了从上次的索引位置开始往下查找
分区分配算法总结
例题
了解上述算法的思想以及分配方式即可解决此题。
分区的回收
把相邻的分区块合并在一块,可以多个合并在一起。
总结
三、非连续分配管理方式
1.基本分页存储管理
基本原理:程序(进程)分成大小相等的页(页面),内存分成和页相等的物理块(内存块、页框),以页为单位进行内存分配。
存储页面的数据结构:页表。
题目一般会省略内存块大小等于页面大小,所以要记好。
页号是可以隐藏的
实现地址的转换
小结论
逻辑地址为:页号+页内偏移量(页面大小为2的k次幂的话,后k位是页内偏移量)
物理地址为:内存块号+页内偏移量(根据页号查页表,将查出来的内容转化为二进制拼接即可)
逻辑地址结构
- 页面大小<–>页内偏移量位数–>逻辑地址的结构
- 给出页面大小就要知道内存块大小和其相等。
总结
例题
快表
地址变换中,内存访问时间T=2内存访问时间(没有使用快表)
快表:经常访问页表项的集合,存放在Cache,命中率p
则:平均内存访问时间T = P(访问快表的时间+访问内存的时间)+
(1-P)(访问快表的时间+2内存访问时间)
2.基本分段存储管理方式
分段相当于分页,段表相当于页表。
分段
段表
地址变换
对比
总结
四、内存空间的扩充—虚拟内存
最大值由地址总线的宽度决定,实际值受内存和外存大小的限制
1.传统存储管理的缺点
2.局部性原理
3.虚拟内存的定义和特征
4.虚拟内存的实现
5.总结
五、请求分页存储管理
1.实现机制
2.缺页中断机构
在请求分页系统中,每当要访问的页面不存在时,便产生一个缺页中断。
3.地址变换
4.总结
六、页面置换算法
页面的换入、换出需要磁盘I/O,会有较大的开销,因此好的页面置换算法应该追求更少的缺页率。
1.最佳置换算法(OPT)
OPTimal replacement
每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面。操作系统无法提前预判页面访问序列。因此,最佳置换算法是无法实现的。
2.先进先出置换算法(FIFO)
First In First Out
每次选择淘汰的页面是最早进入内存的页面,置换时,去除一个尾部的结点,在头处加上新添加的结点。
会产生Belady异常,算法性能比较差
3.最近最久未使用置换算法(LRU)
Least Recently Used,每次淘汰的页面是最近最久未使用的页面
4.时钟置换算法(CLOCK || NRU)
最近未用算法:Not Recently Used
页面构成一个循环队列,每个页面设置一个访问位,访问位为1,表示最近访问过,如果为0表示最近未被访问,可以替换该页面,最坏的一种情况,第一轮全是1,然后逐个变0,然后第二轮一定能替换掉某个页面。
5.改进型时钟置换算法(CLOCK)
6.总结
7.例题
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)