【操作系统复习】第6章 虚拟存储器 2
请求分页中的内存分配
在为进程分配物理块时,要解决下列的三个问题:
1. 保证进程可正常运行所需要的最少物理块数
2. 每个进程的物理块数,是固定值还是可变值(分配策略)
3. 不同进程所分配的物理块数,是采用平均分配算法还是根据进程的大小按照比例予以分配(分配算法)
一、最小物理块数的确定
1. 最小物理块数只保证进程正常运行所需的最小物理块数。
2. 进程应获得的最小物理块数与计算机的硬件机构有关,取决于指令的格式、功能和寻址方式。
二、内存分配策略
在请求分页中,可采取两种分配策略,即固定和可变分配策略。在进行置换时,也可采取两种策略,即全局置换和局部置换(置换范围不同)。于是组合出三种适用的策略:
1、固定分配局部置换
⚫ 思路
– 分配固定数目的内存空间,在整个运行期间都不改变
⚫ 策略
– 如果缺页,则先从该进程在内存的页面中选中一页,进行换出操作,然后再调入一页
⚫ 特点
– 为每个进程分配多少页是合适的值难以确定
2、可变分配全局置换
⚫ 思路
– 每个进程预先分配一定数目的物理块,同时OS也保持
一个空闲物理块队列
⚫ 策略
– 当缺页时,首先将对OS所占有的空闲块进行分配,从而增加了各进程的物理块数。当OS的空闲块全部用完,将引起换出操作
3、可变分配局部置换
⚫ 思路
– 系统根据缺页率动态调整各进程占有的物理块数目,使其保持在一个比较低的缺页率状态下
⚫ 特点
– 使大部分进程可以达到比较近似的性能
三、物理块分配算法
在采用固定分配策略时,可使用下列方法来分配:
1. 平均分配算法:将系统中所有可供分配的物理块,平均分配给各个进程。
2. 按比例分配算法:按照进程的大小比例分配物理块。
3. 考虑优先权的分配算法:为了对于紧迫的作业,能够尽快完成。可以将内存的物理块分成两部分,一部分按照比例分配给各进程,另一部分根据进程优先级,适当增加其相应的份额,分配给各进程。
页面调入策略
何时调入页面
➢ 预调页策略:预先调入一些页面到内存
➢ 请求调页策略:发现需要访问的页面不在内存时,调入内存
从何处调入页面
➢ 如系统拥有足够的对换区空间,全部从对换区调入所需页面
➢ 如系统缺少足够的对换区空间,凡是不会被修改的文件,都直接从文件区调入;当换出这些页面时,由于未被修改而不必再将它们重写磁盘,以后再调入时,仍从文件区直接调入
➢ UNIX方式:未运行过的页面,从文件区调入;曾经运行过但又被换出的页面,从对换区调入。
① 进程需要的页面不在内存,引起缺页中断
② 中断处理程序保留现场环境,转入缺页中断处理程序
③ 中断处理程序查找页表,得到对应的外存物理块号。如果内存有空闲,则启动磁盘操作,将所缺的页面读入,并修改页表。否则,到4。
④ 执行置换算法,选出要换出的页面,如果该页修改过,应将其写入磁盘,然后将所缺页调入内存,修改相应表项,将其存在位置为‘1’,并放入快表。
⑤ 利用修改后的页表,形成物理地址,访问内存数据。
缺页率
访问页面成功(在内存)的次数为S
访问页面失败(不在内存)的次数为F
总访问次数为A=S+F
缺页率为 f= F/A
影响因素:页面大小、分配内存块的数目、页面置换算法、程序固有属性
缺页中断处理的时间
请求分页存储管理方式
⚫ 优点:
– 可提供多个大容量的虚拟存储器:作业的地址空间不再受主存大小的限制
– 主存利用率大大提高:作业中不常用的页不会长期驻留在主存,当前运行用不到的信息也不必调入主存
– 能实现多道作业同时运行
– 方便用户:大作业也无须考虑覆盖问题
⚫ 缺点:
– 缺页中断处理增加系统开销
– 页面的调入调出增加I/O系统的负担
– 此外页表等占用空间且需要管理,存在页内零头
页面置换算法
⚫ 功能:
⚫ 需要调入页面时,选择内存中哪个物理页面被置换。
⚫ 目标:
⚫ 把未来不再使用的或短期内较少使用的页面调出,通常只能在局部性原理指导下依据过去的统计数据进行预测。
⚫ 抖动:
⚫ 不适当的算法会导致进程发生“抖动”,即刚换出的页很快就要被访问,又需重新调入
几种页面置换算法:
⚫ 最佳置换算法(OPT, optimal)*
⚫ 先进先出算法(FIFO)*
⚫ 最近最久未使用算法(LRU, Least Recently Used)*
⚫ 轮转算法(clock)
⚫ 最不常用置换算法(LFU, Least Frequently Used)*
⚫ 页面缓冲算法(page buffering)
⚫ 最佳置换算法(OPT, optimal)
1. 最佳置换算法所选择的被淘汰页面,将是以后永不使用的, 或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。
2. 这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用作性能评价的依据
⚫ 先进先出算法(FIFO)
1. 选择装入最早的页面被置换。可以通过链表来表示各页的建立时间先后。
2. 性能较差。较早调入的页往往是经常被访问的页,这些页在FIFO算法下被反复调入和调出。
3. 并且有抖动现象。
⚫ 最近最久未使用算法(LRU, Least Recently Used)
1. 选择内存中最久未使用的页面被置换
2. 这是局部性原理的合理近似,性能接近最佳算法。(“最近的过去”对“最近的将来”的近似)
3. 但由于需要记录页面使用时间的先后关系,硬件开销太大
⚫ 轮转算法(clock)
1、简单的Clock置换算法
也称最近未使用算法(NRU, Not Recently Used),它是LRU(最近最久未使用算法)和FIFO的折衷。
–内存中所有页面通过链接指针形成一个循环队列
–每页有一个使用访问位(use bit),若该页被访问则置use bit=1。
–置换时采用一个指针,从当前指针位置开始按地址先后检查各页,寻找use bit=0的页面作为被置换页。
–指针经过的user bit=1的页都修改user bit=0,最后指针停留在被置换页的下一个页。
2、改进型Clock置换算法
⚫ 由于Clock算法不考虑换出页面时,页面是否修改过的问
题。这样在换出的页面如果被修改过的话,则必须做拷回
磁盘处理,开销比较大。于是,改进型的Clock算法为每
个页又增加了一个修改位。
⚫ 选择页面时,尽量选择既未使用又没有修改的页面。
⚫ 最不常用置换算法(LFU, Least Frequently Used)
⚫ 目的
–选择到当前时间为止被访问次数最少的页面被置换;
⚫ 实现方法1
–每个页面设立移位寄存器:被访问时左边最高位置1,定期右移并且最高位补0,这样,在最近一段时间内时用最少的页面将是ΣRi最小的页。
⚫ 实现方法2
–每页设置访问计数器,每当页面被访问时,该页面的访问计数器加1;发生缺页中断时,淘汰计数值最小的页面,并将所有计数清零。
⚫ 页面缓冲算法(page buffering)
页面缓冲算法 PBA
⚫ 内存分配采用可变分配和局部置换,置换算法为FIFO。
⚫ 它是对FIFO算法的发展,通过被置换页面的缓冲,有机会找回刚被置换的页面;
⚫ 被置换页面的选择和处理:由操作系统中专门的页面置换进程,用FIFO算法选择被置换页,把被置换的页面放入两个链表(空闲页面链表和已修改页面链表)之一。
⚫ 如果页面未被修改,就将其归入到空闲页面链表的末尾
访问内存的有效时间
• 访问页表、访问实际物理地址数据、缺页中断处理
• 被访问页在主存,且相应页表项在快表
EAT=λ+t
• 被访问页在主存,但相应页表项不在快表
EAT= λ+t+λ+t=2( λ+t )
• 被访问页不在主存
EAT= λ+t+ε+λ+t=ε+2( λ+t )
抖动
如果一个进程没有足够的页,那么缺页率将很高,这将导致:
➢CPU利用率低下.
➢操作系统认为需要增加多道程序设计的道数
➢系统中将加入一个新的进程
抖动(Thrashing) :一个进程的页面经常换入换出
根本原因:
➢同时在系统中运行的进程太多;
➢因此分配给每一个进程的物理块太少,不能满足进程运行的基本要求,致使进程在运行时,频繁缺页,必须请求系统将所缺页面调入内存。
工作集定义
所谓工作集,指在某段时间间隔Δ里进程实际要访问页面的集合。
把某进程在时间t的工作集记为w(t,Δ),其中的变量Δ称为工作集的“窗口尺寸”。
◆ 工作集w(t,Δ)是二元函数,即在不同时间t的工作集大小不同,所含的页面数也不同;工作集与窗口尺寸Δ有关,是Δ的非降函数,即:
抖动的预防方法
01 采取局部置换策略:只能在分配给自己的内存空间内进行置换;
02 把工作集算法融入到处理机调度中;
03 利用“L=S”准则调节缺页率:
➢L是缺页之间的平均时间
➢S是平均缺页服务时间,即用于置换一个页面的时间
➢L>S,说明很少发生缺页
➢L<S,说明频繁缺页
➢L=S,磁盘和处理机都可达到最大利用率
04 选择暂停进程。
请求分段存储管理方式
1. 请求分页系统建立的虚拟存储器,是以页面为单位进行换入、换出操作的。
2. 在请求分段系统中实现的虚拟存储器,以分段为单位进行换入和换出。
3. 程序在运行之前,只需要装入必要的若干个分段即可运行。当访问的分段不在内存时,可由OS将所缺少的段调入内存
请求段表机制
◼ 存取方式:表示段存取属性为只执行、只读或允许读/写
◼ 访问字段A:记录该段在一段时间内被访问的次数
◼ 修改位M:标志该段调入内存后是否被修改过
◼ 存在位P:指示该段是否在内存
◼ 增补位:表示该段在运行过程中是否做过动态增长,在请求页式中没有该位
◼ 外存始址:指示该段在外存中的起始地址(盘块号)
缺段中断机构
◼ 在指令执行期间产生和处理中断信号
◼ 一条指令在执行期间,可能产生多次缺段中断
◼ 由于段不是定长的,对缺段中断的处理要比对缺页中断的处理复杂
地址变换机构
◼ 请求分段系统的地址变换机构,是在分段系统的地址变换机构基础上形成的。
◼ 由于分段可能不在内存,因此会引起缺段中断。先将需要的段调入内存,修
改段表,然后再利用段表进行地址变换。
分段保护
越界检查:
➢ 由地址变换机构来完成;
➢ 比较段号与段表长度;段内地址与段表长度。
存取控制检查:以段为基本单位进行。
➢ 通过“存取控制”字段决定段的访问方式;
➢ 基于硬件实现。
环保护机构:
➢ 低编号的环具有高优先权;
➢ 一个程序可以访问驻留在相同环或较低特权环(外环)中的数据;
➢ 一个程序可以调用驻留在相同环或较高特权环(内环)中的服务。
相关文章:

