OS_虚拟内存@请求分页系统@驻留集@内存分配策略

news2024/11/24 20:32:33

文章目录

  • OS_虚拟内存@请求分页系统@驻留集@内存分配策略
    • 请求分页系统
      • 页表机制
      • 缺页中断机构
      • 地址变换机构
  • 页框分配
    • 驻留集
    • 分配策略
      • 固定分配
      • 可变分配
    • 置换策略
      • 局部置换
      • 全局置换
    • 策略组合
      • 固定分配局部置换
      • 可变分配全局置换
      • 可变分配局部置换🎈

OS_虚拟内存@请求分页系统@驻留集@内存分配策略

请求分页系统

  • 请求分页系统(Demand paging) 建立在基本分页系统(memory paging)基础之上
    • 为了支持虚拟存储器功能而增加了
    • 请求调页功能
    • 页面置换功能
  • 请求分页是目前最常用的一种实现虚拟存储器的方法 🎈
  • 在请求分页系统中
    • 只要求将当前需要的一部分页面装入内存,便可以启动作业运行
    • 在作业执行过程中,当所要访问的页面不在内存中时,再通过调页功能将其调入,同时还可通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间
  • 为了实现请求分页,系统必须提供一定的硬件支持
  • 除了需要一定容量的内存及外存的计算机系统,还需要有
    • 页表机制
    • 缺页中断机构
    • 地址变换机构

页表机制

  • 请求分页系统的页表机制不同于基本分页系统,请求分页系统在一个作业运行之前不要求全部一次性调入内存

  • 因此在作业的运行过程中,必然会出现要访问的页面不在内存中的情况,

  • 如何发现和处理这种情况是请求分页系统必须解决的两个基本问题

    • 为此,在请求页表项中增加了4个字段

    • 请求分页系统中的页表项

      • 页号
      • 物理块号
      • 状态位P
      • 访问字段A
      • 修改位M
      • 外存地址O
    • 增加的4个字段说明如下:(了解完置换算法后再来学习这部分)

      • 状态位P

        • 调入状态,用于指示该页是否已调入内存,供程序访问时参考
      • 访问字段A

        • 访问计数(时)器:用于记录本页在一段时间内被访问的次数
        • 或记录本页最近已有多长时间未被访问,供置换算法换出页面时参考 (比如LRU算法用到计数器)
      • 修改位M

        • 即,脏位,标识该页在调入内存后是否被修改过,以确定页面置换时是否写回外存
      • 外存地址O

        • 用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考

缺页中断机构

  • 在请求分页系统中,每当所要访问的页面不在内存中时,便产生一个缺页中断,请求操作系统将所缺的页调入内存 此时应将缺页的进程阻塞(调页完成唤醒),
    • 若内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中的相应页表项,
    • 若此时内存中没有空闲块,则要淘汰某页
      • 若被淘汰页在内存期间被修改过,则要将其写回外存)
    • 缺页中断作为中断,同样要经历诸如保护CPU环境、分析中断原因、转入缺页中断处理程序、恢复CPU环境等几个步骤
      • 但与一般的中断相比,它有以下两个明显的区别:
        • 指令执行期间而非一条指令执行完后产生和处理中断信号,属于内部异常
        • 一条指令在执行期间,可能产生多次缺页中断

地址变换机构

  • 请求分页系统中的地址变换机构,是在分页系统地址变换机构的基础上,为实现虚拟内存,又增加了某些功能而形成的
    • 如产生和处理缺页中断,
    • 从内存中换出一页的功能
  • 在这里插入图片描述

文章目录

  • OS_虚拟内存@请求分页系统@驻留集@内存分配策略
    • 请求分页系统
      • 页表机制
      • 缺页中断机构
      • 地址变换机构
  • 页框分配
    • 驻留集
    • 分配策略
      • 固定分配
      • 可变分配
    • 置换策略
      • 局部置换
      • 全局置换
    • 策略组合
      • 固定分配局部置换
      • 可变分配全局置换
      • 可变分配局部置换🎈

页框分配

驻留集

  • 对于分页式的虚拟内存,在进程准备执行时,不需要也不可能把一个进程的所有页都读入主存。
  • 因此,操作系统必须决定读取多少页,即决定给特定的进程分配几个页框。
  • 给一个进程分配的物理页框的集合就是这个进程的驻留集🎈
    • 需要考虑以下几点:
    • 1)分配给一个进程的页框越少,驻留在主存中的进程就越多,从而可提高CPU的利用率。
    • 2)若一个进程在主存中的页面过少,则尽管有局部性原理,缺页率仍相对较高
    • 3)若分配的页框过多,则由于局部性原理,对该进程的缺页率没有太明显的影响。

分配策略

  • 在请求分页系统中,可以采取
    • 两种分配策略

固定分配

  • 分配给进程的内存物理块数保持不变

可变分配

  • 分配给进程的内存物理块数可以变化

