某操作系统采用页式虚拟存储管理_虚拟存储系统

某操作系统采用页式虚拟存储管理_虚拟存储系统 一、请求分页式存储管理的基本思想请求分页式存储管理是基于分页式存储管理的一种虚拟存储器1.相同点a.把内存空间划分成尺寸相同、位置固定的块b.按照内存块大小,把作业的虚拟地址空间(相对地址空间)划分成页(划分过程对用户透明)c.虚拟地址空间中的一页可以装入到内存中的任何一块中2.不同点a.作业全部进入辅存,运转时,并不把整个作业程序一起都装入到内存,只…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 

一、请求分页式存储管理的基本思想

请求分页式存储管理是基于分页式存储管理的一种虚拟存储器

1. 相同点

a. 把内存空间划分成尺寸相同、位置固定的块

b. 按照内存块大小,把作业的虚拟地址空间(相对地址空间)划分成页(划分过程对用户透明)

c. 虚拟地址空间中的一页可以装入到内存中的任何一块中

2. 不同点

a. 作业全部进入辅存,运转时,并不把整个作业程序一起都装入到内存,只装入目前要用的若干页

b. 运行过程中,虚拟地址被转换成(页号,页内偏移)

c. 根据页号查页表,如果该页不在内存中,就没有具体的块号与之对应,表明“缺页”,运行无法继续,此时,要根据页号把它从辅存中调入内存

d. 所谓请求分页式,是指当程序运行中需要某一页时,再把它从辅存中调入内存使用

3. 其他

用户的虚拟地址空间可以很大,不受内存尺寸约束

二、页表表目的扩充

在请求分页式存储管理中:通过“缺页中断位”判断所需要的页是否在内存中

页的表项包括:页号、块号、缺页中断位、辅存地址、引用位、改变位

页号:虚拟地址空间中的页号

块号:该页所占内存的块号

缺页中断位:1 表示在内存中,0 表示不在内存中,为 0 时会发生“缺页”中断信号,请求系统处理

辅存地址:该页内容存放在辅存中的地址,缺页时,缺页中断处理根据它的指点,将所缺的页调入内存

引用位:在系统规定的时间间隔内,该页是否被引用过(在页面淘汰算法中使用)

改变位:0 表示页面在内存时数据未被修改,1 表示被修改过。当页面被选为淘汰对象时,根据此为的取之来确定是否要将该页的内容进行磁盘回写操作

三、缺页中断的处理

1. 处理过程

a. 根据当前执行指令中的虚拟地址,形成(页号,页内偏移),用页号查页表,判断该页是否在内存中

b. 如该页的缺页中断位为 0,表示该页面不在内存,于是产生缺页中断,让操作系统的中断处理程序进行中断处理

c. 中段处理程序查询存储分块表,寻找一个空闲的内存块;查询页表,得到该页在辅存中的地址,启动磁盘读信息

d. 把从磁盘上读出的信息装入到分配的内存块中

e. 根据分配存储快的信息,修改页表、存储分块表中相应表目的信息

f. 由于产生缺页中断的那条指令并未执行,所以在完成所需页面的装入工作后,应该返回原指令重新执行

2. 缺页中断与一般中断的区别

a. 缺页中断时在执行一条指令中间时产生的中断,并立即转去处理;一般中断则是在一条指令执行完毕之后,当发现有中断请求时再去响应和处理

b. 缺页中断处理执行完毕之后,仍返回到原指令处重新执行;一般终端则是返回到下一跳指令去执行

四、调页方式

主要分为:请调和预调两种,请调为主,预调为辅

1. 请调

发生缺页时,终端请求调入此页

2. 预调

作业最初被调入运行时,通常是预先将相应的第一页装入内存,而所需的其他各页,按照请求顺序装入

五、页面淘汰算法

页面走向:一个程序执行过程中页号的变化序列

页面淘汰问题:发生缺页时,需要从辅存上把所需要的页面调入内存,而当时内存中又没有空闲块,需要选择一个页面调出内存

抖动(颠簸):一个刚被淘汰出去的页面,不久又要访问,又把它从辅存调入内存,调入不久后又被淘汰……如此反复的调入调出,整个系统一直陷于页面的调入调出,大部分时间都用在处理缺页中断和页面淘汰中

抖动使得整个系统的效率低下,应极力避免

如果淘汰的页面在内存中修改过,必须把它写回到磁盘,以便更新该页在辅存上的副本

1. 先进先出页面淘汰算法(FIFO)

做法:淘汰最早进入内存的页面

FIFO 算法认为:随着时间的推移,在内存中待的时间最长的页面,被访问的可能性最小

实际中:有可能把经常要访问的页面淘汰出去

2. 最近最久未使用页面淘汰算法(Least Recently Used,LRU)

做法:淘汰最长时间未被访问的页面

这是一种基于局部性原理的淘汰算法

LRU 算法认为:如果一个页面刚被访问过,那么不久的将来被访问的可能性就大

3. 最近最少使用页面淘汰算法(Least Frequently Used,LFU)

做法:淘汰当前使用的最少的页面

