操作系统原理学习笔记(二十五)-请求分页存储管理方式

操作系统原理学习笔记目录

请求分页中的硬件支持

  • 请求分页是目前最常用的一种实现虚拟存储器的方式。
  • 为了实现请求分页,计算机系统除了要求内存与外存外,还需要请求页表机制,缺页中断机构,地址变换机构。
  • 请求页表机制:
    • 请求分页系统中主要的数据结构是请求页表。
      • 基本功能是将逻辑地址映射成物理地址,为了满足换入换出要求,还增加了四个字段。
    • 状态位P(存在位):指示是否调入内存。
    • 访问字段A:记录一段时间内被访问次数,或多久未被访问。
    • 修改位M:标识调入内存后是否被修改过。
    • 外存地址:指出其外存地址。
  • 缺页中断机构:
    • 请求分页系统中,待访问的页面不在内存时,产生缺页中断,请求OS将所缺页调入内存。
    • 缺页中断作为中断,同样需要保护CPU环境、分析中断原因、转入缺页中断处理程序进行处理、在中断处理完成后再恢复CPU环境等步骤。
    • 但缺页中断与一般中断相比有两个明显区别:
      • 在指令执行期间产生和处理中断信号。
      • 一条指令期间可能产生多次中断。
      • 注:一般中断,出现于指令结束后,才会被检查到。
  • 地址变换机构:
    • 变换过程:
      1. 检索快表,找到了页。
        1. 修改页表项的访问位。
        2. 若是写操作,则修改“修改位置”为1,表示已被修改。
        3. 利用页表项中给出的物理块号和页内地址形成物理地址。
      2. 快表中无该页,在内存中检索,并找到了页。
        1. 从状态位P了解是否调入内存,若调入,则将其加入快表。
        2. 快表满时,根据算法调出部分页。
      3. 内存中未找到页,产生缺页中断,请求OS将该页从外存调入内存。

请求分页中的内存分配

  • 最小物理块数:
    • 保证进程正常运行所需的最小物理块数。
    • 取决于计算机硬件结构、指令格式、功能、寻址方式。
    • 对于单地址指令:
      • 采用直接寻址,最小物理块数为2.
      • 一块用于存放指令,一块用于存放数据。
    • 间接寻址:
      • 至少三个物理块、
    • 功能较强的机器:
      • 指令长度可能多两个字节,及可能跨两个页面。
      • 至少六个物理块。
  • 内存分配策略:
    • 固定分配局部置换(Fixed Allocation, Local Replacement)
      • 固定分配:为进程分配固定数目物理块。
      • 局部置换:将进程已分配的物理块中,换出一页,再调入一页。
    • 可变分配全局置换(Variable Allocation, Global Replacement)
      • 可变分配:为进程分配一定数目物理块,进程运行期间,根据情况适当增减。
      • 全局置换:将OS中空闲物理块分配给该页,或如从所有进程的物理块中换出调入。
        • 空闲物理块用完时,才从内存中的进程调出。
    • 可变分配局部置换(Variable Allocation, Local Replacement)
  • 物理块分配算法:
    • 平均分配算法。
    • 按比例分配算法:按进程大小的比例分配。
    • 考虑优先权的分配算法。

页面调入策略

  • 何时调入页面:
    • 预调页策略:
      • 调入预测中会在不久后访问到的页面。
      • 目前成功率仅约50%。
    • 请求调页策略:
      • 仅调入被请求的页面。
  • 从何处调入页面:
    • 拥有足够对换区空间:
      • 全部从对换区调入所需页面。
    • 系统缺少足够的对换区空间:
      • 不会被修改的文件从文件区调入。
      • 可能被修改的文件调到对换区。
    • UNIX方式:
      • 未运行过的页面从文件区调入。
      • 运行过但被换出的页面放在对换区。
      • 部分共享的页面不需要调入,它们已被其他进程调入内存。
  • 页面调入过程:
    • 所访问页面不在内存(存在位为0),发出缺页中断。
    • 中断处理程序保留CPU环境,分析中断原因,转入缺页中断处理程序。
    • 缺页中断处理程序查找页表,得到该页在外存的物理块。
    • 若内存能容纳新页:
      • 则启动磁盘I/O,该页调入内存,修改页表。
    • 若内存已满:
      • 根据置换算法从内存中选取一页准备换出。
      • 待换出的页未修改过(修改位为0),不必写回磁盘,否则写回磁盘。
      • 调入所缺页,修改页表,存在位设置1,将该页写入快表。
    • 缺页调入内存后,根据页表生成访问待访问数据的物理地址,再访问内存数据。
  • 缺页率:
    • 缺页率为:F/(S+F)
      • 访问成功的次数为S。
      • 缺页的次数为F。
    • 受几个因素影响:
      • 页面大小:页面大,缺页率低。
      • 进程所分配物理块的数目:数目多,缺页率低。
      • 页面置换算法。
      • 程序固有特性。
    • 缺页中断处理时间:p*a + (1-p)*b
      • 被调出的页面被修改的概率为p。
      • 处理被修改的缺页中断处理时间为a。
      • 处理未被修改的缺页中断处理时间为b。

You may also like...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注