|
知识路径: > 计算机系统知识 > 计算机软件知识 > 操作系统知识 > 存储管理(主存保护、动态连接分配、分页、虚存) > 存储管理 >
|
被考次数:1次
被考频率:低频率
总体答错率:58%  
知识难度系数:
|
由 软考在线 用户真实做题大数据统计生成
|
考试要求:掌握
相关知识点:8个
|
|
|
|
|
用分区方式管理的存储器,每道程序总是要求占用主存的一个或几个连续存储区域,作业或进程的大小仍受到分区大小或内存可用空间的限制,因此,有时为了接纳一个新的作业而往往要移动已在主存的信息。这不仅不方便,而且开销不小。采用分页存储器既可免去移动信息的工作,又可尽量减少主存的碎片。分页式存储管理的基本原理如下:
|
|
|
(1)页框:物理地址分成大小相等的许多区,每个区称为一块(又称页框Page Frame)。
|
|
|
(2)页面:逻辑地址分成大小相等的区,区的大小与块的大小相等,每个区称一个页面(page)。
|
|
|
(3)逻辑地址形式:与此对应,分页存储器的逻辑地址由两部分组成(页号和单元号)。逻辑地址格式如下:
|
|
|
|
采用分页式存储管理时,逻辑地址是连续的。所以,用户在编制程序时仍只需使用顺序的地址,而不必考虑如何去分页。由地址结构和操作系统管理的需要来决定页面的大小,从而,也就确定了主存分块的大小。用户进程在内存空间中每个页框内的地址是连续的,但页框和页框之间的地址可以不连续。存储地址由连续到离散的变化,为以后实现程序的“部分装入、部分对换”奠定了基础。
|
|
|
(4)页表和地址转换:在进行存储分配时,总是以块(页框)为单位进行分配,一个作业的信息有多少页,那么在把它装入主存时就给它分配多少块。但是,分配给作业的主存块可以是不连续的,即作业的信息可按页分散存放在主存的空闲块中,这就避免了为得到连续存储空间而进行的移动。那么,当作业的程序和数据被分散存放后,作业的页面与分给的页框如何建立联系呢?页式虚拟地址如何变换成页框物理地址呢?作业的物理地址空间由连续变成分散后,如何保证程序正确执行呢?采用的办法是动态重定位技术,让程序的指令执行时作地址变换,由于程序段以页为单位,所以,给每个页设立一个重定位寄存器,这些重定位寄存器的集合便称为页表(Page Table)。页表是操作系统为每个用户作业建立的,用来记录程序页面和主存对应页框的对照表,页表中的每一栏指明了程序中的一个页面和分得的页框的对应关系。通常为了减少开销,不是用硬件,而是在主存中开辟存储区存放页表,系统中另设一个页表主存起址和长度控制寄存器(Page Table Control Register),存放当前运行作业的页表起址和页表长,以加快地址转换速度。每当选中作业运行时,应进行存储分配,为进入主存的每个用户作业建立一张页表,指出逻辑地址中页号与主存中块号的对应关系,页表的长度随作业的大小而定。同时页式存储管理系统还建立一张作业表,将这些作业的页表进行登记,每个作业在作业表中有一个登记项。作业表和页表的一般格式如下图所示。然后,借助于硬件的地址转换部件,在作业执行过程中按页动态定位。调度程序在选择作业后,从作业表的登记项中得到被选中作业的页表始址和长度,将其送入硬件设置的页表控制寄存器。地址转换时,就可以从页表控制寄存器中找到相应的页表,再以逻辑地址中的页号为索引查页表,得到对应的块号,根据关系式:
|
|
|
|
|
|
计算出欲访问的主存单元的地址。因此,虽然作业存放在若干个不连续的块中,但在作业执行中总是能按正确的地址进行存取。
|
|
|
|
页表可以存放在一组寄存器中,地址转换时只要从相应寄存器中取值就可得到块号,这虽然方便了地址转换,但硬件花费代价太高,如果把页表放在主存中就可降低计算机的成本。但是,当要按给定的逻辑地址进行读/写时,必须访问两次主存。第一次按页号读出页表中相应栏内容的块号,第二次根据计算出来的绝对地址进行读/写,降低了运算速度。
|
|
|
为了提高运算速度,通常都设置一个专用的高速存储器,用来存放页表的一部分,这种高速存储器称为相联存储器(Associative Memory),存放在相联存储器中的页表称为快表。相联存储器的存取时间是远小于主存的,但造价高,故一般都是小容量的,例如Intel 80486的快表为32个单元。
|
|
|
根据程序执行局部性的特点,即它在一定时间内总是经常访问某些页,若把这些页登记在快表中,无疑将大大加快指令的执行速度。快表的格式如下:
|
|
|
|
它指出已在快表中的页及其对应主存的块号。有了快表后,绝对地址形成的过程是,按逻辑地址中的页号查快表,若该页已登记在快表中,则由块号和单元号形成绝对地址;若快表中查不到对应页号,则再查主存中的页表而形成绝对地址,同时将该页登记到快表中。当快表填满后,又要在快表中登记新页时,则需在快表中按一定策略淘汰一个旧的登记项,最简单的策略是“先进先出”,总是淘汰最先登记的那一页。
|
|
|
采用相联存储器的方法后,地址转换时间大大下降。假定访问主存的时间为100×10-9s,访问相联存储器的时间为20×10-9s,相联存储器为32个单元时查快表的命中率可达90%,于是按逻辑地址进行存取的平均时间为:
|
|
|
(100+20)×90%+(100+100+20)×(1-90%)=130×10-9s
|
|
|
比两次访问主存的时间100×10-9s×2+20×10-9s=220×10-9s下降了四成多。
|
|
|
同样,整个系统也只有一个相联存储器,只有占用CPU者才占有相联存储器。在多道程序中,当某道程序让出处理器时,应同时让出相联存储器。由于快表是动态变化的,所以让出相联存储器时应把快表保护好以便再执行时使用。当一道程序占用处理器时,除置页表控制寄存器外还应将它的快表送入相联存储器。
|
|
|