291-虚拟内存的硬件和控制结构

虚拟内存的硬件和控制结构

通过对简单分页、简单分段与固定分区、动态分区等方式进行比较,一方面可以了解二者的区别,另一方面可以看到在内存管理方面具有根本突破的基础所在。
分页和分段的两个特点是取得这种突破的关键:
1、进程中的所有存储器访问都是逻辑地址,这些逻辑地址在运行时动态地转换成物理地址。这意味着一个进程可以被换入或换出内存,使得进程可以在执行过程中的不同时刻占据内存中的不同区域。
2 、一个进程可以划分成许多块(页和段),在执行过程中,这些块不需要连续地位于内存中。动态运行时地址转换和页表或段表的使用使这一点成为可能。
如果具备前面的两个特点,那么在进程的执行过程中,该进程不需要所有页或所有段都在内存中。如果内存中保存着要取的下一条指令的所在块(段或页)以及将要访问的下一个数据单元的所在块,那么执行至少可以暂时继续下去。

现在考虑如何实现这一点。用术语 “块”来表示页或段,取决于是采用分页还是分段机制。假设需要把一个新进程放入内存时,操作系统仅读取包含程序开始处的一个或几个块。进程执行中的任何时候都在内存中的部分被定义成进程的常驻集
当进程执行时,只要所有的存储器访问都是要访问常驻集中的单元,执行就可以顺利进行;通过使用段或者页表,处理器总是可以确定是否如此。
如果处理器需要访问一个不在内存中的逻辑地址,则产生一个中断,说明产生了内存访问故障操作系统把被中断的进程置于阻塞状态,并取得控制为了能继续执行这个进程,操作系统要把包含引发访问故障的逻辑地址的进程块取进内存。为此,操作系统产生一个磁盘I/O读请求。产生I/O请求后,在执行磁盘I/O期间,操作系统可以调度另一个进程运行。一旦需要的块被取进内存,则产生一个I/O中断,控制被交回操作系统,而操作系统把由于缺少该块而被阻塞的进程置回就绪态。

进程在执行过程中仅仅因为没有装入所有需要的进程块而不得不被中断,这种方法的效率问题很让人怀疑。现在暂且不考虑保证效率的问题,而先考虑新策略的实现问题。有两种实现方法可以提高系统的利用率,其中第二种的效果比第一种更令人吃惊。这两种实现方法分别是:
1、在内存中保留多个进程。由于对任何特定的进程都仅仅装入它的某些块,因此就有足够的空间来放置更多的进程。这样,在任何时刻这些进程中都能至少有一个处于就绪状态,于是处理器得到了更有效的利用。
2、进程可以比内存的全部空间还大。程序占用的内存空间的大小是程序设计中最大的限制之一。如果没有这种方案,程序员必须清楚地知道有多少内存空间可用。如果编写的程序太大,程序员就必须设计出能把程序分成块的方法,这些块可以按某种覆盖策略分别加载。通过基于分页或分段的虚拟内存,这项工作可以由操作系统和硬件完成。对程序员而言,他所处理的是一个巨大的内存,大小与磁盘存储器有关。操作系统在需要时,自动把进程块装入内存。

由于一个进程只能在内存中执行,因此这个存储器称作实存储器,简称实存但是程序员或用户感觉到的是一个更大的内存,通常它被分配在磁盘上,这称为虚拟内存!!!简称虚存
虚存允许更有效的多道程序设计,并解除了用户与内存之间没有必要的紧密约束。

下表8.2总结了使用虚存和不使用虚存的情况下分页和分段的特点。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

林林林ZEYU

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

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

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

打赏作者

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

抵扣说明:

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

余额充值