操作系统——虚拟存储器

虚拟存储器

1. 虚拟存储器的基本概念:

a. 局部性原理:在一段时间内,程序的执行仅局限于某个部分;相应地,它所访问的存储空间也局限于某个区域内
       ~~~~~~        i. 局部性表现为时间局部性和空间局部性

b. 虚拟存储器的定义:根据局部性原理,一个作业在运行之前,没有必要把全部作业装入内存,而仅将那些当前要运行的那部分页面或段,先装入内存便可启动运行,其余部分暂时留在磁盘上
       ~~~~~~        i. 虚拟存储器是具有请求调入功能和置换功能,能仅把作业的一部分装入内存便可运行作业的存储器系统,它能从逻辑上对内存容量进行扩充的一种虚拟的存储器系统

c. 虚拟存储器实现方式:
       ~~~~~~        i. 请求分页系统:在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统
       ~~~~~~        ii. 请求分段系统:在分段系统的基础上,增加了请求调段和分段置换功能所形成的段式虚拟存储系统
       ~~~~~~        iii. 请求段页式系统:在段页式系统的基础上,增加了请求调页和页面置换功能所形成的段页式虚拟存储系统

d. 虚拟存储器的特征:
       ~~~~~~        i. 多次性:一个作业被分成多次调入内存运行,即在作业运行时没有必要将其全部装入,只须将当前要运行的那部分程序和数据装入内存即可。多次性是虚拟存储器最重要的特征
       ~~~~~~        ii. 对换性:指允许在作业的运行过程中在内存和外存的对换区之间换进、换出
       ~~~~~~        iii. 虚拟性:指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量
       ~~~~~~       

2. 请求分页存储管理方式:

a. 请求分页中的硬件支持:在纯分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储系统,它是目前常用的一种虚拟存储器的方式
       ~~~~~~        i. 请求分页的页表机制:在纯分页的页表机制上形成的,由于只将应用程序的一部分调入内存,还有一部分仍在磁盘上,故需在页表中再增加若干项,供程序(数据)在换进、换出时参考。在请求分页系统中的每个页表项如图所示
在这里插入图片描述
       ~~~~~~        ii. 缺页中断机构:在请求分页系统中,每当所要访问的页面不在内存时,便要产生一缺页中断,请求OS将所缺页调入内存。与一般中断的主要区别在于:
       ~~~~~~               ~~~~~~        1) 缺页中断在指令执行期间产生和处理中断信号,而一般中断在一条指令执行完后检查和处理中断信号
       ~~~~~~               ~~~~~~        2) 缺页中断返回到该指令的开始重新执行该指令,而一般中断返回到该指令的下一条指令执行
       ~~~~~~               ~~~~~~        3) 一条指令在执行期间,可能产生多次缺页中断
       ~~~~~~        iii. 地址变换机构:请求分页系统中的地址变换机构,是在分页系统的地址变换机构的基础上,再为实现虚拟存储器而增加了某些功能所形成的,如产生和处理缺页中断,以及从内存中换出一页的功能等
在这里插入图片描述

b. 页面分配:
       ~~~~~~        i. 最少物理块数:在为进程分配物理块时,首先应该考虑的问题是:能保证进程能正常运行所需的最少物理块数(称为最小物理块数)。若系统为某进程所分配的物理块数少于此值时,进程将无法运行,这取决于指令的格式、功能和寻址方式
       ~~~~~~        ii. 页面的分配和置换策略:在请求分页系统中,可采取两种分配策略——固定和可变分配策略。在进行置换时,也可采取两种策略——全局置换和局部置换。于是可组合成以下三种策略
       ~~~~~~               ~~~~~~        1) 固定分配局部置换策略:
       ~~~~~~               ~~~~~~        2) 可变分配全局置换策略:
       ~~~~~~               ~~~~~~        3) 可变分配局部置换:
       ~~~~~~        iii. 页面分配算法:
       ~~~~~~               ~~~~~~        1) 平均分配算法:
       ~~~~~~               ~~~~~~        2) 按比例分配算法:根据进程的大小按比例分配物理块
       ~~~~~~               ~~~~~~        3) 考虑优先权的分配算法:把内存中可供分配的所有物理块分成两部分:一部分按比例分配给各进程;另一部分则根据各进程的优先权,适当地增加其相应份额后,分配给各进程

c. 页面调入策略:
       ~~~~~~        i. 调入页面的时机:
       ~~~~~~               ~~~~~~        1) 预调页策略是一种主动的缺页调入策略,即将那些预计在不久的将来会被访问的程序或数据所在的页面,预先调入内存;这种策略主要用于进程的首次调入。
       ~~~~~~               ~~~~~~        2) 请求调页策略是指当进程在运行中发生缺页时,就立即提出请求,由系统将缺页调入内存;这种策略在调页时须花费较大的系统开销,如需频繁启动磁盘I/O。
       ~~~~~~        ii. 从何处调入页面:虚拟存储系统中,外存(硬盘)常常被分成两部分;文件区(用于存放文件)和对换区(用于存放对换页面)。通常,对换区的磁盘I/O速度比文件区要高
       ~~~~~~               ~~~~~~        1) 对换区足够大,全部从对换区调入
       ~~~~~~               ~~~~~~        2) 对换区不足够大,未修改页面从文件区调入,修改的页面从对换区调入
       ~~~~~~               ~~~~~~        3) 在UNIX系统中,对于从未运行过的页面,都应从硬盘文件区调入;对于曾经运行过而又被换出的页面,可以从对换区调入;对于共享页面,该页面可能已由其它进程调入内存,此时就无须再从对换区调入

