- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 图5.33 段页式管理中段表、页表与内存的关系 3. 动态地址变换过程 在一般使用段页式存储管理的计算机系统中,都在内存中辟出一块固定的区域存放进程的段表和页表。因此,在段页式管理系统中,要对内存中指令或数据进行一次存取的话,至少需要访问三次以上的内存。第一次是由段表地址寄存器得到段表始址去访问段表,由此取出对应段的页表地址。第二次则是访问页表得到所要访问的物理地址。只有在访问了段表和页表之后,第三次才能访问真正需要访问的物理单元。显然,这将使CPU的执行指令速度大大降低。 为了提高地址转换速度,设置快速联想寄存器就显得比段式管理或页式管理时更加需要。在快速联想寄存器中,存放当前最常用的段号s、页号p和对应的内存页面与其他控制用栏目。当要访问内存空间某一单元时,可在通过段表、页表进行内存地址查找的同时,根据快速联想寄存器查找其段号和页号。如果所要访问的段或页在快速联想寄存器中,则系统不再访问内存中的段表、页表而直接把快速联想寄存器中的值与页内相对地址d拼接起来得到物理地址。经验表明,一个在快速联想寄存器中装有1/10左右的段号、页号及页面的段页式管理系统,可以通过快速联想寄存器找到90%以上的所要访问的内存地址。 段页式管理的地址变换机构如图5.34所示。 图5.34 段页式地址变换 总之,因为段页式管理是段式管理的页式管理方案结合而成的,所以具有它们二者的优点。但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。另外,需要的硬件以及占用的内存也有所增加。更重要的是,如果不采用联想寄存器的方式提高CPU的访内速度,将会使得执行速度大大下降。 5.6 局部性原理和抖动问题 动态页式管理,段式管理以及段页式管理都提供了一种将内存和外存统一管理,内存中只存放那些经常被调用和访问的程序段和数据,而进程或作业的其他部分则存放于外存中待需要时再调入内存的虚拟存储器的实现方法。然而,由于上述实现方法实质上要在内存和外存之间交换信息,因此,就要不断地启动外部设备以及相应的处理过程。 段式、页式以及段页式虚存实现方法都要求在内存中存放一个不小于最低限度的程序段或数据,而且它们必须是那些正在被调用,或那些即将被调用的部分。 由模拟实验知道,在几乎所有的程序的执行中,在一段时间内,CPU总是集中地访问程序中的某一个部分而不是随机地对程序所有部分具有平均访问概率。人们把这种现象称为局部性原理(principle of locality)。 但是,如果不能正确地将那些系统所需要的局部段放入内存的话,则显然系统的效率会大大降低,甚至无法有效地工作。 试验表明,任何程序在局部性放入时,都有一个临界值要求。当内存分配小于这个临界值时,内存和外存之间的交换频率将会急剧增加,而内存分配大于这个临界值时,再增加内存分配也不能显著减少交换次数。这个内存要求的临界值被称为工作集。如图5.35所示。 图5.35 内存与交换次数的关系 一个进程执行过程中缺页(missing page)的发生有两种可能。一种是并发进程所要求的工作集总和大于内存可提供的可用区。这时,系统将无法正常工作,因为缺乏足够的空间装入所需要的程序和数据。另一种可能性是,虽然存储管理程序为每个并发进程分配了足够的工作集,但系统无法在开始执行前选择适当的程序段和数据进入内存。这种情况下,只能依靠执行过程中,当CPU发现所要访问的指令或数据不在内存时,由硬件中断后转入中断处理程序,将所需要的程序段和数据调入。这是一种很自然的处理方法。 当给进程分配的内存小于所要求的工作集时,由于内存外存之间交换频繁,访问外存时间和输入/输出处理时间大大增加,反而造成CPU因等待数据空转,使得整个系统性能大大下降,这就造成了系统抖动。 可以利用统计模型进一步分析工作集与抖动之间的关系: 设r为CPU在内存中存取一个内存单元的时间,t为从外存中读出一页数据所需时间,p(s)为CPU访问内存时,所访问的页正好不在内存的概率,这里s是当前进程在内存中的工作集。 显然,在虚存情况下存取一个内存单元的平均时间可描述为T=r+p(s)*t。 由程序模拟可知,p(s)=ae-bs。 这里,0a1b,ae-bsr。 另外,假定内存中各并发进程具有相同的统计特性,而且对于一个并发进程来说,只有发生缺页时才变成等待状态。这是为了简化讨论而忽略了外部设备和进程通信功能的存在。 由于访问外存一个页面
原创力文档


文档评论(0)