【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执行操作系统的中断处理程序,根据页表中给出的外存地址将该页调入内存,并修改页表。
相关推荐
لا معنى له1 小时前
学习笔记:卷积神经网络(CNN)
人工智能·笔记·深度学习·神经网络·学习·cnn
蒙奇D索大1 小时前
【数据结构】考研408 | 冲突解决精讲: 拉链法——链式存储的艺术与优化
数据结构·笔记·考研·改行学it
_Minato_2 小时前
数据结构知识整理——复杂度的计算
数据结构·经验分享·笔记·算法·软考
x_lrong2 小时前
交叉验证笔记
笔记
لا معنى له2 小时前
学习笔记:注意力机制(Attention)、自注意力(Self-Attention)和多头注意力(Multi-Head Attention)
笔记·学习
走在路上的菜鸟2 小时前
Android学Dart学习笔记第十六节 类-构造方法
android·笔记·学习·flutter
代码游侠2 小时前
学习笔记——线程控制 - 互斥与同步
linux·运维·笔记·学习·算法
四谎真好看3 小时前
MySQL 学习笔记(进阶篇1)
笔记·学习·mysql·学习笔记
三品吉他手会点灯3 小时前
STM32F103学习笔记-19-SysTick-系统定时器(第1节)-功能框图讲解和优先级配置
笔记·stm32·单片机·嵌入式硬件·学习
小易吾3 小时前
VISIO导出高清PDF有效方法
笔记·pdf