【操作系统复习】第6章 虚拟存储器 2
请求分页中的内存分配 在为进程分配物理块时,要解决下列的三个问题: 1. 保证进程可正常运行所需要的最少物理块数 2. 每个进程的物理块数,是固定值还是可变值(分配策略) 3. 不同进程所分配的物理块数ÿ…...

【OAI】OAI5G核心网VPP-UPF网元分析
文章目录 VPP_UPF_CONFIG_GENERATION.mdVPP UPF Configuration GenerationEnvironment variablesInterfacesInterface Configuration ExamplesCentral UPFA-UPFI-UPFUL CL FEATURE_SET.mdVPP_UPG_CLI参考文献 VPP_UPF_CONFIG_GENERATION.md VPP UPF Configuration Generation …...

【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器
📬📬我是上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货,欢迎关注。 介绍 Hadoop是一种开源的分布式处理框架,用于在一组低成本硬件的集群上存储和处理大规模数据集。Ambari是一种基…...

Day3--C高级3
一.编写一个名为myfirstshell.sh的脚本,它包括以下内容。 1、包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的 2、和当前用户说“hello 用户名” 3、显示您的机器名 hostname 4、显示上一级目录中的所有文件的列表 5、显示变量PATH和HO…...

第9章 CURD操作与MemoryCache缓存的强制清理的实现
1 重构 Data.Repository<TEntity> using Core.Caching; using Core.Domain; using Core.Events; using Microsoft.EntityFrameworkCore; namespace Data { ///<typeparam name"TEntity">泛型类型实例(这里特指:1个指定实体的类型实例)。</typepa…...

TCP 协议特性详解
TCP 协议特性总结 TCP协议特点TCP协议段格式TCP原理确认应答(安全机制)超时重传(安全机制)连接管理(安全机制)(面试高频题)三次握手四次挥手 滑动窗口(效率机制)流量控制(…...

电子招投标采购系统源码:采购过程更规范,更透明
满足采购业务全程数字化, 实现供应商管理、采购需求、全网寻源、全网比价、电子招 投标、合同订单执行的全过程管理。 电子招标采购,是指在网上寻源和采购产品和服务的过程。对于企业和企业主来说,这是个既省钱又能提高供应链效率的有效方法…...

一篇了解智慧网关
智慧网关是指基于互联网技术的智能网关,能够连接不同的物联网设备和传感器,实现数据采集、信息传递、远程控制、通信管理等功能。作为物联网架构中的核心设备之一,智慧网关在智能家居、智慧城市、智能制造、智能交通、智能农业等领域得到了广…...

自学软件测试,从10K到40K的技术路线,也就是这些东西...
如果有一天我从梦中醒来时,发现自己的几年自动化测试工程师经验被抹掉,重新回到了一个小白的状态。我想要重新自学自动化测试,然后找到一份自己满意的测试工作,我想大概只需要6个月的时间就够了,如果比较顺利的话&…...

Qt libqrencode二维码——QtWidgets
前言 之前写过二维码的程序,但是在U盘上,没带,又重新找的网上资料写的。 网上二维码的生成,大多用到是第三方库libqrencode,这也一样: 效果图 本来是个动图的,都被和谐了,所以换成截图&…...

KDZD绝缘子表面电导盐密度测试仪
一、简介 智能电导盐密测试仪,也称为直读式等值盐密度测试仪,专为测试智能电导盐密度而设计。系统内置智能电导盐密度计算公式,读数直观。 人机交互采用真彩TFT液晶屏,操作简单,测试参数和结果一目了然。仪器自带微型打…...

如何降低电动汽车软件的开发成本和风险?
大多数的汽车制造商无法从销售电动汽车(EV)中获得利润,但计划快速进入市场的电动汽车初创公司是无法承担这样的损失的。 由于飙升的电池价格、高昂的组件成本和低迷的销量削弱了盈利能力,电动汽车初创公司必须将视线转到软件开发…...

使用pytest和allure框架实现自动化测试报告优化
目录 -x出现一条测试用例失败就退出测试 生成测试报告json pytest: 需要安装pytest和pytest-html(生成html测试报告) pip install pytest 和 pip install pytest-html 命名规则 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头…...

chatGPT免费站点分享
下面的应该都能用,试试吧... ChatGPT是一种人工智能聊天机器人,能够生成虚拟语言和交互回复。使用ChatGPT,您可以与机器人进行真实的交互,让机器人根据您提出的问题或请求来生成回复。但是,在使用ChatGPT时࿰…...

【计算机网络】已知一个/27网络中有一个地址是 167.199.170.82,问这个网络的网络掩码,网络前缀长度和网络后缀长度是多少?网络前缀是多少?
目录 题: 1. 网络掩码 2.网络前缀长度 3.网络前缀 4.网络后缀长度 题: 已知一个/27网络中有一个地址是 167.199.170.82, 问这个网络的网络掩码,网络前缀长度和网络后缀长度是多少?网络前缀是多少? 1.…...

Java8 - Stream
介绍 Java8中有两大最为重要的改变。第一个是 Lambda 表达式; 另外一个则是 Stream API(java.util.stream.*)。Stream是 Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用 Stream …...

什么样的冷链保温箱,既环保又实用?
冷链物流运输已经应用在了很多行业中,作为冷链物流运输中的重要设备——冷链保温箱,起到了举足轻重的作用。如果选择不当,选到了劣质产品,尤其是化学行业或者食品行业,就有可能造成试剂失效或者是影响粮食食品安全问题…...

Eclipse的介绍与安装
Eclipse简介 Eclipse 是一个开放源代码的,基于 Java 的可扩展开发平台。Eclipse官方版是一个集成开发环境(IDE),可以通过安装不同的插件实现对其它计算机语言编辑开发,如C、Php、Python等等。 Eclipse的下载 下载时需要访问网址 http://…...

<IBM AIX> 《AIX中HA的网卡IP确认方法》
《HA网卡确认方法》 1 HA IP地址类型2HA IP地址设置原则3 HA网卡日常查看方法3.1 查看hosts文件3.2 查看网卡和IP 4 通过命令方式直接查看5 直接查看HA配置4 HA网卡SMIT查看方法(暂不完整)4.1 根据hosts文件确认IP对应的别名4.2 根据serviceIP确认Persis…...

AMB300系列母线槽红外测温解决方案某锂电厂房项目案例分享
安科瑞 耿敏花 一、 行业背景 近年来,在国家政策引导与技术革新驱动的双重作用下,锂电产业保持快速增长态势,产业规模持续扩大,同时新能源产业工厂锂电池生产线对于电的依赖性很高,因而对供电设备的可靠性提出…...

go语言学习——4
文章目录 Map Map map是一种特殊的数据结构:一种元素对pair的无序集合,pair的一个元素是key,对应一个value,这种结构也称为“关联数组或字典”引用类型 map声明 var map1 map[keytype] valuetype var map1 map[string] intmap可以…...

vulnhub-RAVEN:2(MYSQL-UDF提权,手工提权/工具自动提权)
镜像下载:Raven: 2 ~ VulnHub 实验环境:kali:192.168.78.128 vulnhub镜像:192.168.78.133 1、kali查看本地ip地址,以便使用nmap扫描ip段存活主机 2、nmap扫描IP段,发现靶机的IP地址为192.168.78.133 4、访问…...

如何完整地掌握一个机器学习模型
如何完整地掌握一个机器学习模型 要全面地学习、掌握一个机器学习模型,可以遵循以下步骤: 基础理论学习:了解该模型的背后数学原理和推导过程,包括假设、损失函数、优化方法等。 学习算法实现:通过查阅论文、教程或…...

Nevron Open Vision for .NET 2022.3 Crack
Nevron Open Vision for .NET 适用于 Blazor、WPF、WinForms 和 Xamarin.Mac 的领先用户界面组件 Nevron Open Vision for .NET 是一套高级 UI 组件,可帮助您从单个代码库开发功能丰富的 Web (Blazor WebAssembly) 和桌面 (WinFor…...

【Linux】冯诺依曼体系结构以及操作系统的初步认知
🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、冯诺依曼体系结构二、操…...

盖雅工场重磅发布「劳动力账户」,助力企业实现全面工时成本管理
2023年5月10日,亚太地区领先的劳动力管理云服务商盖雅工场宣布,在原有的智能排班和实时考勤系统基础之上,正式推出全新模块「劳动力账户」,通过为企业里的每一位员工建立劳动力账户,实现工时与成本的全面管控ÿ…...

数据结构与算法基础(青岛大学-王卓)(2)
第二弹火爆来袭中 这波是单链表的内容整理,废话不多说,上小龙虾呀(又到了龙虾季节了,哎,口水直流了~~) beautiful的分割线 文章目录 第二弹火爆来袭中这波是单链表的内容整理,废话不多说,上小龙虾呀(又到了…...

水产亚硝酸盐偏高解决办法,饮用水亚硝酸盐超标
使用常规的离子交换树脂处理含硫酸盐水中的硝酸盐是困难的。因为树脂几乎交换了水中的所有的硫酸盐后,才与水中的硝酸盐交换。也就是说,硫酸盐的存在会降低树脂对硝酸盐的去除能力。采用Tulsimer A-62MP除硝酸盐树脂优先交换硝酸盐,对硝酸盐的…...

linux 设备树详解
设备树 描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等。 树的主干就是系统总线&#x…...

STM32 学习笔记_7 定时器中断:输出比较
输出比较 电机相关比较重要。 OC Output Compare(IC 是输入捕获,CC代指这两个单元),用于输出一定频率和占空比的PWM波形。 右下角四个就是CCR。只有通用计时器和高级计时器有,共用一个cnt计数器,高级计数…...