虚拟内存管理ppt课件

上传人:钟*** 文档编号:1363920 上传时间:2019-10-17 格式:PPT 页数:62 大小:1.17MB
返回 下载 相关 举报
虚拟内存管理ppt课件_第1页
第1页 / 共62页
虚拟内存管理ppt课件_第2页
第2页 / 共62页
虚拟内存管理ppt课件_第3页
第3页 / 共62页
点击查看更多>>
资源描述
虚拟内存管理,北京工业大学软件学院 张丽,1,主要内容,虚拟内存技术的引入 虚拟内存技术概念 虚拟内存的实现 分页技术实现的虚拟内存,2,虚拟内存技术的引入,内存空间大小的问题 内存空间问题的解决办法 软件解决方案的基础 操作系统的解决办法,3,内存空间大小的问题,每个程序运行所需空间不能超过可用内存 程序会因不能装入内存而无法运行 程序的功能越来越复杂、代码越来越长 采用覆盖技术 限制太大 程序员在写程序时要考虑内存大小、考虑覆盖,4,内存空间问题的解决办法,硬件:增加内存 软件:改变程序的要求 问题关键:如果程序可以不用全部放在内存中就能够执行,5,软件解决方案的基础,并不需要所有代码和数据都放到内存中 一个CPU在某个时刻只能访问一条语句或者一个数据 有成熟的地址重定向技术 允许程序在内存中的位置不连续且可以变化,6,操作系统的解决办法,不再一次把一个进程的全部信息都装入到内存中 只是装入一部分 然后调度进程运行 其他部分等到需要时再装入,7,操作系统的解决办法,多大的程序都可以在有限的内存中运行 程序员写程序时再不用考虑内存的大小 程序员可以编写使用任意大内存空间的程序 1G的程序,编译程序编址地址空间从0到1G,程序可在只有256M内存的计算机上运行 程序员感觉他有1G大的内存空间,而不是256M,8,虚拟内存技术,虚拟内存空间 程序员写程序时使用的地址空间 虚拟内存技术 采用虚拟空间独立编址、操作系统负责把一个大的虚拟空间的内容分阶段装入实际内存中运行的技术 程序员以为自己有一很大内存空间,且独享 虚拟空间受限于地址宽度 32位虚拟地址,虚拟空间上限4G,9,虚拟内存技术的实现,内存分配 访问内存 淘汰,10,内存分配,先把程序分成若干部分 选择把一部分装载到内存中 记录信息 哪些部分装载到内存中,哪些没有 装载到内存中的部分放在什么位置 可采用页式、段式、段页式,11,内存分配,页式 虚拟空间仍然分成页 在页表中增加一个标志,表示这个页是否在内存中 如果在内存中,页表中记录相应页框号,12,访问内存,查找页表或者段表,判断内容是否在内存中 已经被装入到内存中 利用页表或者段表中的信息,把虚拟地址转换成对应的物理地址 未装入到内存 在内存中找一块空闲空间分配给进程 把要访问的内容从外存读取到内存 修改页表或者段表,13,淘汰,如果内存中没有空闲空间,或者空闲空间低于限定值 选择内存中一些正被使用的单元 把里面的内容写回到外存 把这些空间释放出来 分配给需要的进程,14,淘汰,抖动 选择今后不会或者最近不会用到的内容换出 局部性原理 一般情况下一个进程在一段时间内要访问的指令和数据都集中在一起,15,虚拟内存技术,实现的基础 局部性原理 地址重定向技术 使程序在一定程度上不再受物理内存大小的限制,16,分页技术实现的虚拟内存,内存分配 虚拟空间的管理 物理内存空间分成与页面大小相同页框 空闲页框管理 页表 内存访问 缺页中断 页面淘汰,17,虚拟空间的管理,地址长度确定虚拟空间的大小 如32位的Linux操作系统的虚拟空间大小4G 分为系统空间和用户空间,18,空闲页框管理,链表 位图,19,页表,创建新进程时,在内存中为进程创建一个页表 为进程分配内存,填写页表相关内容,20,页表表项结构,页面访问位 A ,0 页面不在内存 1 页面在内存,0 页面未被访问 1 页面已被访问,0 页面未被修改 1 页面已被修改,判断缺页中断,影响页面 置换策略,是否重写外存,页面存在位 P ,页面修改位 M ,21,页表大小,4GB虚拟空间分成512字节大小的页,共有 4*230/29 = 4*221 = 8M个页 每个页的页表项占4个字节 进程页表大小为 8M*4B= 32MB,22,解决办法,把页表看作是在虚拟空间中 整个页表也被分页 页表不全部放在内存中 每次系统只装载页表的一部分 放在内存中的页表页也不再连续存放,23,多级页表,页目录表 描述哪些页表页已经在内存中、哪些还不在 在内存中的页表页放在什么地方,24,多级页表,25,两级页表结构的地址转换,26,倒排页表,按页框号排序 每个页框占有一个表项 每个表项 存放在该页框中页面的虚拟页号 拥有该页面的进程标识符,27,倒排页表,28,倒排页表,节省空间 虚拟空间很大,如64位 页表大小(页面大小为4KB,每个页表项8个字节) 8*264/212= 255= 235*220 = 235G 查找费时 按照虚拟页号查找整个页表 解决办法 散列页表 快表TLB,29,散列页表,以页号作为参数形成散列值 散列表中每一项有一个链表 把有相同散列值的元素链接起来 每个链表元素由三部分组成 页号 对应的内存块号 指向链表中下一个元素的指针,30,散列页表,31,关联高速缓存TLB,实现虚拟内存引入时间开销 地址转换的时间开销 读取进程的页表、页面目录 一次访存变成两次、三次访存动作 CPU内部设置专门用来存放页表的缓存 放置最近经常用到的页表项,32,高速关联缓存,提高查找页表项的速度 以其中某一存储项内容作为地址来存取的存储器 也称TLB,Translation Lookaside Buffer(转换检测缓冲区),33,高速关联缓存,34,单元访问,访问虚拟地址单元的内容 按照页面的大小计算页号查询页表 检查该页表项中 “存在”标志位 如果存在标志位被设置 按页表项中的页框号计算物理地址; 如果存在标志位未被设置 缺页异常,35,缺页异常,异常与中断 异常 也称为同步中断 在处理器执行到由于编程失误而导致的错误指令时,或者在执行期间出现特殊情况(如缺页),必须靠内核处理时,处理器就会产生一个异常 中断 外部硬件产生的一个电信号,从CPU的中断引脚进入,打断当前CPU的运行 把需要的内容装入到内存中并设置相应的页表项,36,缺页中断,37,多级页表的使用,计算出页表项位于哪个页表页中 根据页表页号查找页目录 如果页表项在内存中 得到页表项在内存中的位置,读取页表项、找到页框号、计算出物理地址、访问物理单元 如果页表项未在内存中,缺页异常 异常处理程序创建一个新的页表页,38,页面的装入,预装入 访问速度很快 浪费空间 按需装入 不浪费空间 浪费时间,39,页面的装入,通常操作系统会综合利用这两种方式 创建进程时,为每个进程预装入一定数量的页面 当进程执行到一定阶段,需要新页面时,再按需要装入 装入要访问的页时捎带把后面的页也预装入一些 局部性原理,40,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!