d. 页面置换算法:置换算法的好坏将直接影响系统的性能,不适当的算法可能会导致进程发生“抖动”
       ~~~~~~        i. 最佳置换算法:一种理想化的算法,性能最好,但在实际上难于实现:选择那些永不使用的,或者是在最长时间内不再被访问的页面置换出去
       ~~~~~~        ii. 先进先出置换算法:总是淘汰最先进入内存的页面
       ~~~~~~        iii. 最近最久未使用置换算法:选择最近最久未使用的页面予以淘汰
       ~~~~~~        iv. Clock置换算法(最近未用算法NRU):为每个页面设置一位访问位,将内存中的所有页面都通过链接指针链成一个循环队列
       ~~~~~~               ~~~~~~        1) 当某页被访问时,其访问位置1
       ~~~~~~               ~~~~~~        2) 在选择一页淘汰时,就检查其访问位
       ~~~~~~               ~~~~~~               ~~~~~~        a) 如果是0,则该页被换出
       ~~~~~~               ~~~~~~               ~~~~~~        b) 如果是1,则重新置为0,暂不换出该页,在循环队列中检查下一个页面
       ~~~~~~        v. LFU最少使用置换算法:选择最近时期使用最少的页面作为淘汰页
       ~~~~~~               ~~~~~~        1) 需要为内存中每个页面设置一个移位寄存器来记录页面被访问的频率
       ~~~~~~               ~~~~~~        2) 每次访问某页时,将该页对应的移位寄存器最高位置成1,每个一定时间右移一位
       ~~~~~~               ~~~~~~        3) 移位寄存器值最小的就是使用最少的页面

e. 页面缓冲算法:在页面分配时,采用可变分配和局部置换的方式
       ~~~~~~       

3. 请求分段存储管理方式:

a. 请求分段中的硬件支持:
       ~~~~~~        i. 段表机制:在请求分段式管理中在段表中增加若干项,以供程序在调进、调出时参考。请求分段的段表项如下:
在这里插入图片描述
       ~~~~~~        ii. 缺段中断机构:在请求分段系统中,采用的是请求调段策略
       ~~~~~~               ~~~~~~        1) 当进程所要访问的段未调入内存时,便由缺段中断机构产生一缺段中断信号,由缺断中断处理程序将所需的段调入内存
在这里插入图片描述
       ~~~~~~        iii. 地址变换机构:请求分段系统中的地址变换机构,是在分段系统地址变换机构的基础上形成的,在地址变换机制中又增加了某些功能,如缺段中断的请求及其处理
       ~~~~~~        iv. 段的动态链接:在一个程序运行开始时,只将主程序装配好并调入主存,其它各段的装配是在主程序段运行过程中逐步进行的,每当需要调用一个新段时,再将该段装配好,并与主程序段连接

b. 分段共享与保护:分段存储管理方式实现分段的共享和保护只须在每个进程的段表中,用相应的表项来指向共享段在内存中的起始地址。为了实现分段共享,应配置相应的共享段表,用来对共享段进行操作
       ~~~~~~        i. 共享段表:记录每一个共享段的段号和段长、内存始址、存在位等信息,并记录共享此分段的每个进程的情况
在这里插入图片描述
       ~~~~~~               ~~~~~~        1) 共享进程计数器COUNT:记录有多少个进程需要共享该分段
       ~~~~~~               ~~~~~~        2) 存取控制字段:说明不同的进程对该分段不同的存取权限
       ~~~~~~               ~~~~~~        3) 段号:对于同一个共享段,不同的进程可以使用不同的段号去共享该段

c. 共享段的分配和回收:
       ~~~~~~        i. 分配:
       ~~~~~~               ~~~~~~        1) 首次请求:分配空闲分区,调入内存,初始化进程段表,在共享段表中增加一表项,初始化数据, count=1,在共享段表中添加调用进程信息
       ~~~~~~               ~~~~~~        2) 非首次请求, count+1,在共享段表中添加调用进程信息
       ~~~~~~        ii. 回收:count=count-1,取消调用进程信息,若count=0,则在共享段表中取消该共享段表项,同时释放它所占内存

d. 分段保护:
       ~~~~~~        i. 越界检查:
       ~~~~~~        ii. 存取控制检查:段表中有“存取控制”字段规定访问权限:只读、只执行、读写
       ~~~~~~        iii. 环保护机构:低编号环具有高优先访问权。一般OS内核处于0环,系统服务和某些重要实用程序占据中间环,而一般程序处于外环。规则:
       ~~~~~~               ~~~~~~        1) 一个程序可以访问处于相同环或较低特权环中的数据
       ~~~~~~               ~~~~~~        2) 一个程序可以调用处于相同环或较高特权环中的服务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PandaThug

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值