操作系统虚拟存储技术_虚拟存储

2022-11-09 15:23:06 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

虚拟存储管理

在前面总结了集中存储管理的刚上,要求作业的逻辑地址空间连续的存放主存储器

的某个区域中。当主存储器中没有足够大的区域是,则作业是无法装入的,或必须移动

某些作业后才能装入。是否有可能吧作业的连续逻辑地址空间分散到几个不连续的主存

区域,且仍能使作业正确执行呢? 若可行的话,则可充分利用主存空间有可减少移动所

花费的开销。不仅如此,还可采用虚拟存储管理技术,实现在较小的主存空间里运行较

大的作业。

虚拟存储管理:实现较小主存空间运行较大的作业。

一、页式存储管理:把主存储器分成大学相当的许多区,每一个区称块,编制逻辑分成

页,页与块等大小。

分页式存储器的逻辑地址由两部分组成:

例如:地址总长15,其中页号5,页内地址10——得出逻辑地址32

就是2的5次方得32,其中编号是从0—31;每页2的十次方为1024,编号从0—1023.

注意:1、 逻辑地址是连续的,编程序时无需考虑如何分页。

2、分左右主存块可以不连续,可按页分散主存空间中。

1、页管理条件: 1)怎样知道哪些块用或未用

2)左右分散后如何正确执行

分配前提:首先空闲块能否满足左右要求。

2、相关的计算: 1)、块号=字号*字长 位号 2)、柱面号=块号/32 3)、磁头号=块号先Mod32 / 4 4)、扇区号= 块号先Mod32 在Mod 4

3、页表和 地址转换(动态重定位):

在主存中空闲块能满足作业要求是,存储管理就找出这些空闲块分配给作业,同时

为作业建立一张页表,指出逻辑地址中的页号与主存中的块号的对应关系。

页表:首先空闲块能满足作业要求同时,为作业建一张表,指出逻址页号与主存中块号

对应关系。

页表长度:有作业所占页的多少而定。比如:四页——A页表长度四个登记项。

4、页式存储管理: 1)、动态重定位方式装入作业,要硬件地址转换机构,逻址——绝址。 地址=块号*块长 页内地址

2)、页表放主存储器中,访问两次主存,一是读出页表,二是按计算出绝址进行读写。——延长指令执行周期,降低执行速度。 3)、引入高速缓冲存储器快表:存放在高速缓冲存储器中的页表叫块表。

块表容量小,填满后要新登记,所以要淘汰旧的:“先进先出”发。

比如:主存储器200 ,高速缓冲存储器40(运行90%),如果没有高速缓冲存储器:

200 200=400

有了高速缓冲存储器的话:(200 40)*90% (200 200)*10%=256

4)、整个系统只一个高速缓冲存储器,只占用处理器者才能使用它。

快表是动态的,左右占处理器时快表在高速缓冲存储器中,否则快表在进程块中。

5、页表共享保护:页表共享可节省主存空间,所以共享又必须解决信息保护问题,

——在页表中增“标志”。比如“只可执行”、“只可读”、“只可写”表等。

二、虚拟存储器

什么是虚拟存储器呢?

程序有些事互斥的,即把作业都装入主存中,作业的执行实际上没有同时执行这些

信息,有些在整个过程中甚至没有用到。所以我们能不能不把作业都同时准个人主存储

器中,而是将其中的一部分先装入主存中,另一部分先放入磁盘上,作业执行时要用到

不在存储器中信息时,在把他们调入主存储器中。

从这我们引出,当主存空间小于作业需求是,作业也能执行,用户编制程序是可以

不必考虑主存储器的实际容量,可以用户逻辑地址空间大于主存储器的绝对地址空间,

这对于用户来说,好久计算机系统具有一个容量很大的主存储器,这称为虚拟存储器。

特点

1、不把作业全同时装入主存,先装一部分,另一部分放磁盘,作业执行中用到不在主存

中的再将其装入主存。

2、主存空间小于作业需求量,作业也能执行,主存空间充分利用,不必考虑主存器实际

大小。

3、虚拟存储器容量有计算机的地址结构和辅助存储器容量决定。

4、实质上是为扩大主存容量而采用的一种管理技巧。

允许用户逻辑 > 主存储器绝址空间。

对用户来说好像有一个容量很大的主存储器,这叫虚拟存储器。

程序互斥:程序一次运行中,执行了这部分程序,就不会去执行那部分程序。

三、页式 虚拟存储管理

1、页式管理如何改成虚拟存储器:将作业全信息作为副本存放磁盘上。

支持哪些页已经在主存器,指出每一页副本在磁盘上的位置。若“1” 装,有硬件地

址转换机构差页表为“1”转绝址,如“0”发出“缺页中断”(该页不在主存器中,查

有无空闲块)

2、页面调度:欲调入一页是,主存器没有空闲块是,先调出已在主存器中某页,在调

入当前页,同时对页表做相应修改的方法叫页面调度。

调度法分类: 1)先进先出FIFO:淘汰呆最久那一页。(对于常用的不利) 2)最近最久未用Least Recently Used(LRU) 距离当前最长时间内没有用过的调出。 (1)增加一个“引用位”标志,必须对每一页时时刻刻记录,更新;实现困难、开销大。 (2)页号队列法:规定队首最久未用页,队尾最近页,所以发生中断时队首页面调出,比FIFO中断次数少,好。 3)最近不常用:(最近一段时间使用最少的。)

3、抖动(颠簸):选用一不适调度法,刚被调出要立即用又被调入,调入不久有被调

出,频繁的调度,使大部分时间在来回的调度上的现象叫抖动。

4、多级页表:程序执行时有局部性的。 一级页表::第一级的页面组表,成为一级页表。 二级页表:组内页面表,吧页表存 辅助存储器中。

注:一个主存块正好放一张表。

5、程序执行的过程:程序执行时一级页表——到主器地址转换,按逻辑地址查一级页

表——根据“标志位”至二级页表是否在主存中(在房屋2次),若没(访问4次)——

可按页号2查二级页表,表项若无,应先装入主存中。

二级页表不想把页表一次装入主存器,它是分散存放,用高速缓冲存储器加快地址转

换。

注:页表级别越多,灵活性越大,但是管理起来越复杂。

小结:

首先了解什么是页式存储,再了解什么是虚拟存储,之后再结合起来页式虚拟存储

器,并且分别掌握他们对应的管理方式,调度方式和相应的计算就容易上手了。

这在我们的现实生活中用处极大,比如自己的内存不够大,就可以建立虚拟内存,使

得计算机用起来顺手、方便。赶紧试一试,让自己的计算机运行起来更高效、更方便。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/189447.html原文链接:https://javaforall.cn

0 人点赞