操作系统基础之存储管理

前言:

操作系统的作用主要有三个:

一是方便性,一个未配置操作系统的计算机是极难使用的。

二是有效性,CPU的高速和外部设备的相对低速是计算机硬件无法逾越的基本矛盾,如果没有操作系统的管理,CPU和外部设备就会经常处于空闲状态。

三是提供应用软件的运行环境,操作系统位于应用软件和硬件之间,应用软件不能脱离操作系统而独立运行。

操作系统的是负责管理计算机的软硬件资源、提高计算机资源的使用效率、方便用户使用的程序集合。

-----------------------------以上源自百度知道

直观感受:有了操作系统,计算机可以并发执行多任务,才显得’智能‘和’易用‘,提升了人与计算机交互的体验。而没有操作系统,计算机单个功能实现,只能做大号计算器一样的工作

以北大教授传授之课程为基础,学习操作系统

-------------------------------------------------------------------------------------------------------------------------------- 

目录:

一、虚拟存储技术

二、地址转换过程及TLB引入

三、页错误(页故障) 

四、置换算法

五、置换算法之工作集算法 

---------------------------------------------------------------------------------------------------------------------------------

一、虚拟存储技术 

 

 

 

 虚存空间受到计算机寻址能力的限制,比如32位计算机寻址4GB(2的32次方Byte)

 

 存储保护:确保进程有独立的地址空间,防止越权访问(有基地址寄存器和界限寄存器,判断操作的地址在范围之内,否则会陷入操作系统)

                   确保进程操作合法(比如读操作不能写)

 基本思想:根据需要动态装入页面

                   核心:资源转换技术

二、页表及页表项的设计

 

 注意:页表项通常是硬件设计的

 关于页表:页表项是存储数据的最小单位(32位为4B),页面大小是已经规定好的(4K),

                   一个进程空间在32位系统中,最多有2的20次方张的页表。页表页对页表进行寻址

  对于64位:页表数等于2的64次方除以4K(2的12次方),等于2的52次方(32000T)

数字太大,由此引入了页目录的概念 

----------------------------------------------------------------------------------------------------------------------------- 

 虚拟地址内容:页目录偏移,页表偏移,页内偏移。

    页目录地址是页目录表的首地址,通过页目录偏移找到页表地址,页表偏移找到页框号(物理地址1),页内偏移 (物理地址2),物理地址=物理地址1+物理地址2。

       寻址说明:页目录偏移和页表偏移寻址2的10次方个地址,页内偏移寻址2的12次方个地址。

/******************************以下内容不正确,可以做思考

关于32位寻址空间和寻址32位数据个数说明:

1个32位的地址,其寻址空间能力4GB,寻址个数2的27次方 。原因是每次需要32位,即4个字节长度的数字来组成一个新的32位数,所以寻址个数2的32次方除以2的5次方,等于2的27次方。

引申:32位数据每次向上拓展一个维度,建立一个32位长度的数组,寻址个数乘以2的27次方。

下面的二级页表可以表示4G的虚拟地址空间,是因为它有32位的缘故  ***************************/

 --------------------------------------------------------------------------------------------------------------------------------

 同理,CORE I7结构寻址空间2的48次方,因为它有48位

 实现过程:一级一级往下传递地址,最终取得一个地址(36位),得到页框号。加上12位页内地址偏移,共有48位情况。

 

---------------------------------------------------------------------------------------------------------------------------------

前面使用页表项寻址,有一个问题,页表数目太多

 说明:下面说每个进程一张页表,上面每个进程对应一张页目录。

 

 

 --------------------------------------------------------------------------------------------------------------------------------

 二、地址转换过程及TLB引入

 ------如果上一节没有很清楚,从这里开始看也可

 地址转换过程:虚拟地址→查页表→物理地址

 

 地址转换由内存管理单元MMU完成 

 

 地址转换的完整映射(上图补充),

同时它是一个二级页表结构,页目录→页表→页框号→物理地址

 

 --------------------------------------------------------------------------------------------------------------------------------

CPU指令速度(快),内存指令访问速度(慢),二者不匹配 ,引入快表

 

快表是什么?高速缓存(Cache)中的一个缓冲区(数据结构),

 

工作过程:地址转换时CPU首先在快表中查找页框号,如果找到(TLB hit),则直接拼接成物理地址。如果没有找到(TLB miss),再到页表中去查找页框号,------图中是单级页表 

Page Fault:如果没有在页表中,则进入存储区把相关内容调入内存

 

 -------------------------------------------------------------------------------------------------------------------

  三、页错误(页故障)

 

以缺页异常为例说明解决方法: 

当发生缺页异常时,操作系统将页调入内存,而调入所缺页的同时把相关页框号也调入内存---windows解决方案

 

 --------------------------------------------------------------------------------------------------------------------------------

 驻留集:内存中的一块区域,内存中给进程留出的页框部分

 给进程分配多少页框合适?下图中w处

 

 

置换范围:只在在缺页进程的驻留集中选择,称为局部置换策略

                  在内存中所有未锁定的页框中选择,包括了缺页进程或者其他进程的驻留集中选择,称为全局置换策略。 

 

 置换策略

