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