存储器管理与虚拟内存的引入与系统对虚拟内存的处理过程

计算机组织与结构1

  • 存储器管理与虚拟内存的引入
    • 为什么要进行存储器管理?
    • 简单的交换
    • 分页分段、虚拟内存的引入及不足
    • 虚拟内存的调度方法(Pentiunm存储器管理)

存储器管理与虚拟内存的引入

为什么要进行存储器管理?

众所周知,I/O操作比CPU处理数据要慢得多,而使得处理器在多道程序设计中,处理器仍然可能有很多时间处理空闲状态,所以为避免CPU空闲,需要进行设计来使得CPU大多数时间都在工作,那么,简单增加主存不就行了?然而,主存的昂贵性不支持我们这么做,所以,就需要进行存储器的管理。

简单的交换

磁盘I/O通常比较快,所以可以将进程队列储存在磁盘上,从磁盘上读入与读出,即从主存读出的进程将进入磁盘的中间队列,然后处理新的从磁盘读入的进程。该过程即称为交换。

分页分段、虚拟内存的引入及不足

  1. 简单的分区机制:最简单的分区机制,即将主存块等分,然后放入不同的进程,这样做法的弊端:当不同大小的进程进入主存进行处理时,无法对主存空间进行完全的利用。
  2. 分页:假设把存储器分成相当小的、相等的固定长度的存储块,将每个进程也划分成小的固定长的程序块,那么程序的每个程序块(称为页)能分配到存储器中可用的每个存储块(称为帧或页帧)中。页表记录每页的帧地址。
  3. 逻辑地址与物理地址:逻辑地址是相对于程序起止地址的储存地址单元,提供了逻辑地址(页号、相对地址)后,处理器用页表来产生物理地址。注:帧即在实际的内存中处于的位置,而页是进程被分成的一个个小的程序块。
  4. 虚拟存储器:对分页方案进行改进,将之前固定存于主存中的页改为需要就存入主存(即主存中只存一部分页),页替换的算法(最近最少使用算法),所以主存中只存一个很大的程序但是在磁盘中还有这个程序的其他部分,所以可以提高存储。
  5. 页表的结构:(1)从存储器中读取一个字的基本机制:通过页表把虚拟或逻辑地址(有页号和偏移量组成)转化成物理地址
    (2)很大的程序有时会使用不止一页,所以虚拟地址会由页号+偏移组成,页号代表位于哪个页,而偏移代表位于页中的位置(二级页表)
  6. 快表:将经常使用的进程位于的虚拟地址存储在快表中能够加快虚拟地址转化为物理地址的速度,相对于普通页表,快表对应的物理地址在cache中,故可以快速检索。
    7.分段用于逻辑分区,然后逻辑分区进行再分配

虚拟内存的调度方法(Pentiunm存储器管理)

  1. 分页不分段式:虚拟空间被分成大小相等的页,称为逻辑页或虚页。主存空间也被分成同样大小的页,称为物理页或实页。相应地,虚拟地址分为两个字段:高位字段为虚页号,低位字段为页内地址。实存地址也分为两个字段:高位字段为实页号,低位字段为页内地址。同时,页的大小都取2的整数幂个字。
    通过页表可以把虚拟地址转换成物理地址。每个程序设置一张页表,在页表中,对应每一个虚页号都有一个条目,条目内容至少包含该虚页所在的主存页面地址(实页号),用它作为实存地址的高位字段;实页号与虚拟地址的页内地址相拼接,就产生完整的实存地址,据此访问主存。

  2. 分段不分页式:页面是主存物理空间中划分出来的等长的固定区域。分页方式的优点是页长固定,因而便于构造页表、易于管理,且不存在外碎片。但分页方式的缺点是页长与程序的逻辑大小不相关。例如,某个时刻一个子程序可能有一部分在主存中,另一部分则在辅存中。这不利于编程时的独立性,并给换入/换出处理、存储保护和存储共享等操作造成麻烦。
    另一种划分可寻址的存储空间的方法称为分段。段是按照程序的自然分界划分的、长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。
    在段式虚拟存储系统中,虚拟地址由段号和段内地址组成,虚拟地址到实存地址的变换通过段表来实现。每个程序设置一个段表,段表的每一个表项对应一个段,每个表项至少包括三个字段:有效位(指明该段是否已经调入主存)、段起址(该段在实存中的首地址)和段长(记录该段的实际长度)。

  3. 分段分页存储器:将以上两种方法综合起来,对对应的程序进行分段,然后在对每个段进行分页。

参考:
【1】 计算机组成与体系结构性能设计,William Stallings著,第八版。
【2】百度百科,虚拟内存词条

你可能感兴趣的:(计算机组成与结构,计算机组成与结构,虚拟内存,分页分段)