赞
踩
理想中的存储器:更大、更快、更便宜的非易失性存储
但这个是目前达到不了的,我们只能采用多级存储机制,达到一个大、快、便宜的一个感觉:
寄存器、缓存、主存这都是比较快的,但价格较高,所以不可能很大。我们的外存硬盘很大,但是又很慢。我们的虚存技术,就是将这两个的特点有机的结合在一起,实现给人的感觉大、快、便宜。
以设计了三种技术:
1)手动覆盖技术
:只把指令和数据保存在内存中
2)自动交换技术
:将程序导出内存到硬盘上,程序大小为粒度
3)虚拟内存技术
(前两种是虚拟内存还没出现的情况下诞生的):以更小的粒度把数据在内存和硬盘间换入换出。是前两种方法的合体版。
目标:
是在较小的可用内存中运行较大的(相对而言)的程序。因为覆盖技术需要分区所以需要和分区存储管理
配合使用
原理:
把程序按照其自身的逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。
我们先看下调用关系:
A可以分别(注意不是同时)调用B、C,B调用D,C可以分别调用E、F。
不存在调用关系可以放到一个覆盖区里。
下面还有一种更好的方案:
A不变(20K),BEF在覆盖区0(50K),CD在覆盖区1(30K)。这样也是可以,需要的内存更小
缺点:
由程序员来把一个大的程序划分为若干个小功能模块,并确定各个模块之间的覆盖技术,费时费力,增加了编程的复杂度。
目标:
多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源。
方法:
1)可将暂时不能运行的程序送到外存,从而获得空闲内存空间
2)操作系统把一个进程的整个地址空间的内容保存到外存中(换出swap out),而将外存中的某个进程的地址空间读入到内存中(换入swap in)。换入换出内容的大小为整个程序的地址空间。
1)交换时机的确定:何时发生交换?只当内存空间不够或有不够危险的时候才换出。
2)交换区的大小:必须足够大以存放所以用户进程的所有内存映射的拷贝;必须能对这些内存映像进行直接存取。
3)程序换入时的重定位:换出后再换入的内存位置一定要在原来的位置上吗,寻址可能会出现问题?最好采用动态地址映射的方法,建好页表就行。
以一个程序的大小为单位进行换入换出,开销太大!
没有调用关系的程序模块之间
,因此程序员必须给出程序内的各个模块之间的逻辑覆盖结构。交换发生在内存中程序与管理程序或操作系统之间,而覆盖则发生在运行程序内部。
针对覆盖技术和交换技术的缺点,和特点,发明了虚存技术
目标:
1)像覆盖技术那样,不是把程序的所有内容都放在内存中
,因而能够运行比当前的空闲内存空间还要大的程序。但做得更好,由操作系统自动来完成,无须程序员的干涉;
2)像交换技术那样,能够实现进程在内存与外存之间的交换,因而获得更多的空闲内存空间。但做得更好,只对进程的部分内容在内存和外存之间进行交换
。
如图所示:程序只有少部分在内存中,而大部分都是在外存中存储。
定义:
程序的局部性原理(principle of locality),指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定的区域,这个可以表现为:
虚拟存储技术的实现正是依赖程序局部性原理
,而且在实现了以后应该是能够取得一个满意的效果。访问的速度更快,并且可以提供一个很多的空间。
前提:
操作系统有了硬件支持分段/分页机制,在此内存管理基础之上来实现一个以页或者是段为单位的虚存管理。
过程:
1)在装入程序的时候,不必将所有的程序和数据装入内存中去,而只需将当前需要执行的部分的代码数据放在相关的段或者是页中,这样可以是的一小部分的代码放在内存中去了。
2)在程序执行过程中,如果需要执行的指令或访问的数据尚未在内存中(称为缺页或缺段)
,则由处理器通知操作系统将相应的页面或段调入到内存,然后继续执行程序。
3)另一方面。操作系统将内存中暂时不使用的页面或段调出保存在外存上
,从而腾出更多空闲空间存放将要装入的程序以及将要调入的页面或段。
1)较大的用户空间:
通过把物理内存与外存结合,提供给用户的虚拟内存空间通常大于实际的物理内存,
既实现了这两者的分离。如32位的虚拟地址理论上可以访问4GB,而可能计算机上仅有256M的物理内存,但硬盘的容量大于4GB
2)部分交换:
与交换技术相比较,虚拟存储的调入和调出是对部分虚拟地址空间进行的,其每次的换入换出是非常规整的,要么是段或者是页。不需要将整个程序交换出去
。力度更小,但是效率更高。
3)不连续性:
物理内存分配不连续,虚拟地址空间使用也是不连续的。本来所有的数据都是连续的放在虚拟内存中的,但是操作系统要把某些数据换出去,而造成的不连续。操作系统会弥补好,正常的访问。
具体实现:虚拟页式内存管理。
虚拟页式内存管理,即在页式内存管理的基础上增加了请求调页
和页面置换
的功能。
请求调页:
产生缺页中断,向操作系统请求从硬盘调页
页面置换:
应用页面置换算法,决定把那个页从内存放到硬盘
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。