赞
踩
!#当访问一个不再内存的逻辑地址时,产生缺页中断/缺段中断;OS阻塞该进程;启动磁盘I/O;装入所需的页/段后,将阻塞进程设置为就绪态。
?#就绪挂起态和阻塞挂起态进程的换入/换出内存和虚拟存储的换入/换出内存有什么区别?
答:挂起态进程的所有内存驻留页/段全部被换出,解除挂起时,所有以前的驻留页/段再重新读回内存。且CPU不会调度就绪挂起态进程。
虚拟内存将任一进程(运行态。就绪态和阻塞态)的部分页/段换入和换出内存。
虚拟页式管理中的页表:
缺页中断(页错误)Page Fault:
- 在一条指令执行期间,当要范围的页不在内存是,产生和处理缺页中断,然后重新执行该指令。
- 一条指令的执行可能会引起多次缺页中断。
利用哈希函数的倒排页表
对虚拟地址的<-pid,page#>用哈希函数映射到散列链中。具有相同哈希值的表象被链在一起,可减少收缩时间。
转换检测缓冲区TLB,也称快表。为了解决上述页式内存管理带来的每次访问数据都需要访问两次内存的低效率问题。
- 将页表中进程运行最常用的部分放入TLB。
- TLB集成与CPU内部的MMU中。(TLB不同于Cache)
- 地址转换时:
①若要访问的页号位于TLB,则从TLB中取出帧号。
②否则从内存中的页表取出帧号,且添加到TLB中。
③当TLB满时,淘汰旧表项,在写入新表项。
!#若TLB缺页时,会从内存的页表找到指定帧号并送入TLB中,再由TLB传入内存。即
-驻留位:该段是否在内存中。
-修改位:该段装入内存后是否被修改过。
-访问字段:指示最近被访问次数或距上次访问的时间间隔。
-存取权限:本段的存取权限是可写、只读或执行。-扩充位:指示此段是否可动态增长。越界时如果该段不可扩充则出错,否则增加段长并分配下方空闲内存。
简单分段和虚拟分段易于保护和共享。
?#在这些存储管理方法中:简单页式,简单段式,虚存页式,虚存段页式,虚存段式,动态分区,固定分区
固定分区支持多道程序设计,算法简单,但内碎片多;
态分区无无内碎片,但用于外碎片的压缩处理时间长;
页式克服克服了碎片多和压缩处理时间长的缺点,但不支持虚拟内存;
虚拟页式支持虚拟存储,离散分配内存,无外碎片,但不能以自然的方式提供内存的共享和存取保护机制;
易于共享易于共享保护,内存碎片多,支持虚拟内存。
易于共享保易于共享保护,内存碎片少,支持虚拟内存。
CPU必须支持分页和分段,才能实现虚拟内存。
虚拟存储管理需考虑的问题:
请求调入:仅把需要访问的页调入内存;
- 调入::考虑到启动磁盘的寻道和延迟开销,在调入所需页的同时,也调入若干可能马上访问的页面(通常是所需页的后面几页)。
进程的页/段放在内存哪个位置:
- 页:离散放在内存任意帧;
- 段:首次/下次/最佳适配等算法分配
当内存所有帧都已被分配、又必须装入一个新页时,选择在内存的哪一页被置换出内存。
策略目的:基于局部性原理,根据进程过去的访问行为预测将来访问的行为,置换那些最近一段时间内最不可能访问的页。
算法:
简单时钟算法
- 每个页表项设一个使用位:
- 某进程的所有页面(或整个内存的页框)排成一循环缓冲链;某页被装入或访问时,其使用位U置1;
- 置换时顺序查找循环链:U=0,置换该页;U=1,将U置0;替换指针前移。下次置换时从替换指针处开始查找。
缺页率性能优劣递减:OPT>LRU>CLOCK>FIFO
时钟算法改进
每个页表项设置“使用位U——修改位M”,访问某页时U置1;被修改时M置1。
① U=0,M=0 (最佳淘汰页) 最近未访问,且从未修改
② U=0,M=1 最近未访问,但曾被修改
③ U=1,M=0 最近被访问,但从未修改
④ U=1,M=1 (最不该淘汰) 最近被访问,且曾被修改
淘汰顺序优先级:①②③④
5.4.1 缺页率
5.4.2 页面分配
5.4.3置换范围
5.4.4清除策略
5.4.6加载控制
- 抖动:当系统并发度过高,缺页频繁,用于调页的时间比进程实际运行时间还多,CPU利用率急剧下降,成为抖动。
- 采取哪些措施可以预防抖动?
①在调度程序中引入工作集算法:当各进程的内存驻 留集足够大时,才调入新作业
②L=S准则:调整并发度,使得产生缺页的平均时间 (即缺页中断之间的平均时间)等于处理一次缺页中 断的平均时间,此时CPU利用率高。
③ 50%准则:磁盘利用率50%时,CPU利用率高。
④当系统并发度较高时,挂起若干进程(如优先级低 的、年轻的、发生缺页的、占空间少的、占空间 多的、剩余运行时间长的进程)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。