计算机操作系统 第三章下:分页、分段存储,虚拟内存

第一章 ​​操作系统的概念-CSDN博客

第二章上、进程-CSDN博客

第二章下、调度算法-CSDN博客

第三章、内存-CSDN博客

第三章下:分页、分段存储,虚拟内存-CSDN博客

第四章、文件管理软件实现-CSDN博客

第五章、文件管理硬件实现-CSDN博客

第六章、IO管理-CSDN博客

操作系统补充 上-CSDN博客

操作系统补充 下-CSDN博客


基本本页的地址变换流程

例题

第二步越界检查很重要,别忘了

具有快表的地址变换机构  (基本地址变换机构的改进)

由于时间局部性和空间局部性。我们很有可能连续多次查询的是同一个页表项。

以此建立快表(cache)

例题:

快表找到的是内存中的绝对地址,找到地址后,还要去内存中访问地址,所以如果再快表中找到了页表项,只需要访问一次快表、一次内存(1+100);如果没找到,则需要访问一次快表、两次内存(一次找页表项,一次访问绝对地址)。题目如果没说,则默认先找快表再找内存,而不是一起找,这里和机组不同。

两级页表(页表的页表)  开始套娃

因为页表必须连续储存,单级页表非常大。本身也表示为了非连续存储而生的,可本身却只能连续存储,而且还非常大。也是有了多级页表。

 

一级页表一般称为页目录表

倒数第三行处加备注:对于二进制表示,存放2^10个页表项就对应着10位。页号有28位,因此需要3级页表

 

书上总结

基本分段存储管理   (与基本分页存储对比)

因为段是按逻辑功能划分的,所以这种方式的编程更方便,可读性更高

   

将进程按照功能划分。如 就可以表示为一个分段(把它当做绿色段),D称为段名,A称为单元号。编译程序时段名会转换成段号,单元号会转换成段内地址。每一段地址都是从0开始的;而页的地址是连续的。

段表:   

跟页表相比,多了个段长,因为每一段的长度不同。而页是相同的。

逻辑地址转物理地址

与分页最大的区别是④:和分页不一样,分段每一段的长度不同,所以需要越界检测

信息共享:不通进程的相同功能分段直接重用

保护:分页无视内容,临界非临界资源可能在一个块里,不方便保护

段页式管理方式

虽然分段可以通过“紧凑”解决碎片,但紧凑的时间代价大

   

段表的第三部分从基址变成了连接的页表,页表没变化。段号和页号是可以隐含的。一个进程有多个段,一个段对应一个页,所以一个进程对应多个页

逻辑地址转绝对地址流程

 ④各个段的长度不同,需要的页数量也不同,所以需要检查越界

虚拟内存基础知识

传统存储方式(包括连续式和非连续式)的缺点:

一次性:要运行就要将程序全部装入   

驻留性:运行完的部分仍在内存中,知道程序全运行完才移出

解决方法:虚拟内存:

 多次性,对换性对应解决了一次性和驻留性的问题

请求分页管理方式(与基本分页管理方式对比)

页表机制

缺页中断机制:

当要访问的页面不在内存时,便产生一个缺页中断。然后由缺页中断处理程序处理中断:将缺页的进程阻塞,放入阻塞队列,调页完成后再将其唤醒,放回就绪队列。如果内存中有空闲块,则为进程分配一个空闲块,将所缺页面装入该块,并修改页表中相应的页表项。如果内存中没有空闲块,则由页面置换算法选择一个页面淘汰,若该页面在内存期间被修改过,则要将其写回外存。未修改过的页面不用写回外存。

缺页中断属于内中断,故障(不记得就看前面)

请求分页管理方式的地址变换流程:

在基本分页的基础上(看上面的基本分页流程图),加了四个步骤:

页面置换算法:

  1. 最佳置换算法OPT:  需要置换的时候,将内存中未来最晚用到的内容置换

当访问2的时候,2不在内存,内存满了,需要置换。往后看,先出现了0、1最后出现7,也就是说内存中的7是未来最后用到的,所以置换7。

整个过程缺页中断发生了9次,页面置换发生了6次。注意:缺页时未必发生页面置换。若还有可用的空闲内存块,就不用进行页面置换。

缺点:

  1. 先进先出置换FIFO:    淘汰最早进入内存的页面

如图,直接就淘汰了第一个

优点:简单

缺点:贝拉迪异常--- ;性能差

  1. 最近最久未使用LRU:淘汰最近最久没使用的页面

页表项加一个访问字段记录该页上次被访问的时间

做题:需要置换时往前找,找到最久未使用的

性能好(几个算法里最接近最佳置换算法);实现困难,开销大

  1. 时钟置换算法:    置换最近未使用的页面

流程:

  1. 改进时钟置换:

简单的时钟置换算法仅考虑到一个页面最近是否被访问过。事实上,如果被淘汰的页面没有被修改过,就不需要执行I/O操作写回外存。只有被淘汰的页面被修改过时,才需要写回外存。因此,除了考虑一个页面最近有没有被访问过之外,操作系统还应考虑页面有没有被修改过。在其他条件都相同时,立优先淘汰有修改过的页面,避免I/O操作。这就是改进型的时钟置换算法的思想。设置修改位。修改位=0,表示页面没有被修改过;修改位=1,表示页面被修改过。为方便讨论,用(访问位,修改位)的形式表示各页面状态。如(1,1)表示一个页面近期被访问过,且被修改过。

第一轮找最近没访问、没修改的;第二轮找最近没访问、有修改的;第三轮找最近访问、没修改的、第四轮找最近访问、且修改的

页面分配策略

驻留集:OS给进程分配的内存块数量

 驻留集太大:那还整啥虚拟内存,全放内存里得了

 驻留集太小:频繁缺页

固定分配、可变分配:分配的内存块数量是否相同

局部置换/全局置换:进程占用的内存块只能是原本自己的其它页使用的/可以是空闲块甚至其他进程的内存块

(有点小问题别太较真)

预调页策略:根据局部性原理,调入一个页面时,它附近的页面也调入(预判附近的也会使用)。此策略一般用于进程的首次调用,即运行前调入。

请求调页策略:运行期间,发现缺页才把缺少的页调入

从何处调入页面?      (复习:对换区速度快,文件区慢)

对换区足够大时: 对换区不够大:

抖动/颠簸现象:进程运行中频繁调换同一部分内容

工作集:某段时间内,访问的页面集合

应当根据工作集设置驻留集,驻留集不能小于工作集,否则就会有颠簸现象

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值