操作系统虚拟内存作用与设置

上传人:kms****20 文档编号:51642871 上传时间:2018-08-15 格式:PPT 页数:28 大小:1.06MB
返回 下载 相关 举报
操作系统虚拟内存作用与设置_第1页
第1页 / 共28页
操作系统虚拟内存作用与设置_第2页
第2页 / 共28页
操作系统虚拟内存作用与设置_第3页
第3页 / 共28页
操作系统虚拟内存作用与设置_第4页
第4页 / 共28页
操作系统虚拟内存作用与设置_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《操作系统虚拟内存作用与设置》由会员分享,可在线阅读,更多相关《操作系统虚拟内存作用与设置(28页珍藏版)》请在金锄头文库上搜索。

1、0韩都衣舍官方旗舰店 http:/ 韩都衣舍女装您值得拥有 http:/ 好狗友 http:/ 广东韩都衣舍批发 http:/ 韩都衣舍旗舰店 http:/ 请求页面调度 进程创建 页面置换 帧分配 系统颠簸 其他考虑2背景虚拟内存(virtual memory):允许进程的执行不必完全在内存中 ,程序可以比物理内存大在许多情况下不需要将整个程序放到内存中,例:0处理异常错误条件的代码(几乎不执行)0数组、链表和表通常分配了比实际所需更多的内存0程序的某些选项或特点可能很少使用能够执行只有部分在内存中的程序的好处0程序不再受现有的物理内存空间限制0更多程序可同时执行,CPU利用率相应增加0用户

2、程序会运行的更快虚拟内存的实现请求页面调度(demand paging)3请求页面调度请求页面调度分页交换1.基本概念有效无效位:区分哪些页在内存中,哪些页在磁盘上页错误陷阱(page-fault trap):访问标记为无效的页引起,处理 程序:1)检查进程的页表,确定应用是否合法2)非法,终止进程。否则,表示引用有效但尚未调入页面,转3)3)找到一个空闲帧4)调度一个磁盘操作,将所需页调入刚分配的帧5)修改进程的内部表和页表,表示该页已在内存中6)重新开始因页错误陷阱中断的指令4 纯粹请求页面调度(pure demand paging):只有在需 要时才将页调入内存 引用的局部性(local

3、ity of reference) 支持请求页面调度的硬件0页表(有效无效位)0次级存储器(保存不在内存中的页) 说明:为保证在页错误后能够重新运行指令,还需要相当 的软件和额外的体系结构限制52、请求页面调度的性能有效访问时间(1-p)x ma + p x 页错误时间0 p:页错误概率0 ma:内存访问时间页错误时间有很多,三个主要的如下0 处理页错误中断0 读入页0 重新启动进程有效访问时间与页错误率直接有关对于请求页面调度,降低页错误率很重要交换空间的处理和使用0 进程开始时将整个文件映象复制到交换空间,从交换空间调页0 开始时从文件系统调页,出现置换时将页写入交换空间0 直接从文件系统

4、中调页6进程创建 由虚拟内存带来两种用于提高进程创建和运行性能的技术 1、写时拷贝(写时复制copy-on-write) 减少不必要的内存复制 0父进程与子进程开始时共享同一页面,页面标记为写 时复制 0如果任何一个进程需要对页进行写操作,创建一个共 享页的拷贝 Windows 2000、Linux、Solaris 2 Vfork(virtual memory fork) 0父进程挂起,子进程使用父进程的地址空间72、内存映射(memory mapping)文件 允许一部分虚拟内存与文件逻辑相关联,可将一磁盘块映 射成内存的一页(或多页) 0开始的文件访问按普通请求页面调度来进行 0以后文件的

5、读、写按通常的内存访问来处理,不使用 系统调用 read和write,简化了文件访问和使用8页面置换问题由来:出现页错误后找不到空闲帧可用页置换(page replacement)基本方法:如果没有空闲帧,就查找当前不在使用的帧,并使之空 闲(释放)包含置换的页错误处理程序1) 查找所需页在磁盘上的位置2) 查找一空闲帧a) 如果有,使用b) 如果没有,使用页置换算法选择一个“牺牲”帧(victim frame)c) 将牺牲帧的内容写到磁盘上,改变页表和帧表3) 将所需页读入空闲帧,改变页表和帧表4) 重启用户进程9修改位(modify bit)(脏位(dirty bit)设置:从磁盘读入后发

6、生修改,置换时要写到磁盘上未设置:从磁盘读入后未发生修改,不用写回磁盘降低用于处理页错误所需要的时间 页置换算法:如何选择要置换的帧(最小页错误率) 帧分配算法:决定为进程分配多少内存 引用串(reference string):内存的引用序列 人工生成 跟踪一个给定系统并记录每个内存引用地址。为降低数据量:对给定页大小,只考虑页码,不需要完整地址若有一个对页p的引用,则任何紧跟着的对页p的引用决不会 产生页错误引用串通常格式:1,4,1,6,1,6,1,2,3,5101、FIFO页置换思想:为每个页记录该页调入内存的时间,置换时选择最旧的页 实现:创建一个FIFO队列,管理内存中的所有页,置

7、换队列的首页 (并不需要记录确切时间) 分析:容易理解和实现,性能并不总是很好 例(可用帧数量3)引用串如下: 0 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1R107R207R217210210R210R310320320R320R324R024R034R032R132102R102F107F07F7置换帧 3帧 2帧 110710212303240302107引用串缺页率 p=15/20=75%11Belady异常:页错误率随着所分配的帧数增加而增加的现象,例:123412512345帧1111444555555帧222211111333帧33332222

8、244缺页:FFFRRRRRR123412512345帧1111111555544帧222222211115帧33333332222帧4444444333缺页:FFFFRRRRRR可用帧数3, 9次缺页可用帧数4 , 10次缺 页122、最优页置换(optimal page-replacement algorithm) 思想:置换那些在未来最长时间中不会被使用的页 例(可用帧数量3)引用串如下:07 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1107107R107102102102R102302302R302342342R342302R302102R102F107

9、F07F7置换帧3帧2帧1引用串10710212303240302107缺页率 p=9/20=45%13分析0页错误率最低,无Belady异常0难于实现,需要引用串的未来知识0常用于比较研究143、LRU页置换最近最少使用算法(least-recently-used,LRU)思想:置换过去最长时间没有使用的页例(可用帧数量3)引用串如下:07 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1701701R701201R201231R231230230R230R234R204R304302R302102R102F107F07F7缺页率 p=12/20=60%置换帧3帧2

10、帧1引用串1071021230324030210715 分析0经常使用,被认为很好0无Belady异常 主要问题:如何实现(需要硬件支持,为页帧确定一个排 序序列,该序列按页帧上次使用的时间来定义)?两种可 行方案:0计数器:每次内存引用,计数器增加,置换具有最小 时间的页0堆栈:每当引用一个页,该页从堆栈中删除放到栈顶 ,底部是LRU页164、LRU近似页置换思想:页表关联一个引用位,每当引用一个页时,相应 页的引用位被硬件置位1) 附加引用位算法0 每个页关联一8bit移位寄存器,最小值的页为LRU页2) 二次机会算法0 引用位0置换,1给该页第二次机会(引用位清0 ),选择下一个FIFO

