【操作系统】内存管理——页面分配策略(个人笔记)

news2024/7/2 21:09:53

学习日期:2024.6.28

内容摘要:页面分配策略和内存映射文件,内存映射文件


页面分配置换策略

基本概念

驻留集,指请求分页存储管理中给进程分配的物理块的集合,在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。

若驻留集太小,会导致缺页频繁,系统要花大量时间来处理缺页,实际用于进程推进的时间很少;若驻留集太大,又会导致多道程序并发度下降,资源利用率降低。

固定分配:操作系统为每个进程分配固定数目的物理块,在进程运行期间不再改变。

可变分配:先为每个进程分配一定数目的物理块,在进程运行期间根据情况适当的增加或减少。

局部置换:发生缺页时只能选进程自己的物理块进行置换。

全局置换:可以将操作系统保留的空闲物理块分配给缺页进程,也可以将别的进程持有的物理块置换到外存,再分配给缺页进程。

两两组合有三种策略,不存在固定分配全局置换策略,原因如图。

具体的页面分配置换策略

固定分配局部置换:

操作系统为每个进程分配固定数目的物理块,在进程运行期间不再改变,若进程在运行中发生缺页, 则只能从该进程在内存中的页面选出一页换出,然后再调入需要的页面。

缺点:很难在刚开始就确定应该为某个进程分配多少个物理块才算合理

可变分配全局置换

先为每个进程分配一定数目的物理块。操作系统会保持一个空闲物理块队列,当某进程发生缺页时,从空闲物理块中取出一块分配给该进程;若已无空闲块,则选择一个未锁定的页面换出外存,再将该物理块分配给缺页的进程。采用这种策略时,只要某进程缺页,就会获得新的物理块,仅当空闲物理块用完时,系统才选择一个未锁定的页面调出。被选择调出的页都可能是系统中任何一个进程中的页,因此这个被选中的进程拥有的物理块会减少,缺页率会增加

可变分配局部置换

先为每个进程分配一定数目的物理块。当某进程发生缺页时,只允许从该进程自己的物理块中选出一个进行换出外存。如果进程在运行中频繁的缺页,系统会为该进程多分配几个物理块,直到该进程缺页率趋于适当程度。反之,如果该进程在运行中缺页率非常低,则可适当减少分配给该进程的物理块。

区别!

可变分配全局置换:只要缺页就分配新的物理块。

可变分配局部置换:根据发生缺页的频率来动态的增加或减少进程的物理块。

调入页面的策略

预调页策略:根据局部性原理,一次调入若干个相邻的页面可能比一次调入一个页面更高效,但如果提前调入的页面中大多数都没被访问过,则又是低效的。因此可以预测不久之后可能需要访问的页面并预先调入内存。但目前预测的成功率只有50%左右,故这种策略主要用于进程的首次调入,由程序员指出应该先调入哪些部分。(运行前调入)

请求调页策略:进程在运行期间发生缺页时才将所缺页面调入内存。由这种策略调入的页面一定会被访问到,但由于每次只能调入一页,每次都要进行磁盘的I/O操作,开销较大。

若系统拥有足够的对换区空间,页面的调入调出都是在内存和对换区之间进行的,这样可以保证页面的调入、调出速度很快。在进程运行前,需将进程相关的数据从文件区复制到对换区。

若空间不足,凡是不会被修改的数据都直接从文件区调入,因为这些页面不会被修改,因此换出时不必写回磁盘,下次需要时再从文件区调入即可。对于可能被修改的部分,换出时需要写回磁盘对换区。

抖动(颠簸)现象

刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出外存,页面在内外存之间来回“反复横跳”,这种情况称为抖动(或颠簸)。产生抖动的主要原因是进程频繁访问的页面数目高于可用的物理块数。

显然我们是不希望这种行为发生的,分配给进程的物理块太少会发生抖动现象,太多又会降低系统整体的并发度,降低某些资源的利用率,为了研究应该为每个进程分配多少个物理块,提出了“工作集”的概念。

工作集:进程在某段时间间隔内,实际访问的页面的集合。

驻留集:请求分页存储管理中给进程分配的内存块的集合。

一般来说,驻留集的大小不能小于工作集的大小,否则进程运行过程中会频繁缺页。


 内存映射文件

操作系统向上层程序员提供的

传统的文件访问方式

①open系统调用——打开文件

②seek系统调用——将读写指针移到某个位置

③read系统调用——从读写指针的位置读入若干数据(磁盘读入内存)

④write系统调用——将内存中的指定数据写回磁盘(根据读写指针确定要写回什么位置)

内存映射文件的访问方式

①open系统调用——打开文件

②mmap系统调用——将文件映射到进程的虚拟地址空间

接下来,可以以访问内存的方式访问文件数据,文件数据的读入、写出由操作系统自动完成。

比如说当读到2时,发生缺页异常,操作系统会自动把2部分的数据读入主存,其它同理。在进程关闭文件后,操作系统会自动将文件中被修改的数据写回磁盘。

多个进程映射同一个文件,可以共享一个物理内存,用页表实现映射。

优点:①程序员编程更简单,已经建立映射的文件,只需按访问内存的方式读写即可。

          ②文件数据的读入/写出完全由操作系统负责,I/O效率可以由操作系统负责优化。


 内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1880272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker harbor仓库搭建,主从库复制

背景:需要主机安装docker-ce和docer-compose #1.安装相关依赖. yum install -y yum-utils device-mapper-persistent-data lvm2 #2.下载官方的docker yum源文件 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo …

专题三:Spring容器ApplicationContext初始化

