欢迎来到天天文库
浏览记录
ID:36614881
大小:399.51 KB
页数:8页
时间:2019-05-13
《分页与分段机制的研究比较》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、分页与分段机制的比较研究崔洪星(华中科技大学机械科学与工程学院M201170270)摘要:首先对分页存储管理和分段存储管理的问题引入、基本思想、地址结构和地址变换分别进行了阐述,然后进行比较分析,最后提出了一种段页式存储管理思想。1.分页存储管理1.1.问题引入当程序太大,超过了空闲内存的容量时,没有办法把它全部装入内存,这时该怎么办?在以前,人们通常采用的解决方案是覆盖技术。也就是说,把该程序划分为若干部分,称为覆盖块,然后只把哪些当前需要用到的指令和数据保存在内存中,而把其余的指令和数据保存在外存中。对于存放在外存上的覆盖块,当需要用
2、到它们时,会由操作系统动态地切入内存。虽然覆盖块的交换操作是由操作系统来完成的,但必须由程序员手工地把一个大的程序划分为若干个小的功能模块,并确定各个模块之间的调用关系。这种事情费时又费力,增加了编程的复杂度。不久就有人找到了一种办法,可以把全部的工作都交给计算机来完成。这种方法就是基于分页存储管理思想的虚拟内存技术。1.2.基本思想在虚拟页式存储管理中,一方面,把物理内存划分为许多个固定大小的块,称为物理页面。另一方面,把虚拟地址空间也划分为大小相同的块,称为虚拟页面。物理页面和虚拟页面大小相等,可将虚拟页面的任一页面放进内存的任一块中
3、,实现离散分配。虚拟地址与物理内存地址之间的映射关系存放在页表中,分页系统中,CPU每次要存取一个数据,都要两次访问内存(访问页表、访问实际物理地址)。为提高地址变换速度,增设一个具有并行查询能力的特殊高速缓冲存储器,称为“联想存储器”或“快表”,存放当前访问的页表项。1,3.地址变换在下面的例子中,页面的大小是4KB。由于虚拟地址空间是64KB,物理内存是32KB,因此我们将得到16个虚拟页面和8个物理页面。当一个用户程序需要在内存和磁盘之间换入换出时,不是以整个程序为单位,而是以页面为单位。假设程序在运行时,需要去访问地址0。例如,执
4、行下面的指令:MOVREG,0虚拟地址0被发送给MMU,然后MMU就会发现这个虚拟地址位于第0个页面中而第0个虚拟页面存放在内存的第2个物理页面中,它的起始地址是8192,然后再加上页内的偏移地址0,所以最后得到的物理地址就是8192.然后MMU就会把这个真正的物理地址发送到地址总线上,从而去访问相应的内存单元。这样,这一次的内存访问就顺利得完成了。经过适当的设置后,MMU能够将16个虚拟页面映射到相应的8个物理页面之一,但这并没有解决虚拟地址空间比物理内存大的问题。而其他的虚拟页面,则无法被映射,在图中用X来表示。在实际的硬件上,会由一
5、个有效位来描述每个虚拟页面是否在内存中。如果程序访问了一个未被映射的页面,例如,它执行了如下的指令:MOVRGE,32780也就是说,对虚拟地址32768进行访问(这个虚拟地址位于第8个虚拟页面中,而且页内偏移地址是12),那么MMU在进行地址映射的时候就会发现,第8个虚拟页面并未在内存中,因此无法完成此次地址映射。这时,MMU就会引发一个缺页中断,把这个问题提交给操作系统去处理。操作系统将从内存中挑选一个使用不多的物理页面,把它的内容写回到磁盘,从而腾出了一个空闲页面,然后把引发缺页中断的那个虚拟页面装入该空闲页面中,并对地址映射关系进
6、行更新。最后,回到被中断的指令重新开始执行。例如,假设操作系统选中了物理页面1,把它的内容保存在磁盘上,然后把第8个虚拟页面装入到物理页面1.接下来,要对MMU的地址映射进行两处修改:一是将虚拟页面1的表项设置为未映射,这样,如果将来有程序需要去访问虚拟页面1的地址,就会引发缺页中断;二是将虚拟页面8的表项设置为1,这样,当重新执行被中断的指令时,就会把虚拟地址32780映射到相应的物理地址4108。从理论上讲,虚拟地址到物理地址的映射就像我们刚才所描述的那样,虚拟地址被分成虚拟页面号和偏移量两部分。在地址映射时,使用虚拟页面号作为索引去
7、访问页表,从而得到相应的物理页面号。然后用物理页面号来取代虚拟页面号,与虚拟地址中的偏移量进程组合,从而得到最终的物理地址。图1,虚拟地址与物理内存地址之间的映射关系1.4.多级页表在页表的具体实现上,除了以上的简单描述之外,还要考虑两个重要的问题:1.页表可能会比较大2.地址映射必须十分迅速解决以上两个问题,现在多采用多级页表技术。多级页表的思路是,虽然进程的虚拟地址空间很大,但是当进程在运行时,并不会用到所有的虚拟地址,所以没有必要把所有的页表项都保存在内存中。假设虚拟地址为32位,页面大小为4KB。如果是通常的页式存储管理,将把虚拟
8、地址划分为两部分:虚拟页面号20位,页内偏移地址12位。但是在二级页表的结构下,还需要把虚拟页面号再进一步地划分为两部分:10位的字段PT1和10为的字段PT2。多级页表的秘诀在于避免把所有的
此文档下载收益归作者所有