置换策略

  • 两种置换策略

    • 全局置换
    • 局部置换

局部置换

  • 所谓局部置换,是指如果进程在运行中发生缺页
    • 则只能从分配给该进程在内存的页面中选出一页换出,然后再调入一页,
    • 以保证分配给该进程的内存空间不变。🎈

全局置换

  • 所谓全局置换,是指如果进程在运行中发生缺页,系统从空闲物理块队列中取出一块分配给该进程,并将所缺页调入。

策略组合

  • 分配策略和置换策略两者组合,共有三种可能的策略组合

固定分配局部置换

  • 内存块数-固定分配-局部置换

  • 它为每个进程分配一定数目的物理块,在整个运行期间都不改变。

  • 实现这种策略时,难以确定应为每个进程分配的物理块数目:

    • 太少会频繁出现缺页中断,
    • 太多又会降低 CPU和其他资源的利用率。
  • 🎈固定分配要求进程的内存物理块不变

    • 所以不可以配合全局置换(这试图改变物理块数,导致矛盾)

可变分配全局置换

  • 这是最易于实现的物理块分配和置换策略,

  • 它为系统中的每个进程分配一定数目的物理块

    • 在进程运行期间,根据情况适当的增加/减少分配给进程的内存物理块

    • 操作系统自身保持一个空闲物理块队列

  • 这种方法比固定分配局部置换更加灵活,可以动态增加进程的物理块,但也存在弊端,

    • 如它会盲目地给进程增加物理块,从而导致系统多道程序的井发能力下降
    • 先为每个进程分配一定数目的物理块,在进程运行期间可根据情况适当地增加或减少。

可变分配局部置换🎈

  • 它为每个进程分配一定数目的物理块
    • 当某个进程发生缺页时,只允许从该进程在内存的页面中选出一页换出,因此不会影响其他进程的运行
    • 若进程在运行中频繁地缺页,则系统再为该进程分配若干物理块,直至该进程缺页率趋于适当程
      度;
    • 反之,若进程运行中的缺页率特别低,则可适当减少分配给该进程的物理块。
  • 比起可变分配全局置换,这种方法不仅可以动态增加进程物理块的数量,还能动态减少进程
    物理块的数量,在保证进程不会过多地调页的同时,也保持了系统的多道程序井发能力。
  • 当然它需要更复杂的实现,也需要更大的开销,但对比频繁地换入/换出所浪费的计算机
    资源,这种牺牲是值得的。

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

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

相关文章

docker中安装并启动rabbitMQ

docker中安装并启动rabbitMQ1、安装rabbitMQ1.1、拉取镜像1.2、启动容器实例1.3、开启web界面管理插件1.4、浏览器访问 rabbitMQ2、解决Docker部署rabbitmq遇到的如下两个问题:2.1、访问交换机时报错,Management API returned status code 5002.2、访问c…

003. 电话号码的字母组合——回溯算法

1.题目链接: 17. 电话号码的字母组合 2.解题思路: 2.1.题目要求: 给定一个仅包含数字 2-9 的字符串 digits ,返回所有它能表示的字母组合。 数字和字母的关系: 例子: 输入:"23" …

测试用例中遇到的常见问题

1、测试用例是什么? 测试用例的设计就是如何覆盖所有软件表现出来的状态,即在满足输入/输出的一组条件下,软件运行时一系列有次序的、受控制的状态变化过程 2、设计用例是否有必要? 将测试内容记录下来,避免了在执行的时候部分测试点被遗…

链式二叉树

链式二叉树一,相关函数接口实现1,前序遍历2,中序遍历3,后序遍历4,节点个数5,叶子结点个数6,树的高度7,第K层结点个数8,查找值为X的结点9,通过前序遍历数组构建…

m基于NSGAII优化算法的微网系统的多目标优化规划matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 NSGA-II是基于的非支配排序的方法,在NSGA上进行改进,也是多目标进化优化领域一个里程碑式的一个算法。 NSGA-Ⅱ算法是 Srinivas 和 Deb 于 2000 年在 NSGA 的基础上提出的&#xff0c…

社区系统项目复盘-3

文章目录过滤敏感词发布帖子帖子详情添加评论私信列表发送私信统一处理异常统一记录日志基于Springboot的核心功能实现 包括自定义前缀树过滤敏感词;使用异步请求的方式发布帖子;查看帖子详情;添加评论时需要同时增加评论的数据和修改帖子的评…

电源设备设计

目录 一、通信电源概述 (1) (2)通信电源系统组成 (3)通信电源供电方式 集中供电示意图 分散供电示意图 USP供电示意图 二、交流供电系统设计 1、交流供电--市电引入 交流低压供电示意图 2、交流供电--UPS &…

Innodb是如何运转的

