《计算机组成与体系结构》——7.2虚拟存储器

本节重点:

  • 虚拟存储器技术
  • 页表
  • 块表
  • 分段

分页技术使多道程序设计变得真正有效,而且进程分页这一简单策略导致了另一重要概念的产生——虚拟存储器

1 请求分页

为了理解虚拟存储器,我们对刚才讨论的分页方案进行改进。改进的方案称为请求分页,即一个进程的每个页只有在需要时才调入。
采用了请求分页,就没有必要将整个进程装入主存,这将产生一个惊人的结论:一个进程可能比主存所有的空间都大。
因为进程只在主存中运行,所以主存称为实存储器。但是程序员或用户看到了一个大得多的存储器,它分配在磁盘上,后者称为虚拟存储器。虚拟存储器使多道程序设计更为有效,同时消除了用户使用主存的限制。

2 页表结构

从存储器中读取一个字的基本机制包括:通过页表把虚拟或逻辑地址(由页号和偏移量组成)转换成物理地址(由帧号和偏移量组成)。因为页表是可变长的,与进程有关,所以我们不能期望将它存入寄存器中,而必须将它存入主存中。

3 块表

原则上,每次虚拟存储器的访问能引起两次物理存储器的存取:一次是获得相应的页表项,另一次是获得所需的数据。因此,即使一个简单的虚拟存储器方法也将使存储器存取时间加倍。为了解决这个问题,许多虚拟存储器方案使用一个特殊的高速缓存来存放页表项,通常称为块表(TLB)。这个高速缓存功能与存储器中的高速缓存相同,它用来存储最近使用的那些页的页表项。

《计算机组成与体系结构》——7.2虚拟存储器_第1张图片
分页操作和块表(TLB).png

可以看出,单个存储器访问所设计的处理器硬件的复杂性。虚拟地址转换成实地址,这涉及到访问页表,页表可能在TLB、主存或硬盘上。然后要访问字,这字也可能在高速缓存、主存或硬盘上,如果在磁盘上,则还需要将包括该字的页调入主存,把它的块转入高速缓存中。此外,还要更新该页的页表项。

4 分段

另一种划分可寻址存储器的方法是分段(segmentation)。分页对程序员是不可见的,其目的是为程序员提供较大的地址空间。而分段通常对程序员是可见的,它使组织程序和数据更方便,能将特权、保护属性与指令、数据联系起来。
分段后,存储器由多个地址空间或短组成。段长度是可变、可动态分配的。通常,程序员或操作系统为程序和数据分配不同的段。各程序由许多程序段和数据段,各段可制定分配存取权和使用权,存储器访问地址由段号和偏移量组成。
对程序员来讲,分段的地址空间有许多优点:

  1. 简化了对数据结构的处理。
  2. 将程序分段允许每段程序独立地修改和重编译。
  3. 可以实现进程共享。程序员将某程序或数据表放入一段,其他进程页可以访问该段内容。
  4. 段保护。程序员可以赋予特定段存取特权。

总结

从上一节操作系统对进程的调度,我们了解了进程的分页技术。这一节讲解操作系统的另一任务——存储器管理。要点如下:

  • 请求分页可以不把整个进程装入主存,因此可以运行比主存空间更大的进程,那部分没有放到主存中的页存放在磁盘上,我们称之为虚拟存储器。
  • 然后又讲了页表、块表和分段。页表是维护页的表,而块表是页表的索引,放在速度较快的缓存上;
  • 分段是对主存进行空间的划分,可以支持程序员对其进行操作。

参考文献:计算机组成与体系结构:性能设计

你可能感兴趣的:(《计算机组成与体系结构》——7.2虚拟存储器)