【OS笔记25】:页的共享和保护、页式虚拟存储管理

文章目录

1. 页的共享和保护

1. 页的共享

当若干进程运行相同的程序时(例如多个用户同时运行一个编辑器程序),共享代码变得非常重要。

  • 实现方法 :一种有效的方法是使相关进程在逻辑空间中的页面,通过各自的页表指向相同的内存物理页面。这样可以避免在内存中出现同一页面的两个副本,大大节省了内存空间。
  • 共享原则 :通常,只有只读页面(如纯代码段)可以共享,而数据页面往往是进程私有的,不能共享。
2. 存储保护

在分页管理机制下,存储保护通过两种方式实现:

  • 地址越界保护

    • 与分区管理中使用上、下界寄存器不同,分页管理中的越界保护是由地址变换机构自动完成的。
    • 在地址转换时,硬件会根据页表长度寄存器 (PTLR) 的值,来判断逻辑地址中的页号是否超出了页表长度。如果页号大于或等于页表长度,则产生越界中断。
  • 存取控制保护

    • 可以在页表项 中增加相应的保护位来实现,例如设置"只读"、"可读写"等权限。每次访问时,硬件会检查操作类型是否与保护位设定的权限相符。

静态分页式存储管理的优缺点

优点:
  1. 作业不必作为整体装入内存连续区域:实现了离散分配,解决了外部碎片问题。
  2. 便于多道程序设计,提高资源利用率:内存管理更灵活,可以容纳更多进程并发执行。
  3. 页面大小和块的大小相等,便于主存管理:管理和分配都以固定大小的块为单位,非常规整和简单。
缺点:
  1. 地址转换增加系统开销:每次访存都需要查表,增加了时间开销(虽可通过快表缓解)。
  2. 仍存在内存碎片(内部碎片):一个进程的最后一页往往不能被充分使用,造成空间浪费。
  3. 页表占用存储空间:对于地址空间大的进程,页表本身可能会非常庞大,占用可观的内存。
  4. 内存的扩充问题:作业的地址空间受内存容量限制,无法运行超过物理内存大小的程序。
  5. 共享困难:页由系统划分,对用户透明,用户很难根据逻辑意义(如函数、变量)实现共享。

2. 页式虚拟存储管理

为了解决静态分页中作业大小受物理内存限制的问题,在分页管理的基础上引入了虚拟存储技术。

  • 基本思想 :在程序运行时,仅将部分页面装入内存 。在执行过程中,若所需页面不在内存,则发生缺页中断 (Page Fault),系统根据一定的算法,将所需页面调入内存。

与基本分页管理相比,需要重点解决以下新问题:

  • 如何发现缺页情况,发现后如何处理?
  • 调入时若内存中无空闲页,如何淘汰(置换)内存中的页面?
请求页式动态方法
  • 核心思想
    • 在作业或进程开始执行之前,都不把作业的程序段和数据段一次性全部转入内存,而只装入被认为是经常反复执行和调用的工作区部分。
    • 其他部分则在执行过程中动态装入
程序的局部性原理

请求页式之所以高效,其理论基础是程序的局部性原理

  • 定义:指程序在执行过程中的一个较短时间内,所执行的指令地址或数据地址分别局限于一定的存储区域中。
  • 分类
    • 时间局部性:如果一个存储项被访问,那么在不久的将来它很可能被再次访问(例如:循环中的指令和数据)。
    • 空间局部性:如果一个存储项被访问,那么与它地址相邻的项也很可能在不久的将来被访问(例如:顺序执行的代码、数组的遍历)。
请求页式的具体方法
  1. 划分:划分内存和进程的逻辑空间为大小相等的页面和页(同基本分页)。
  2. 部分加载:只把部分页加载入内存。
  3. 执行与中断 :执行时,检查需要的页面在不在内存内?
    • 如果在,则正常执行。
    • 如果不在 (发生缺页),则执行缺页中断处理程序
      1. 把所缺页面调入内存。
      2. (调入前需检查是否有足够的空闲内存空间;如果没有,需要调出某个页面到外存,直至空闲空间足够。)
  4. 回收:进程结束后回收其占用的内存。
1. 数据结构的扩充:页表的扩充

为了支持虚拟存储,页表项中需要增加几个关键的标志位。

页号 页面号 中断位 (P ) 外存地址 修改位 (M)
  • 中断位 :也称"状态位"或"有效位"。

    • 1: 表示该页在内存中,地址转换有效。
    • 0: 表示该页在外存中,访问该页会产生缺页中断。
  • 修改位

    • 用于标记该页面调入内存后是否被修改过。
    • 当需要淘汰该页时,如果修改位为1,表示需要将其内容写回外存 ;如果为0,则无需写回,直接丢弃即可。
  • 外存地址:指出该页在外存(如磁盘)上的存放位置。

2. 地址重定位(地址转换过程)
  1. 硬件访问页表时,首先检查页表项中的中断位
  2. 若中断位为 1 :表明该页在内存中,则使用页表中对应的页面号,正常完成地址转换。
  3. 若中断位为 0 :表明该页不在内存中,则产生硬件中断(缺页中断) 。CPU执行操作系统的中断处理程序,根据页表中给出的外存地址将该页调入内存,并修改页表。
相关推荐
咫尺的梦想0073 小时前
vue笔记(第一天)
前端·vue.js·笔记
仰望—星空3 小时前
MiniEngine学习笔记 : RootSignature
windows·笔记·学习
Mark_Hide4 小时前
学习笔记5
笔记·学习
Larry_Yanan5 小时前
QML学习笔记(五十一)QML与C++交互:数据转换——基本数据类型
c++·笔记·学习
我先去打把游戏先6 小时前
ESP32C3开发指南(基于IDF):console控制台命令行交互功能
笔记·嵌入式硬件·mcu·物联网·学习·esp32·交互
长桥夜波6 小时前
【第二十周】机器学习笔记09
人工智能·笔记·机器学习
CS创新实验室7 小时前
从穿孔卡片到云原生:批处理系统的不朽演进与核心思想
云原生·操作系统·批处理
YuanDaima20488 小时前
安全协议设计入门:原理与分析
人工智能·笔记·安全·网络安全·密码学·安全协议·课程
yuxb739 小时前
Zabbix企业级分布式监控系统(上)
笔记·学习·zabbix