Innodb是如何运转的Innodb体系架构后台线程Master ThreadIO ThreadPurge ThreadPage Cleaner Thread内存缓存池LRU ListFree Listunzip_LRUflush list重做日志缓冲(redo log buffer)额外的内存池checkpoint技术Sharp CheckpointFuzzy CheckpointMaster Thread的工作方式Innodb …

SparkMlib 之逻辑回归及其案例

文章目录什么是逻辑回归?逻辑回归的优缺点逻辑回归示例——预测回头客逻辑回归示例——预测西瓜好坏逻辑回归示例——预测垃圾邮件什么是逻辑回归? 逻辑回归是一种流行的预测分类响应的方法。它是预测结果概率的广义线性模型的特例。在逻辑回归中&#…

EasyRecovery2022中文版电脑端数据恢复软件

EasyRecovery2023数据恢复软件是一款文件恢复软件,能够恢复内容类型非常多,包括办公文档、文件夹、电子邮件、照片、音频等一些常用文件类型都是可以进行恢复,操作非常简单,只需要将存储设备连接到电脑上,运行EasyReco…

【全志T113-S3_100ask】16-1 linux系统驱动四线电阻屏(tpadc、tslib)

【全志T113-S3_100ask】16-1 linux系统使用TPADC驱动四线电阻屏(rtp、tslib)(一)背景(二)焊接鬼才(三)解析input上报事件(四)C语言解析input上报事件&#xf…

大数据技术——Flume简介安装配置使用案例

文章目录1. Flume 概述1.1 Flume简介1.2 Flume的特点1.3 Flume的基础架构2. Flume安装配置2.1 下载地址2.2 安装部署3. Flume 使用案例3.1 实时监控单个追加文件3.2 实时监控目录下多个新文件3.3 实时监控目录下的多个追加文件1. Flume 概述 1.1 Flume简介 Flume是一种可配置、…

【Linux】Linux的环境变量(PATH、env、子进程继承环境变量等)

文章目录环境变量1、从一个小案例认识环境变量PATH2、常用的环境变量相关指令与系统调用3、子进程如何继承环境变量的?4、测试其它环境变量环境变量 1、从一个小案例认识环境变量PATH 我们在shell中通过file查看文件信息,看到我们常使用的指令都是可执…

C++ 类的静态成员详解

目录 前言 一、类的静态成员 1.static关键字 2.静态成员变量 3.静态成员函数 二、程序样例 1.程序演示 2.程序截图 总结 前言 本文记录C中 static 修饰类成员成为静态成员,其中包括静态成员类别、作用和程序演示。 嫌文字啰嗦的可直接跳到最后的总结。 一、类的静…

特征提取 - 骨架、中轴和距离变换

目录 1. 介绍 骨架 skeleton 中轴变换 Medial axis transformation 距离变换 distance transform 2. 距离变换的代码实现 distanceTransform 函数介绍 normalize 函数介绍 取局部最大值 完整代码 3. comparation 1. 介绍 骨架 skeleton 骨架的定义:就是…

【毕业设计】33-基于单片机的直流电机的转速检测与控制设计(原理图工程+PCB工程+源代码工程+仿真工程+答辩论文)

typora-root-url: ./ 【毕业设计】33-基于单片机的直流电机的转速检测与控制设计(原理图工程PCB工程源代码工程仿真工程答辩论文) 文章目录typora-root-url: ./【毕业设计】33-基于单片机的直流电机的转速检测与控制设计(原理图工程PCB工程源…

盘点国内主流数字孪生厂商!你了解几家?

在国内,主流的数字孪生解决方案厂商包括华龙迅达、精航伟泰、羚数智能、力控科技、华力创通、同元软控、优也科技、51world、卡奥斯、摩尔元数、易知微、木棉树软件等。由于中国数字孪生市场仍处于早期发展阶段,且受限于建模、仿真和基于数据融合的数字线…

基于单RGB相机的全新三维表示方法|NeurIPS 2022

随着深度学习的发展,基于单张RGB图像的人体三维重建取得了持续进展。 但基于现有的表示方法,如参数化模型、体素栅格、三角网格和隐式神经表示,难以构筑兼顾高质量结果和实时速度的系统。 针对上述问题,天津大学团队联合清华大学…

Linux用户管理

文章目录一. 引子二. 用户管理1. 用户切换2. 注销用户3. 添加用户4. 设置用户密码5. 删除用户6. 查询用户信息三. 用户组管理1. 新增用户组2. 新增用户时添加组3. 修改用户的组四. 用户和组相关文件1. /etc/passwd2. /etc/shadow3. /etc/group一. 引子 Linux是一个多用户、多任…

【JavaScript作用域】

JavaScript作用域1 本节目标2 作用域2.1 作用域概述2.2 全局作用域2.3 局部作用域3 变量的作用域3.1 变量作用域的分类3.2 全局变量3.3 局部变量3.4 从执行效率看全局变量与局部变量3.5 JS没有块级作用域4 作用域链1 本节目标 说出JavaScript的两种作用域区分全局变量和局部变…