当前位置: 首页 > news >正文

操作系统(14)请求分页

前言

       操作系统中的请求分页,也称为页式虚拟存储管理,是建立在基本分页基础上,为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能的一种内存管理技术。

一、基本概念

  1. 分页:将进程的逻辑地址空间分成若干个大小相等的页,同时也将物理内存空间分成若干个大小相等的页框(或帧)。每个页和页框都有一个唯一的编号,称为页号和框号。
  2. 页表:页表是操作系统用于记录进程的逻辑页号与物理页框号之间映射关系的表。在请求分页系统中,页表项通常还包含其他信息,如状态位、访问字段、修改位和外存地址等。

二、工作原理

  1. 地址变换

    • 当进程访问某个逻辑地址时,系统首先将该逻辑地址分解为页号和页内偏移量。
    • 然后,根据页号查找页表,获得该页的描述信息。
    • 如果该页已经在内存中(即状态位为0),则直接利用页框号和页内偏移量计算出物理地址,并进行访问。
    • 如果该页不在内存中(即状态位为1),则产生缺页中断,请求操作系统将该页调入内存。
  2. 缺页中断处理

    • 当产生缺页中断时,操作系统会暂停当前进程的执行,并检查内存中是否有空闲页框。
    • 如果有空闲页框,则分配一个页框给该页,并将其从外存调入内存。
    • 如果没有空闲页框,则根据某种页面置换算法选择一个页面将其置换出内存,然后将所需页面调入内存。
    • 更新页表项中的相关信息,如页框号、状态位等。
    • 最后,恢复当前进程的执行,并继续访问该页。
  3. 页面置换算法

    • 页面置换算法用于在内存空间不足时选择哪个页面被置换出内存。常用的页面置换算法包括FIFO、LRU、CLOCK等。
    • FIFO算法按照页面进入内存的先后顺序进行置换。
    • LRU算法选择最近最少被使用的页面进行置换。
    • CLOCK算法则结合了FIFO和LRU的特点,通过环形链表和访问位来实现页面的置换。

三、优点与缺点

  1. 优点

    • 有效地解决了外部碎片问题,提高了内存的利用率。
    • 提供了虚拟存储器,使得进程可以访问比物理内存更大的地址空间。
    • 提高了多道程序的并发运行能力。
  2. 缺点

    • 增加了硬件成本,如需要额外的硬件支持地址转换机构、缺页中断机构和页面置换算法等。
    • 可能因逻辑地址空间过大或多道程序的个数过多而造成系统抖动现象。
    • 虽然消除了外部碎片,但进程的最后一页还存在内部碎片问题。

四、实现与应用

  1. 实现方式:请求分页系统通常通过硬件和软件的结合来实现。硬件方面需要提供页表基址寄存器、地址转换机构、缺页中断机构等;软件方面则需要实现页面置换算法、缺页中断处理程序等。
  2. 应用领域:请求分页系统广泛应用于各种操作系统中,如Windows、Linux等。它使得操作系统能够更好地管理内存资源,提高系统的性能和稳定性。同时,在数据库系统、云计算等领域也有广泛的应用。

总结 

       综上所述,请求分页是操作系统中一种重要的内存管理技术。它通过分页和请求调页的方式实现了虚拟存储器的功能,提高了内存的利用率和系统的并发运行能力。然而,它也存在一些缺点和限制,需要在实际应用中根据具体情况进行权衡和选择。

 结语       

把别人的经验变成自己的

他的本事就大了

!!!

http://www.lryc.cn/news/505307.html

相关文章:

  • uniapp navigateTo、redirectTo、reLaunch等页面路由跳转方法的区别
  • 模型 A/B测试(科学验证)
  • 谷歌发布升级版AI视频生成器Veo 2与图像生成器Imagen 3
  • 快速掌握源码部署Filebeat
  • C++ 哈希表封装unordered_map 和 unordered_set
  • pymysql 入门
  • Leecode刷题C++之形成目标字符串需要的最少字符串数①
  • Linux应用开发————mysql数据库
  • 4_使用 HTML5 Canvas API (3) --[HTML5 API 学习之旅]
  • docker build次数过多,导致磁盘内存不足:ERROR: no space left on device
  • LDO和DC-DC的区别、DCDC和LDO主要指标
  • LeetCode hot100-81
  • RTMP、RTSP、RTP、HLS、MPEG-DASH协议的简介,以及应用场景
  • 力扣-图论-15【算法学习day.65】
  • “AI智慧数字孪生系统:开启智能新纪元
  • 54、库卡机器人轴的软限位设置
  • 基于MATLAB 的数字图像处理技术总结
  • Android运行低版本项目可能遇到的问题
  • window.getSelection() 获取划线内容并实现 dom 追随功能
  • 【人工智能】基于Python的自然语言处理:深入实现文本相似度计算
  • 布局、组成部分
  • Go, Jocko, Kafka
  • CANoe 报文仿真
  • 升级thinkphp8最新版本,升级后发现版本不变
  • 工业大数据分析算法实战-day07
  • 六、nginx负载均衡
  • 鸿蒙项目云捐助第十一讲鸿蒙App应用的捐助成功自定义对话框组件实现
  • 华为云联合中国信通院发布首个云计算智能化可观测性能力成熟度模型标准
  • 如何评估呼叫中心大模型呼出机器人的使用效果?
  • ARM/Linux嵌入式面经(六一):联合汽车电子