操作系统虚拟内存调度方式(页式、段式、段页式)

一、操作系统虚拟内存调度方式

  操作系统虚拟内存调度方式有分页式、段式、段页式3种。

页式调度

  页式调度是将逻辑和物理地址空间都分成固定大小的页。主存按页顺序编号,而每个独立编址的程序空间有自己的页号顺序,通过调度辅存中程序的各页可以离散装入主存中不同的页面位置,并可据表一一对应检索。
  在页式虚拟存储系统中,虚拟空间被分成大小相等的页,称为逻辑页或虚页。主存空间也被分成同样大小的页,称为物理页或实页。相应地,虚拟地址分为两个字段:高位字段为虚页号,低位字段为页内地址。实存地址也分为两个字段:高位字段为实页号,低位字段为页内地址。同时,页的大小都取2的整数幂个字。
  通过页表可以把虚拟地址转换成物理地址。每个程序设置一张页表,在页表中,对应每一个虚页号都有一个条目,条目内容至少包含该虚页所在的主存页面地址(实页号),用它作为实存地址的高位字段;实页号与虚拟地址的页内地址相拼接,就产生完整的实存地址,据此访问主存。
  页面是主存物理空间中划分出来的等长的固定区域。分页方式的优点是页长固定,因而便于构造页表、易于管理,且不存在外碎片。但分页方式的缺点是页长与程序的逻辑大小不相关。例如,某个时刻一个子程序可能有一部分在主存中,另一部分则在辅存中。这不利于编程时的独立性,并给换入/换出处理、存储保护和存储共享等操作造成麻烦。

  • 优点:页内零头小,页表对程序员来说是透明的,地址变换快,调入操作简单;
  • 缺点:各页不是程序的独立模块,不便于实现程序和数据的保护。

段式调度

  另一种划分可寻址的存储空间的方法称为分段。段是按照程序的自然分界划分的、长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。
  在段式虚拟存储系统中,虚拟地址由段号和段内地址组成,虚拟地址到实存地址的变换通过段表来实现。每个程序设置一个段表,段表的每一个表项对应一个段,每个表项至少包括三个字段:有效位(指明该段是否已经调入主存)、段起址(该段在实存中的首地址)和段长(记录该段的实际长度)。
  段式调度是按程序的逻辑结构划分地址空间,段的长度是随意的,并且允许伸长。

  • 优点:消除了内存零头,易于实现存储保护,便于程序动态装配;
  • 缺点:调入操作复杂。

段页式调度

  段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。
  首先,实存被等分成页。在段页式虚拟存储器中,把程序按逻辑结构分段以后,再把每段按照实存的页的大小分页,程序按页进行调入和调出操作,但它又可按段实现共享和保护。因此,它可以兼有页式和段式系统的优点。它的缺点是在地址映像过程中需要多次查表,虚拟地址转换成物理地址是通过一个段表和一组页表来进行定位的。段表中的每个表目对应一个段,每个表目有一个指向该段的页表的起始地址(页号)及该段的控制保护信页表指明该段各页在主存中的位置以及是否已装入、已修改等标志。

  • 优点:段页式调度综合了段式和页式的优点。大型通用计算机系统多数采用段页式调度。
  • 缺点:增加了硬件成本,软件也较复杂。

二、虚拟存储地址变换

  虚拟存储器地址变换基本上有3种形虚拟存储器工作过程式:全联想变换、直接变换、组联想变换。
  任何逻辑空间页面能够变换到物理空间任何页面位置的方式称为全联想变换。每个逻辑空间页面只能变换到物理空间一个特定页面的方式称为直接变换组联想变换是指各组之间是直接变换,而组内各页间则是全联想变换。替换规则用来确定替换主存中哪一部分,以便腾空部分主存,存放来自辅存要调入的那部分内容。常见的替换算法有4种:
  ① 随机算法:用软件或硬件随机数产生器确定替换的页面
  ② 先进先出:先调入主存的页面先替换
  ③ 近期最少使用算法(LRU,Least Recently Used):替换最长时间不用的页面
  ④ 最优算法:替换最长时间以后才使用的页面。这是理想化的算法,只能作为衡量其他各种算法优劣的标准。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值