操作系统原理学习笔记(二十五)-请求分页存储管理方式
操作系统原理学习笔记目录
请求分页中的硬件支持
- 请求分页是目前最常用的一种实现虚拟存储器的方式。
- 为了实现请求分页,计算机系统除了要求内存与外存外,还需要请求页表机制,缺页中断机构,地址变换机构。
- 请求页表机制:
- 请求分页系统中主要的数据结构是请求页表。
- 基本功能是将逻辑地址映射成物理地址,为了满足换入换出要求,还增加了四个字段。
- 状态位P(存在位):指示是否调入内存。
- 访问字段A:记录一段时间内被访问次数,或多久未被访问。
- 修改位M:标识调入内存后是否被修改过。
- 外存地址:指出其外存地址。
- 请求分页系统中主要的数据结构是请求页表。
- 缺页中断机构:
- 请求分页系统中,待访问的页面不在内存时,产生缺页中断,请求OS将所缺页调入内存。
- 缺页中断作为中断,同样需要保护CPU环境、分析中断原因、转入缺页中断处理程序进行处理、在中断处理完成后再恢复CPU环境等步骤。
- 但缺页中断与一般中断相比有两个明显区别:
- 在指令执行期间产生和处理中断信号。
- 一条指令期间可能产生多次中断。
- 注:一般中断,出现于指令结束后,才会被检查到。
- 地址变换机构:
- 变换过程:
- 检索快表,找到了页。
- 修改页表项的访问位。
- 若是写操作,则修改“修改位置”为1,表示已被修改。
- 利用页表项中给出的物理块号和页内地址形成物理地址。
- 快表中无该页,在内存中检索,并找到了页。
- 从状态位P了解是否调入内存,若调入,则将其加入快表。
- 快表满时,根据算法调出部分页。
- 内存中未找到页,产生缺页中断,请求OS将该页从外存调入内存。
- 检索快表,找到了页。
- 变换过程:
请求分页中的内存分配
- 最小物理块数:
- 保证进程正常运行所需的最小物理块数。
- 取决于计算机硬件结构、指令格式、功能、寻址方式。
- 对于单地址指令:
- 采用直接寻址,最小物理块数为2.
- 一块用于存放指令,一块用于存放数据。
- 间接寻址:
- 至少三个物理块、
- 功能较强的机器:
- 指令长度可能多两个字节,及可能跨两个页面。
- 至少六个物理块。
- 内存分配策略:
- 固定分配局部置换(Fixed Allocation, Local Replacement)
- 固定分配:为进程分配固定数目物理块。
- 局部置换:将进程已分配的物理块中,换出一页,再调入一页。
- 可变分配全局置换(Variable Allocation, Global Replacement)
- 可变分配:为进程分配一定数目物理块,进程运行期间,根据情况适当增减。
- 全局置换:将OS中空闲物理块分配给该页,或如从所有进程的物理块中换出调入。
- 空闲物理块用完时,才从内存中的进程调出。
- 可变分配局部置换(Variable Allocation, Local Replacement)
- 固定分配局部置换(Fixed Allocation, Local Replacement)
- 物理块分配算法:
- 平均分配算法。
- 按比例分配算法:按进程大小的比例分配。
- 考虑优先权的分配算法。
页面调入策略
- 何时调入页面:
- 预调页策略:
- 调入预测中会在不久后访问到的页面。
- 目前成功率仅约50%。
- 请求调页策略:
- 仅调入被请求的页面。
- 预调页策略:
- 从何处调入页面:
- 拥有足够对换区空间:
- 全部从对换区调入所需页面。
- 系统缺少足够的对换区空间:
- 不会被修改的文件从文件区调入。
- 可能被修改的文件调到对换区。
- UNIX方式:
- 未运行过的页面从文件区调入。
- 运行过但被换出的页面放在对换区。
- 部分共享的页面不需要调入,它们已被其他进程调入内存。
- 拥有足够对换区空间:
- 页面调入过程:
- 所访问页面不在内存(存在位为0),发出缺页中断。
- 中断处理程序保留CPU环境,分析中断原因,转入缺页中断处理程序。
- 缺页中断处理程序查找页表,得到该页在外存的物理块。
- 若内存能容纳新页:
- 则启动磁盘I/O,该页调入内存,修改页表。
- 若内存已满:
- 根据置换算法从内存中选取一页准备换出。
- 待换出的页未修改过(修改位为0),不必写回磁盘,否则写回磁盘。
- 调入所缺页,修改页表,存在位设置1,将该页写入快表。
- 缺页调入内存后,根据页表生成访问待访问数据的物理地址,再访问内存数据。
- 缺页率:
- 缺页率为:F/(S+F)
- 访问成功的次数为S。
- 缺页的次数为F。
- 受几个因素影响:
- 页面大小:页面大,缺页率低。
- 进程所分配物理块的数目:数目多,缺页率低。
- 页面置换算法。
- 程序固有特性。
- 缺页中断处理时间:p*a + (1-p)*b
- 被调出的页面被修改的概率为p。
- 处理被修改的缺页中断处理时间为a。
- 处理未被修改的缺页中断处理时间为b。
- 缺页率为:F/(S+F)
共有 0 条评论