11、页3) 增强型二次机会算法0 引用位修改位(0,0)(0,1)(1,0)(1 ,1),置换在最低非空类型中所碰到的页175、基于计数的页置换思想:为每个页保留一个用以记录其引用次数的计数器1)最不经常使用页置换算法(least frequently used,LFU)0置换计数最小的页0问题:一个页在进程开始时使用得多,但以后不再使用,仍然 会在内存中0解决方法:定期将次数寄存器右移一位2)最常使用页置换算法(most frequently used,MFU)0置换计数最大的页0基于理论:具有最小次数的页可能刚刚调进来,还没有使用MFU和LFU都不常用,实现费时,且性能不是很好18 页置换算法

12、练习1. 已知页面走向为1、2、1、3、1、2、4、2、1、3、4, 且开始执行时内存中没有页面。若只给该作业分配2个物 理块。1) 当采用FIFO、OPT、LRU页置换算法时缺页率为多少?2) 假定现有一种置换算法,该算法淘汰页面的策略为当需 要淘汰页面时,就把刚使用过的页面作为淘汰对象,试 问就相同的页面走向,其缺页率又为多少?3) 假如分配3个物理块呢?191133221142211443311114442322131111411423222331131113422242221 2 1 3 1 2 4 2 1 3 4FIFO 9/11=81.8%OPT 7/11=63.6%LRU 8/1

13、1=72.7%NEW 8/11=72.7% 2个物理块201114422213331111322223441111112222434331111112242233341 2 1 3 1 2 4 2 1 3 4 3个物理块FIFO 5/11=45.5%OPT 5/11=45.5%LRU 6/11=54.5%NEW 6/11=54.5%216、页缓冲算法 思想:保留一个空闲帧缓冲池,牺牲帧写出之前,所需要 的页就从缓冲池中读到空闲内存,无需等待牺牲帧的写出0扩展1:维护一个已修改页的列表,等调页设备空闲时,就选择一个修改页以写到磁盘上,这样增加了当需 要选择置换时干净页的概率0扩展2:保留一个空闲

14、帧的池,记住哪些页在哪些帧中,需要置换时,先检查所需要页是否在空闲池中 页缓冲算法与FIFO算法一起用于VAX/VMS系统中22帧分配1. 帧的最小数量0 所分配的帧不能超过可用帧的数量0 又必须分配至少最少数量的帧2. 分配算法(在n个进程间分配m个帧)0 平均分配:给每个进程m/n帧0 比例分配:ai = si /S x m,其中S= si , si为进程pi 的虚拟内存大小, ai为进程pi可分配到的帧数 以上两种分配方案不区分进程的优先级0 比例分配2:根据进程的优先级或进程大小和优先级 的组合来分配帧233.全局分配与局部分配 全局置换:允许一个进程从所有帧集合中选择一个置换帧,不管

15、 该帧是否已分配给其他进程,即一个进程可以从另一个进程中取 帧全局分配 局部置换:每个进程仅从自己的分配帧中进行选择局部分配 分析全局置换不能控制其页错误率,全局分配增加某进程所分配帧 的数量局部置换会阻碍进程,局部分配分配给每个进程的帧的数量不 变全局置换通常有更好的系统吞吐量,且更为常用24系统颠簸(了解概念) 颠簸(thrashing):频繁的页调度行为(一个进程在换 页上用的时间多于执行时间) 工作集合模型(working-set model)0工作集窗口(working-set window)0工作集合(working-set) 页错误频率(page-fault frequentcy,PFF)0颠簸具有高的页错误频率,控制页错误频率防止颠 簸25操作系统样例(自学) Windows NT:请求页面调度上簇 Solaris 2:lostfree换页二次机会算法 26其他考虑1.预约式页面调度:同时将所需要的页一起调入内存中0分析:有时性能较好,考虑成本问题2.页大小(如何选择页大小)0考虑页表大小大页0内存利用小页(减少碎片)0页读写所需时间大页0精度小页0降低页错误数量大页分析:没有最佳答案,趋向于大页3.TLB范围(增加方法)0增加TLB条数0增加页的大小或提

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号