前面我们构建好了Spring源码,接下来肯定迫不及待来调试啦,来一起看看大名鼎鼎ApplicationContext 新建模块 1、基础步骤 2、重要文件 build.gradle plugins {id java }group org.springframework version 5.2.6.RELEASErepositories {mavenCentral(…

DDD学习笔记五

模型引力场:聚合 强作用力体现: 某个领域模型是另一些模型存在的前提,没有前者,后者就失去了生存的意义。 一组领域模型之间存在关联的领域逻辑,任何时候都不能违反。 一组领域模型必须以一个完整的、一致的状态呈现给…

专业指南:U盘数据恢复全攻略

一、引言:U盘数据恢复的重要性 在信息化日益发展的今天,U盘已成为我们日常生活中不可或缺的存储设备。然而,由于各种原因,U盘中的数据可能会面临丢失的风险。U盘数据恢复技术便应运而生,它旨在帮助用户找回因误删除、…

多平台自动养号【开心版】偷偷使用就行了!

大家好,今天我无意间发现了一款【多平台自动养号工具】,看了一下里面的功能还是挺全面的,包含了【抖音,快手,小红薯】还有一些截流功能 虽然这款工具功能强大,但美中不足的是需要付费的。但别担心&#xf…

线性结构之栈结构

栈是一种只能从一端存取数据并且遵循“后进先出”原则的线性存储结构。这句话中体现了栈结构的三个特征——只能从一端存取数据,遵循“后进先出”的原则和线性存储结构。因此如果我们要实现一个栈结构的数据结构,就必须要满足这三点要求。提到线性结构&a…

构建高效业财一体化管理体系

构建高效业财一体化管理体系 业财一体化战略意义 提升决策质量 强化数据支撑:通过整合业务与财务数据,为决策提供准确、实时的信息基础,确保分析的深度与广度。促进业务与财务协同:打破信息孤岛,实现业务流程与财务管…

最流行的文件同步软件

PanguFlow是一款免费的文件同步软件,他支持文件的全量同步、支持文件的增量同步、支持文件的实时备份,支持双向同步,支持三向同步甚至多向同步,支持无人值守运行。 PanguFlow数据同步软件下载地址https://pan.baidu.com/s/1GLjFR…

博客都在使用的打字机效果,居然这么简单?

效果展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>body …

在Ubuntu下将pulseaudio换成pipewire

1、为什么要将pulseaudio换成pipewire&#xff1f; PulseAudio 是一个成熟且广泛使用的音频服务器&#xff0c;适合一般桌面音频需求&#xff0c;但在性能和延迟上有一定限制。PipeWire 是一个更现代的解决方案&#xff0c;旨在统一音频和视频处理&#xff0c;提供高性能和低延…

【TB作品】密码锁,ATMEGA128单片机,Proteus仿真

题目 5 &#xff1a;密码锁 使用单片机实现简易密码锁&#xff0c;通过输入密码&#xff0c;实现门锁的开启&#xff08;控制继电器&#xff09;。 具体要求如下&#xff1a; &#xff08;1&#xff09;当输入正确密码后&#xff0c;继电器开启。 &#xff08;2&#xff09;当三…

Java web应用性能分析之【prometheus监控K8s指标说明】

常规k8s的监控指标 单独 1、集群维度 集群状态集群节点数节点状态&#xff08;正常、不可达、未知&#xff09;节点的资源使用率&#xff08;CPU、内存、IO等&#xff09; 2、应用维度 应用响应时间 应用的错误率 应用的请求量 3、系统和集群组件维度 API服务器状态控…

springcloud第4季 seata报could not find any implementation for class

一 问题说明 1.1 描述 在使用seata2.0alibaba-cloud 2022.0.0.0-RC2nacos 2.2.3 模拟下订单分布式事务场景&#xff0c;出现如下问题&#xff1a;java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 查看服务端&#xff1a;java.util.ServiceCo…

【每日刷题】Day78

【每日刷题】Day78 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1608. 特殊数组的特征值 - 力扣&#xff08;LeetCode&#xff09; 2. 1385. 两个数组间的距离值 - …

5.x86游戏实战-CE定位基地址

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;4.x86游戏实战-人物状态标志位 上一个内容通过CE未知的初始值、未变动的数值、…

在我们的大数据平台(XSailbaot)上进行企业级数据建模的思路

1. 背景 笔者所在的公司是差不多二十年前搞CIM&#xff08;公共信息模型的&#xff09;起家的。当时公司的前辈搞了基于CIS协议的模型服务器、数据服务器、模式编辑器等&#xff0c;形成了一套基于公共信息模型建模的平台系统。其中可视化建模&#xff0c;建好了模式类以后&am…

《昇思25天学习打卡营第17天 | 昇思MindSporeCycleGAN图像风格迁移互换》

17天 本节学习了CycleGAN图像风格迁移互换。 CycleGAN即循环对抗生成网络&#xff0c;该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。该模型一个重要应用领域是域迁移&#xff0c;可以通俗地理解为图像风格迁移。其实在 CycleGAN 之前&a…

力扣每日一题 6/30 记忆化搜索/动态规划

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 494.目标和【中等】 题目&#xff1a; 给你一个非负整数数组 nums 和一个…

⭐ UI自动化工具轻松实现微信消息提醒 ⚡

&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f; 演示效果 &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f; &#x1f605;&#x1f605;&#x1f605;&#x1f605;&#x1f605;&#x1f605; Python安装…

nvm安装以及idea下vue启动项目过程和注意事项

注意1&#xff1a;nvm版本不要太低&#xff0c;1.1.7会出现下面这个问题&#xff0c;建议1.1.10及其以上版本 然后安装这个教程安装nvm和node.js 链接: nvm安装教程&#xff08;一篇文章所有问题全搞定&#xff0c;非常详细&#xff09; 注意2&#xff1a;上面的教程有一步骤…