页表机制
缺页中断机构
它与一般的中断相比,有着明显的区别
地址变换机构
在为进程分配内存时,将涉及到三个问题:第一,最小物理块数的确定;第二,物理块的分配策略;第三,物理块的分配算法。
最小物理块数的确定
取决于指令的格式、功能和寻址方式
内存分配策略
在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换 时,也可采取两种策略,即全局置换和局部置换。
固定分配:为 每个进程分配固定数目的物理块
局部置换:,如果进程 在运行中发现缺页,则只能从该进程在内存的 n 个页面中选出一个页换出,然后再调入一 页,以保证分配给该进程的内存空间不变。
可变分配全局置换(Variable Allocation,Global Replacement) 大锅饭
可变分配:先为进程分配一定数目的物理块,在进程运行期间根据情况适当的增加或减小
全局置换:发现缺页从OS保留空闲块中取出一块分配,当OS无空闲块,则从一个选中进程块中抽取
可变分配局部置换(Variable Allocation,Local Replacement) 会哭的孩子有糖吃
如果进程在运行中频繁地发生缺页中断,则系统须再为该进程分配若干 附加的物理块,直至该进程的缺页率减少到适当程度为止;反之,若一个进程在运行过程 中的缺页率特别低,则此时可适当减少分配给该进程的物理块数
物理块分配算法
其所选择的被淘汰页面, 将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。
该算法总是淘汰最先进入内存的页面,即选择在内存中驻 留时间最久的页面予以淘汰
LRU 置换算法是选择最近最久未 使用的页面予以淘汰。
LRU置换算法的硬件支持
寄存器
为了记录某进程在内存中各页的使用情况,须为每个在内存中的页面配置一个移位寄 存器,可表示为
当进程访问某物理块时,要将相应寄存器的 Rn-1 位置成 1。此时,定时信号将每隔一 定时间(例如 100 ms)将寄存器右移一位。如果我们把 n 位寄存器的数看做是一个整数,那么, 具有最小数值的寄存器所对应的页面,就是最近最久未使用的页面。
由图可以看出,第 3 个内存页面的 R 值最小,当发 生缺页时,首先将它置换出去。
栈
可利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时, 便将该页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编 号,而栈底则是最近最久未使用页面的页面号。
寄存器R中1位数最少淘汰
对比LRU
2 1 1 0 4
LRU: 2 21 21 01 04
LFU: 2 21 21 01 41
Clock 算法就是用得较多的一种 LRU 近似算法。
简单的Clock置换算法(NRU)
当采用简单 Clock 算法时,只需为每页设置一位访问位,再将内存中的所有页面都通过 链接指针链接成一个循环队列。当某页被访问时,其访问位被置 1。置换算法在选择一页淘 汰时,只需检查页的访问位。如果是 0,就选择该页换出;若为 1,则重新将它置 0,暂不 换出,而给该页第二次驻留内存的机会,再按照 FIFO 算法检查下一个页面。当检查到队列 中的最后一个页面时,若其访问位仍为 1,则再返回到队首去检查第一个页面。
改进型 Clock 置换算法
由访问位 A 和修改位 M 可以组合成下面四种类型的页面:
该算法规定将一个被淘汰的页放入两个链表中的一个,即如果页面未被修改,就将 它直接放入空闲链表中;否则,便放入已修改页面的链表中。
局部置换策略
工作集算法
利用“L = S”准则调节缺页率:
其中L是缺页之间的平均时间,S是平均缺页服务时间,即用于置换一个页面所需的时间。
如果是L远比S大,说明很少发生缺页,磁盘的能力尚未得到充分的利用;反之,如果是L比S小,则说明频繁发生缺页,缺页的速度已超过磁盘的处理能力。
只有当L与S接近时,磁盘和处理机都可达到它们的最大利用率。理论和实践都已证明,利用“L=S”准则,对于调节缺页率是十分有效的。
选择暂停进程
段表机制
缺段中断机构
地址变换机构
共享段表
共享段的分配与回收
共享段的分配
在为共享段分配内存时,对第一个请求使用该共享段的进程,由系 统为该共享段分配一物理区,再把共享段调入该区,同时将该区的始址填入请求进程的段 表的相应项中,还须在共享段表中增加一表项,填写有关数据,把 count 置为 1;之后,当 又有其它进程需要调用该共享段时,由于该共享段已被调入内存,故此时无须再为该段分 配内存,而只需在调用进程的段表中增加一表项,填写该共享段的物理地址;在共享段的 段表中,填上调用进程的进程名、存取控制等,再执行 count :=count+1 操作,以表明有两 个进程共享该段。
共享段的回收
当共享此段的某进程不再需要该段时,应将该段释放,包括撤消在该进程段表中共享 段所对应的表项,以及执行 count :=count-1 操作。若结果为 0,则须由系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时已没有进程使用该段;否 则(减 1 结果不为 0),只是取消调用者进程在共享段表中的有关记录。
分段保护
此段的某进程不再需要该段时,应将该段释放,包括撤消在该进程段表中共享 段所对应的表项,以及执行 count :=count-1 操作。若结果为 0,则须由系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时已没有进程使用该段;否 则(减 1 结果不为 0),只是取消调用者进程在共享段表中的有关记录。
分段保护
上一篇:彩云国物语结局是什么 ,彩云国物语结局是什么 极速百科网 极速百科
下一篇:Pinely Round 1 (Div. 1 + Div. 2) E.Make It Connected(思维题/并查集+分类讨论)