着眼点在于页面的使用频率

LFU 算法认为:在一段时间内使用得最多的页面,将来用到的可能性就大

要实现 LFU 算法,应该为内存中每一个页面设置一个计数器,对某个页面每访问一次计数器加一,过一段时间,所有计数器清零

提示:LRU和LFU是不同的!

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4

注意,当调页面4时会发生缺页中断

若按LRU算法,应换页面1(1页面最久未被使用) 但按LFU算法应换页面3(整个时间内,页面3只使用了一次,而2使用3次,1使用2次)。

可见LRU关键是看页面最后一次被使用到发生调度的时间长短,

而LFU关键是看一定时间段内页面被使用的频率!

4. 最优页面淘汰算法(Optimd,OPT)

做法:把以后不再使用的或在最长时间内不会用到的页面淘汰出去

前提:已知作业运行时的页面走向

因为其苛刻的前提条件:没有实用价值,只能用来做一个标尺

5. FIFO 页面淘汰算法的异长现象

有若干因素会影响缺页中断的发生次数,例如:分配给作业的内存块数

一般情况:分配给作业的内存块数增多,发生缺页中断的可能性就下降

FIFO 的异常现象:对于 FIFO 算法,有时增加分配给作业的内存块数,它的缺页中断次数反而上升

FIFO 算法并不总是产生异长现象,它和页面走向有关

六、缺页中断率

1. 定义

假设一个作业运行的页面走向中涉及到的页面总数为 A,其中有 F 次缺页,必须通过缺页中断把他们调入内存

缺页中断率:f = F/A

2. 影响缺页中断次数的因素

a. 分配给作业的内存块数

b. 页面尺寸

c. 程序的实现

d. 页面淘汰算法

七、虚拟存储的性能问题

在虚拟存储中,页面在内存和外存之间频繁的调度以至于系统中页面所需的时间比进程实际运行的时间还多,在这种情况下,系统效率急剧下降,甚至可能出现全面崩溃

在颠簸时,伴随着磁盘的剧烈抖动,引起颠簸的原因是缺页过于频繁,CPU 忙于处理缺页

活跃页面:进程运行时,CPU 总是集中访问的一些页面

工作集:对于给定的访页序列,在其中选取定长区间,成为工作集的窗口,落在工作集窗口中的集合称为工作集,记为 WS(t)

工作集的大小取决于页的三个因素:访页序列特性、时刻 Ti、窗口长度

引入工作集的目的是:希望分配给进程的页面数与当前工作集的大小吻合

实现工作集存储管理的策略是很困难的

一般可用硬件装置统计当前工作集的大小用软件根据工作集的大小调整对每个进程分配的物理块数

只有在具备足够内存的情况下,才能有效的实现多道程序设计

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189432.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vue修饰符简略总结[通俗易懂]

    vue修饰符简略总结[通俗易懂]vue修饰符主要分为:1.表单修饰符;2.事件修饰符;3.按键修饰符,其中包含特殊修饰符:系统修饰键,.exact修饰符;4.鼠标按钮修饰符;5.其他修饰符,包含:.sync,.prop,.camel一、表单修饰符(用法一致为表单元素使用v-model时加修饰符:v-model.修饰符)1).trim:去除仅首尾的空格2).lazy…

    2022年10月30日
  • web版聊天功能简单实现

    web版聊天功能简单实现一、问题核心点:如何找到要发送的人?要完成一个功能我觉得首先要分析该功能的逻辑及技术难点,而不是盲目的直接就撸代码,这样非常浪费时间。个人觉得web版聊天功能没什么实际应用场景,以前看过中国移动好

  • 我们做出了一个艰难的决定[通俗易懂]

    我们做出了一个艰难的决定[通俗易懂]经过半年多的考虑和准备,前天晚上,我们做出了一个艰难的决定:让大儿子在家读书。我厌倦了孩子题海战术,买的课外书根本没有时间读,而他的身心健康变得越来越糟糕了。我知道有很多的理由可以让孩子继续读书,譬如

  • fcntl 函数「建议收藏」

    fcntl 函数「建议收藏」fcntl函数浅解Linux系统中使用man查看fcntl函数的原型为fcntl(intfd,intcmd,……/arg/);自己在使用时用到了fcntl(intfd,intcmd,longarg);F_SETFL:设置文件状态标志。将文件的状态标志设置为第三个参数arg的值(取整数值),其中O_RDONLY,O_WRONLY,O_RDWR,O_CREAT

    2022年10月26日
  • 缓冲区溢出攻击实验「建议收藏」

    缓冲区溢出攻击实验「建议收藏」又一个计系系统的实验。

  • mysql怎么创建账户_mysql添加索引

    mysql怎么创建账户_mysql添加索引1.使用root账户登录到mysql:mysql -uroot -p2.创建用户名和密码:grant all on *.* to 用户名@’127.0.0.1′ identified by "密码";3.创建成功后,需设置访问权限。首先切换到mysql数据库:use mysql;4.修改新建用户的权限:update user set host = ‘%’ where user = ‘attckne…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号