挑战408——操作系统(21)——虚拟存储管理

这部分内容是组成原理和操作系统部分的交叉篇。有内容重复,也有内容相互补充。于是写在一起总结。

虚拟存储技术的引入

由于技术和成本等原因,主存的存储容量受到限制,并且各种不同的计算机所配置的物理内存容量多半不同,而程序设计的时候,人们显然不希望受到特定的计算机的物理内存大小的限制。此外,现代操作系统都支持着多道程序运行,如何让多个程序有效而安全的共享主存又是一个重要的问题。
于是为了解决上述的两个问题,计算机中采用了虚拟存储管理技术。

虚拟存储器的基本概念

主存和联机工作的辅存,共同构成了虚拟存储器,并在硬件和软件的共同管理之下工作。对于程序员而言,虚拟存储器是透明的,其具有主存的速度和辅存的容量。提高了存储系统的性价比。
虚拟存储器将主存或者辅存同一编址,形成庞大的地址空间。用户编程允许涉及到的地址称为逻辑地址,对应的空间为虚拟空间。而实际的主存单元的地址称为物理地址,对应的是主存地址空间。虚地址比实际地址要大得多。

调用的原理

CPU使用虚地址的时候,由硬件找出物理地址和逻辑地址间的关系。

  1. 若对应的虚地址的存储单元已经装入主存,则进行地址转换,在此过程中,检查是否缺页(后面会说),地址越界或者是访问越权等等。这样CPU可以直接访问主存指示的实际单元。
  2. 若不在主存,则把包含该字的一页或者一段调入主存后再由CPU访问。若此时主存已满,那么则使用置换算法,置换主存中的一页或者一段。

所编写的程序和数据,在操作系统的管理之下,先送入磁盘,再将当前运行的所需要的部分调入内存,供CPU使用。

虚拟存储器的基本原理

程序的局部性原理,是指程序在执行的过程中,常常会局部于某一存储单元附近,程序的局部性主要体现在以下的两个方面:

  1. 空间局部性:程序在执行时访问的内存存储单位会局限在一个比较小的范围。这反映了程序顺序执行的特点。
  2. 时间局部性:程序中执行的某些指令,会在不久后再次被执行,因为程序中可能存在大量的循环语句

于是得出一个结论:一个进程在执行的过程中,没有必要将其全部装入内存中,而仅将将要执行的那部分装入内存,其余部分暂时存入磁盘,这样当进程访问不在主存的那部分程序和数据的时候,再将其调入内存。若此时内存已满,那么就将一些暂时不用的部分置换出去。至于要置换的内容是什么,就就是后面的置换算法了。这样腾出空间后再调入内存,进程得以继续执行。
所以,也可以这么说,虚拟存储器,就是指的具有请求调入功能和置换功能,能从逻辑上对内存进行扩充的一种存储系统

虚拟存储器的内存分配

我们之前讲过内存的分配方式常见的分为两种——连续分配方式和离散分配方式。
那么在虚拟存储器中,是否可以采用连续分配方式呢?答案是否定的。为什么?因为在虚拟内存中,允许将一个作业分多次调入内存,若采用连续分配的方式,那么会使得一部分内存都处于暂时或者永久的空闲,这样内存的利用率不高,造成浪费。而且也无法从逻辑上扩充存储容量。
那么虚拟存储空间的大小(记为M)由是由谁决定的呢?首先我们应该得到这样的一个最基本的结论:

M ≤ 内存容量 + 辅存容量

这是显然的,超过了没空间给它分配啊。那么还得考虑一个问题,有那么多的空间,是不是就一定能访问到呢?我们知道,CPU的位数决定了其访问存储空间地址的范围大小。假设地址为32位,那么按字节编址,CPU能访问到的最大内存范围为2^32B,也就是4GB,假设分配的虚拟内存大于4GB,那么多出来的那些显然是没有意义的,因为根本访问不了啊,白白浪费。
所以,虚拟内存的大小还应该满足这样的条件;

M ≤ 计算机位数能访问的最大地址数

综上,虚拟内存的容量是区两者的最小值。

好了 虚拟内存概念就写那么多。下一篇是比较重要的东西了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值