操作系统概念笔记9.虚拟内存管理

请求调页

页面只有在程序执行期间被请求时才被加载

  • 硬件支持——有效-无效位:

       有效:相关页合法且在内存

       无效:不在进程的逻辑地址空间或者只在磁盘上而不在内存中

  • 试图访问尚未调入内存的页面,引起缺页错误:

       检查进程内部表,确定该引用是否有效

               无效-终止进程

              有效-调入页面:找到空闲帧,将磁盘上的页面分配到帧上,修改页表,重新启动被中断的指令

  • move指令中,当源块和目的块有重叠,会导致源块被修改:

       解决方案:1.试图访问两块的两端,如果有缺页错误,在这一步就会解决

                         2.使用寄存器保存覆盖位置的值

 

写时拷贝

写时拷贝时,OS为这类请求提供空闲的页面池,在需要分配之前先填0,清除以前的内容

UNIX提供vfork(),父进程挂起,子进程使用父进程空间

 

页面置换

  • 步骤:

       1.找到所需页面的磁盘位置

       2.找到空闲帧

              找到:使用

              没找到:选择牺牲帧,将牺牲帧写入磁盘,修改页表和帧表

       3.将页面读入空闲帧,修改页表和帧表

       4.返回缺页错误位置

dirty bit:置为1时,表示页表被修改,需要写入磁盘

  • 页面置换算法:

       1.FIFO:会有Belady异常:随着分配帧数的增加,缺页错误可能会增加

       2.LRU:每个页表条目关联时间域 or 使用栈的结构,当页面被引用移动到栈顶

       3.近似LRU:引用位——当引用一个页面,引用位置为1

                  额外引用位算法:用8位字节,OS将每个页面引用位移到最高位,其他位右移1位

                  第二次机会算法:用1位引用位,使用循环队列的FIFO,如果引用位为1,清楚引用位并寻找下一个,否则牺牲该页

                  增强型第二次机会算法:利用引用位和修改位,降低I/O数量

       4.LFU

       5.MFU

页面缓冲算法:系统保留缓冲池,所需页面先读到缓冲池的空闲帧,等牺牲帧写出后,再被添加到空闲帧池

原始磁盘:将磁盘分区作为逻辑块的大数组使用,而不使用文件系统的数据结构

 

帧分配

最小帧数;最大帧数

全局置换:允许一个进程从所有帧的集合中选择一个置换帧,而不管该帧是否已分配给其他进程

局部置换:要求每个进程只从它自己分配的帧中进行选择

非均匀内存访问(NUMA):特定板CPU访问同板内存的延迟,小于访问其他板内存的延迟

 

系统抖动

中级CPU调度:如果低优先级进程所分配的帧数低于最小分配帧数,必须暂停该进程执行,调出它剩余页面,释放分配的帧

抖动:高度调页活动

  • 解决方式:

       1.采用局部置换算法

       2.提供足够多的所需帧数

工作集模型:检查最近▲个页面引用。

                     分配大于工作集的帧数。

缺页错误频率:当错误率太高时,需要分配更多的帧;当缺页错误率低于下限,可从进程中删除一帧

 

内存映射文件

内存映射文件:允许一部分虚拟内存与文件进行逻辑关联,文件读写按照内存访问处理

多个进程给可以内存映射到同一个文件,进行数据共享

内存映射I/O:一组内存地址映射到设备寄存器,对这些内存地址的读写,导致数据传到或取自设备寄存器

 

分配内核内存

  • 内核内存与用户内存分配的区别:

       1.内核需要为不同大小的数据结构请求内存,其中有的小于一页,因此内核需要努力最小化碎片浪费

       2.有的硬件设备与物理内存直接交互,要求内存常驻在连续物理内存中

  • 策略

       策略1-伙伴系统:采用2的幂分配器

       策略2-slab分配:

              每个slab由一个或多个物理连续页面组成

              每个cache由一个或多个slab组成

              每个cache含有内核数据结构对象实例

              创建cache时,分配若干空闲对象到cache

              当内核需要新的数据结构对象,从cache上分配空闲对象

              分配器优先级:

                     1.部分为空的slab

                     2.空slab

                     3.从连续物理页面分配新的slab

 

其他注意事项

预调页面:对于小文件采用,同时调进所需的所有页面

页面锁定位:不允许被置换出内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值