基于过去的行为预测将来的行为来决定置换策略 

约束条件:不能置换被锁定的页框  

----------------------------------------------------------------------------------------------------------------------------- 

页框锁定 ------做法:给每一个页框增加一个锁定位。

部分代码或者数据,其内存页面,阻止被置换出内存 ,避免产生交换过程带来的不确定延迟。

 

------------------------------------------------------------------------------------------------------------------------------- 

清除策略:

起因:缺页异常时,系统中有大量的空闲页框,比起缺页时再去置换要好。所以在系统中保存一定数目的空闲页框是比置换更好的策略。系统设计了一个分页守护进程来做这件事,定期检查内存状态,如果空闲页框过少,则开始置换页框。并且分页守护进程保证写进空闲页框,又写回磁盘时是干净的。

 页缓冲技术:

 被置换出的页面暂时不丢弃,放进两个表中---空闲页链表和修改页链表,一旦被置换回的页又重新启用,则可以迅速加入进程

-------------------------------------------------------------------------------------------------------------------------------- 

 四、置换算法

 1.最佳页面置换算法

         ------作为其他算法的参照来理解

 2.先进先出算法(FIFO)

         ------缺点:如果超市中有些驻留时间最长的页,是常用页,则不应该被置换,而简单由驻留时间长短置换就不合适了。   

 

 --------------------------------------------------------------------------------------------------------------------------------

 3.第二次机会算法(SCR)

        ------访问位检查

 

4.时钟算法 :第二次机会算法的升级,use=1保留,use=0时置换

 

-------------------------------------------------------------------------------------------------------------------------------- 

 5.最近未使用算法(NRU)

------设置两个位,标识出访问位,和修改位(是否被访问,是否被修改),并以此分出4类页。

        从编号最小的非空类(数字越小被置换的优先级越高,0类最高)中选择一页置换

 

 6.时钟算法实现

------最近未使用算法的时钟算法实现,加上了指针当前位置开始扫描的过程。

------扫描页框缓冲区,

如果找到第0类的第一个页框进行置换;如果没找到第0类,则找第1类的第一个页框进行置换;

如果第0类和第1类都没有,则重新扫描并把使用位(访问位)置位0,那么第3类就成了第0类,如果还找不到,说明只有第4类,当重复进行第2步,必然会找到了。

 

 --------------------------------------------------------------------------------------------------------------------------------

 7.最近最少使用算法(LRU)

-----------------操作系统中最常见使用算法之一 ,因其最接近于最佳页面置换算法

----------------问题:有一个开销比较大的过程,需要时间戳或着维护一个访问页的栈 

LRU算法的一种硬件实现:   ------看后面的例子就明白了

方法如下:数字0,那么第0行都设置为1,第0列设置为0。以此类推,Page 0。

图中有4个页面,于是用4*4的矩阵。到最后一个矩阵后,把数值最小的那一行置换掉。本例中经过一个时间段之后(10张表后),被置换掉的是Page d,Page e,Page f其中之一。

开销大就在这里,如果有100张页,就需要用100*100的矩阵

 

 8.最不经常使用算法(NFU)

实现原理:给每个页面用一个软件计数器计数,当发生缺页中断时,选择计数器值最小一页置换

算法7用矩阵表示页面框出现频率的大小,

算法8用计数器计算频率,频率小的页框置换掉

 

 9.老化算法(AGING)

------老化算法是LRU算法的升级,也可以看作NFU算法计数版本的升级,tick作为一个时间段,分作tick 0,tick1到tick4。每个时间段根据是否被访问记作0或者1,过了一定时间段之后,本例中经过了5个时间段,看哪个页面的值小,则置换哪个页面。

 

 --------------------------------------------------------------------------------------------------------------------------------

页面置换算法举例 

 

 

 BELADY现象:

采用FIFO页面置换算法时,分配给进程的物理页面数增加时,缺页次数反而增加。

 --------------------------------------------------------------------------------------------------------------------------------

 五、置换算法之工作集算法 

影响缺页次数的因素 :

页面本身越大,分配给进程的页框数量越多,缺页次数下降。

 页面尺寸问题:分页大小4k或者4M,有的操作系统采用了多种页面大小可选

 考虑情况:页面越大,设计越复杂,碎片越多; 

                  页面越小,页表项少,而页表框数目会越多 

                  辅存的物理特性:比如簇大小,磁盘大小,也是考虑因素。 

        

 程序编制方法对缺页次数的影响:

 如下图所示,按行遍历和按列遍历,次数不一样。组织页面的时候,一行代表一个页面

那么按行遍历页框,共128次;按列遍历页框,共128*128次 

 分配给进程的页框数与缺页率的关系   ------寻求一个最佳的比例

页框数越多,缺页率越小,但占内存越多,可以把页框全部进入内存但不符合驻留集的初衷

 

 --------------------------------------------------------------------------------------------------------------------------------

 工作集模型

 ------活跃页面概念

 

 

 工作集算法

 

各种算法小结 

其中NRU、CLOCK、NFU、Aging、Working set算法是常见所用的 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jllws1

你的鼓励是我创作的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值