大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
虚拟存储管理
在前面总结了集中存储管理的刚上,要求作业的逻辑地址空间连续的存放主存储器
的某个区域中。当主存储器中没有足够大的区域是,则作业是无法装入的,或必须移动
某些作业后才能装入。是否有可能吧作业的连续逻辑地址空间分散到几个不连续的主存
区域,且仍能使作业正确执行呢? 若可行的话,则可充分利用主存空间有可减少移动所
花费的开销。不仅如此,还可采用虚拟存储管理技术,实现在较小的主存空间里运行较
大的作业。
虚拟存储管理:实现较小主存空间运行较大的作业。
一、页式存储管理:把主存储器分成大学相当的许多区,每一个区称块,编制逻辑分成
页,页与块等大小。
分页式存储器的逻辑地址由两部分组成:
例如:地址总长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查二级页表,表项若无,应先装入主存中。
二级页表不想把页表一次装入主存器,它是分散存放,用高速缓冲存储器加快地址转
换。
注:页表级别越多,灵活性越大,但是管理起来越复杂。
小结:
首先了解什么是页式存储,再了解什么是虚拟存储,之后再结合起来页式虚拟存储
器,并且分别掌握他们对应的管理方式,调度方式和相应的计算就容易上手了。
这在我们的现实生活中用处极大,比如自己的内存不够大,就可以建立虚拟内存,使
得计算机用起来顺手、方便。赶紧试一试,让自己的计算机运行起来更高效、更方便。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189447.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...