3.2_2 请求分页管理方式

2024-03-15 22:52
文章标签 管理 方式 3.2 请求分页

本文主要是介绍3.2_2 请求分页管理方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 3.2_2 请求分页管理方式
    • (一)页表机制
    • (二)缺页中断机构
    • (三)地址变换机构
  • 总结

3.2_2 请求分页管理方式

  请求分页存储管理与基本分页存储管理的主要区别:

  1.在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。

  功能一:操作系统要提供请求调页功能,将缺失页面从外存调入内存。

  2.若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存

  功能二:操作系统要提供页面置换的功能,将暂时用不到的页面换出外存。

image-20240315203312613

  注意与基本分页存储管理的页表机制、地址变换流程进行学习。

(一)页表机制

  与基本分页管理相比,请求分页管理中,为了实现“请求调页”,操作系统需要知道每个页面是否已经调入内存。如果还没调入,那么也需要知道该页面在外存中存放的位置。

  当内存空间不够时,要实现“页面置换”,操作系统需要通过某些指标来决定到底换出哪个页面。有的页面没有被修改过,就不用再浪费时间写回外存。有的页面修改过,就需要将外存中的旧数据覆盖。因此,操作系统也需要记录各个页面是否被修改过的信息。

  因此,请求分页管理方式的页表,就要增加额外的字段,用来记录这些信息。

image-20240315204427732

  有的地方也会把请求分页存储管理当中的页表叫做“请求页表”;把基本分页存储管理当中的页表叫做“基本页表”、“页表”。

  这也是实现请求调页、实现页面置换的数据结构的基础。

(二)缺页中断机构

image-20240315204635351

  假设此时要访问逻辑地址 = (页号, 页内偏移量) = (0, 1024)

  在请求分页系统中,每当要访问的页面不在内存时(即:状态位 = 0),便产生一个缺页中断,然后由操作系统的缺页中断处理程序处理中断

  此时缺页的进程阻塞,放入阻塞队列,调页完成后再将其唤醒,放回就绪队列。

image-20240315205006877

  如果内存中有空闲块,则为进程分配一个空闲块,将所缺页面装入该块,并修改页表中相应的页表项。

  如果内存中没有空闲块,则由页面置换算法选择一个页面淘汰,若该页面在内存期间被修改过,则要将其写回外存。未修改过的页面不用写回外存。

image-20240315205647180

  比如,0号页想调入内存,但此时内存中已经没有空闲块了。最终选择2号页进行淘汰,由于2号页的修改位 = 1,因此需要将其写回外存,即由内存中的c号块写回外存中的z号块。之后,内存中的c号块空闲,0号页就可以调入了。

  同样地,在执行相关操作时需要对请求页表进行更新。

  缺页中断是因为当前执行的指令想要访问的目标页面未调入内存而产生的,因此属于内中断

image-20240315210145058

  一条指令在执行期间,可能产生多次缺页中断。(如copy A to B,即将逻辑地址A中的数据复制到逻辑地址B,而A、B属于不同的页面,则有可能产生两次中断)

(三)地址变换机构

  请求分页存储管理与基本分页存储管理的主要区别:

  在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。

  操作系统要提供请求调页功能,将缺失页面从外存调入内存。

  若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存

  操作系统要提供页面置换的功能,将暂时用不到的页面换出外存。

image-20240315210922796

  在进行逻辑地址变换时,需要多做一些什么工作:

  新增步骤1:请求调页(要对该页表项“是否在内存”进行判断);

  新增步骤2:页面置换(需要调入页面,但没有空闲内存块时进行);

  新增步骤3:需要修改请求页表中新增的表项。

image-20240315211242447

  第一步,检查页号的合法性,看一下页号是否越界。

  第二步,查询快表中有没有这个页号对应的页表项。若快表命中,则可以直接得到最终的物理地址。

  第三步,若快表没有命中,就需要查询内存当中的“慢表”,在找到对应的页表项之后,需要检查这个页面此时是否已经在内存当中。如果这个页面此时没有在内存当中的话,那么缺页中断机构会产生一个缺页中断的信号,之后就由操作系统的缺页中断处理程序进行处理,包括调页、页面置换一系列的事情。当然,随着处理,页表中的数据也需要更新。

  注意:存在于快表中的页面一定是在内存中的。若某个页面被换出外存,则快表中的相应表项也要删除,否则可能访问错误的页面。

  提示:请求分页的地址变换,其实只是在基本分页存储管理之上又新增了几个步骤(或者有些步骤有所区别),但大体上还是相似的。所以只需要注意这些有区别的地方就可以了。

  需要注意的细节

  1.只有“写指令”才需要修改“修改位”。并且,一般来说只需修改快表中的数据,只有要将快表项删除时才需要写回内存中的慢表。这样可以减少访存次数。

  2.和普通的中断处理一样,缺页中断处理依然需要保留CPU现场。

  3.需要用某种“页面置换算法”来决定一个换出页面(下节内容)。

  4.换入/换出页面都需要启动慢速的I/O操作,可见,如果换出/换出太频繁,会有很大的开销。

  5.页面调入内存后,需要修改慢表,同时也需要将表项复制到快表中。

  在具有快表机构的请求分页系统中,访问一个逻辑地址时,若发生缺页,则地址变换步骤是:

  查快表(未命中)——查慢表(发现未调入内存)——调页(调入的页面对应的表项会直接加入快表)——查快表(命中)——访问目标内存单元。

  提示:重点关注三件事情,①什么时候请求调页?②什么时候页面置换?③同时要对哪些数据进行更新?——搞清楚这三件事情,就可以掌握其精髓了。

总结

image-20240315214708729

这篇关于3.2_2 请求分页管理方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813529

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应