1、计算机组成原理之段页式虚拟存储器
定义:
段页式虚拟存储器将程序按逻辑结构分段后,再把每段分成固定大小的页。程序对主存的调入、调出以页为基本传送单位,但可以按段实现共享和保护。
实现原理:
程序划分:首先将用户程序分成若干个段,每个段再按照实存的页大小进行分页。
段表与页表:每个程序对应一个段表,每个段表又对应一个或多个页表。段表记录每个段的起始页号和段长等信息,页表记录每个页在主存中的物理页号和是否已装入、已修改等标志。
地址变换:CPU访存时,根据段号得到段表地址,从段表中取出该段的页表起始地址,与虚地址中的段内页号合成得到页表项地址。从页表中取出物理页号,与页内地址拼接形成实地址。
优点:
模块化性能好:易于实现程序的动态链接和调度。
主存利用率高:通过分页可以减少内存碎片。
易于管理辅存:页式管理使得辅存管理相对简单。
保护和共享方便:可以按段实现存储保护和共享。
缺点:
地址变换复杂:需要多次查表,包括段表和页表,可能降低访存速度。
需要额外的存储空间:用于存储段表和页表。
2、段页式虚拟存储器具体实现原理是什么
程序划分:将用户程序按照逻辑结构划分为若干个段,每个段再按照实存的页大小进行分页。这样,程序就被组织成段和页的两级结构。
段表与页表:系统为每个程序建立一张段表,用于记录该程序的各个段的起始页号和段长等信息。同时,每个段又对应一张页表,页表中记录了该段中各个页在主存中的物理页号和是否已装入、已修改等标志。
地址变换:当CPU需要访问某个虚拟地址时,首先通过段表找到对应的段,然后利用该段的页表将虚拟地址中的页号转换为物理页号,最后与页内地址拼接形成物理地址。这个地址变换过程需要多次查表,包括段表和页表。
3、段页式虚拟存储器如何实现地址变换
段页式虚拟存储器实现地址变换的过程如下:
首先,配置一个段表寄存器,其中存放段表始址和段表长TL。
进行地址变换时,利用段号S,将它与段表长TL进行比较。若S<TL,表示未越界。
利用段表始址和段号求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址。
利用逻辑地址中的段内页号P获得对应页的页表项位置,从中读出该页所在的物理块号b。
利用块号b和页内地址来构成物理地址。
在段页式系统中,为了获得一条指令或数据,通常需要三次访问内存:
第一次访问内存中的段表,从中取得页表始址。
第二次访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址。
第三次访问才是真正从第二次访问所得的地址中取出指令或数据。
为了提高执行速度,可以在地址变换机构中增设一个高速缓冲寄存器。这样,每次访问时可以先检查高速缓存,若找到匹配的表项,则可直接得到相应页的物理块号,减少内存访问次数。
4、段页式虚拟存储器如何优化访存效率
段页式虚拟存储器通过结合分段存储和分页存储的优点来优化访存效率,具体方式如下:
逻辑分段与物理分页:段页式虚拟存储器先将程序按逻辑结构分段,每段再划分为固定大小的页。这种方式既保留了分段的灵活性,使段的分界与程序的自然分界相对应,具有逻辑独立性,易于编译、管理、修改和保护,也具备了分页的高效性,便于内存管理。
地址映射:在段页式虚拟存储器中,虚地址包括段号、段内页号和页内地址。通过两次查表(先查段表,再查页表),可以将虚地址转换为实地址。虽然这种方式增加了系统开销,但结合了分段和分页的优点,能够更有效地处理内存管理。
利用TLB优化:为了避免每次访存都需要查表,可以利用转换后援缓冲器(TLB)缓存常用的页表项。当CPU访存时,首先检查TLB是否命中,如果命中则直接访问主存,从而减少了查表次数,提高了访存效率。
页面置换算法:在段页式虚拟存储器中,当所需页面不在物理内存中时,会产生缺页中断。此时,需要采用有效的页面置换算法(如FIFO、LRU、OPT等)来决定哪些页面应当被置换出内存,以腾出空间给即将使用的页面。这些算法能够降低页面置换的频率,减少缺页中断的发生,从而提高访存效率。
综上所述,段页式虚拟存储器通过逻辑分段与物理分页、地址映射、利用TLB优化以及采用有效的页面置换算法等方式来优化访存效率。