分页存储管理和分段存储管理

1.采用相联存储器后地址转换过程,用图表示出来

2.详述分段管理和分页管理的区别。 

3.P249 习题11

1.采用相联存储器后地址转换过程,用图表示出来CPU对存储器的访问,通常是一次读写一个字单元。当CPU访Cache不命中时,需将存储在主存中的字单元连同 其后若干个字一同调入Cache中,之所以这样做,是为了使其后的访存能在Cache中命中。因此,主存和Cache之间一次交换的数据单位应该是一个数 据块。数据块的大小是固定的,由若干个字组成,且主存和Cache的数据块大小是相同的。

 从Cache-主存层次实现的目标看,一方面既要使CPU的访存速度接近于访Cache的速度,另一方面为用户程 序提供的运行空间应保持为主存容量大小的存储空间。在采用Cache-主存层次的系统中,Cache对用户程序而言是透明的,也就是说,用户程序可以不需 要知道Cache的存在。因此,CPU每次访存时,依然和未使用Cache的情况一样,给出的是一个主存地址。但在Cache-主存层次中,CPU首先访 问的是Cache,并不是主存。为此,需要一种机制将CPU的访主存地址转换成访Cache地址。而主存地址与Cache地址之间的转换是与主存块与 Cache块之间的映射关系紧密联系的,也就是说,当CPU访Cache未命中时,需要将欲访问的字所在主存中的块调入Cache中,按什么样的策略调 入,直接影响到主存地址与Cache地址的对应关系,这也就是本小节要解决的主存与Cache的地址映射问题。

 主要有三种地址映射方式,分别为全相联映射、直接相联映射和组相联映射。

 1. 全相联映射

 全相联映射是指主存中任一块都可以映射到Cache中任一块的方式,也就是说,当主存中的一块需调入Cache时,可根据当时Cache的块占用或分配情况,选择一个块给主存块存储,所选的Cache块可以是Cache中的任意一块。例如,设Cache共有2C块,主存共有2M块,当主存的某一块j需调进Cache中时,它可以存入Cache的块0、块1、…、块i、… 或块2C -1的任意一块上。如图4-28所示。

主存与Cache的地址映射 - zjfzjf - zjfzjf

  

图4-28全相联映射方式

 在全相联映射方式下,CPU的访主存地址为如下形式:

主存与Cache的地址映射 - zjfzjf - zjfzjf

  

 其中,M为主存的块号,W为块内的字号。而CPU访Cache的地址形式为:

主存与Cache的地址映射 - zjfzjf - zjfzjf

  

 其中,C为Cache的块号,W为块内的字号。

 主存地址到Cache地址的转换是通过查找一个由相联存储器实现的块表来完成的,其形成过程如图4-29示。

 

主存与Cache的地址映射 - zjfzjf - zjfzjf

 

图4-29全相联映射的地址转换

 当 一个主存块调入Cache中时,会同时在一个存储主存块号和Cache块号映射表的相联存储器中进行登记。CPU访存时,首先,根据主存地址中的主存块号 M在相联存储器中查找Cache块号,若找到,则本次访Cache命中,于是将对应的Cache块号取出,并送访Cache地址的块号C字段;紧接着将主 存地址的块内字号W直接送Cache地址的块内字号W字段,从而形成一个访Cache的地址;最后根据该地址完成对Cache单元的访问.

 全相联映射方式的优点是Cache的空间利用率高,但缺点是相联存储器庞大,比较电路复杂,因此只适合于小容量的Cache之用。 

2.详述分段管理和分页管理的区别。

分页系统的缺点
  缺点的改进:
①页表太大?这个缺点用多级页表来克服了。
②多级页表速度慢?这个问题用TLB解决了大部分。页面的来回更换?这个问题用页面更换算法解决了。

 
缺点③:共享困难,虽然理论上我们可以按页面进行共享,似乎可以!但是呢这根本就是不现实的,因为一个页面的内容很可能存在代码和数据,即很难使得一个页面里面只包含可共享的内容 或者 不可共享的内容缺点④:一个进程只能占用一个虚拟地址空间,这也是分页系统无法克服的。所以一个程序的大小最大只能和虚拟地址空间的大小一样,其所有的内容都必须在这个虚拟地址空间中分布。

但是很多人觉得一个程序不必要分配多个虚拟地址空间!


那么我们来看一个例子:编译器的工作过程。我们知道在编译器工作时需要保持多个数据结构:词法分析树,常数表,代码段,符合表 ,调用栈。使用保持多个数据结构并没有任何问题,
问题出现在:这些数据结构可以独立的增长和缩小,从而造成了该数据结构所需的内存空间的变化。


那么我们来想怎么实现在一个虚拟地址空间内,实现各个数据段的空间的增加和减少???


解决方法:那一个程序占用一个虚拟空间不能解决我们各个数据结构段增长的需求!那么就使用多个虚拟地址空间来解决。

 

分段管理系统
  定义:分段管理是将一个程序按照逻辑单元分成多个程序段,每个段使用自己单独的虚拟地址空间。
5个段占用5个虚拟地址空间。这样一个段占用一个虚拟地址空间,就不会发生空间增长时碰撞到另一个段的问题。

 

 

 
分段原理:一个程序占据多个虚拟地址空间,那么不通过的段有可能有同样的虚拟地址空间。在分段情况下,一个虚拟地址空间又段号和段内偏差。段号找相应的段地址空间!

  实现手段:由于分段内存管理 和 基本内存管理有着类似之处,所以分段也是使用 基址---极限管理模式。
不过这里使用的是一组 基址—极限对。而对每一对基址极限用于其中一段的管理。

 

分段管理的一个重要数据结构就是段表。该表存放的是虚拟的段号到该段所在内存基址的映射。如果一个段不存在,则段号对应的基址将不存在。


分段的优缺点
 
优点:

1.每个逻辑单元可以独占一个虚拟地址空间,这样所写程序的空间大为增长。


2.共享性强。


3.相比于分页,当对于空间稀疏的程序,分页仍然需要分配虚拟页面。而分段不给他分配任何的虚拟空间。


缺点:既然是分段,就存在前面基本内存管理的缺点-----外部碎片化 和 一个段必须全部加载到内存上。

3.P249 习题11

  答:(1)649

  (2)1727

  (3)2301

  (4)140

  (5)1956

 

posted @ 2019-05-31 15:15  宋万里  阅读(2287)  评论(0编辑  收藏  举报