存储管理

来源:互联网 发布:纳米水离子 知乎 编辑:程序博客网 时间:2024/05/23 12:05

http://book.51cto.com/art/201204/331601.htm

一、存储管理的基本概念

1.绝对地址和逻辑地址

绝对地址:主存储器以字节为编址单位,每个字节都有一个地址与其对应。这些地址称为主存储器的“绝对地址”,绝对地址对应的主存储空间称为“物理地址空间”。逻辑地址:用户程序中使用的地址称为 “逻辑地址”,逻辑地址对应的存储空间称为 “逻辑地址空间”。逻辑地址从0开始编址。

2.地址重定位

重定位是指将程序地址空间中使用的逻辑地址变换成主存中的地址的过程,也称为地址重定位。重定位分为静态重定位和动态重定位。

3.覆盖和交换分区

(1)覆盖技术

当作业的地址空间超过系统的可用存储空间时,为能使大作业在小主存上工作,一个有效的办法是采用覆盖技术。可以将一个大的程序分成一个主程序和一系列的覆盖,每个覆盖是一个相对独立的程序单位。

(2)交换技术

系统在一个作业装入内存开始运行后,还可以根据需要把它交换出内存,如某作业在等待I/O而无需处理机处理时,将其交换出去,腾出内存空间给其他作业,待再运行时又调入调出,从而使资源的利用更为充分有效,但它同样是以牺牲处理机的时间为代价的。

二、分区存储管理

1.固定分区分配

一种静态分区方式,在处理作业前,内存事先固定划分为若干大小不等或相等区域,一旦划分好就不再变化。

2.可变分区分配

一种动态分区方式,在作业执行前并不建立分区,而是在处理作业过程中按需要建立分区。

3.可重定位分区分配

目的为解决“碎片”问题。碎片是指在已分配区之间存在着的一些没有被充分利用的空白区。解决办法是采用拼接技术,即移动内存中的作业,由存储器管理实施重定位,把已分配的各个分区 “移动”紧靠一边,空白区集中靠另一端。这就是可重定位分区分配策略。

4.分区保护

在并发环境中,对私有的数据信息需要加以限制和保护,以避免相互干扰和破坏。

三、分页存储管理

1.分页原理

将一个进程的地址空间划分成若干大小相等的区域,称为页。相应地,将主存空间划分成与页相同大小的若干物理块,称为块或页框架。在为进程分配主存时,将进程中若干页分别装入多个不邻接的块中。

2.地址结构

由两部分组成:前一部分为页号 P;后—部分为偏移量w,即页内地址。图 3-3中的地址长度为 32位,其中0~11位为页内地址(每页的大小为4KB),12~31位为页号,所以允许地址空间的大小最多为1MB个页。

四、分段存储管理

1.分段基本原理

作业的地址空间被划分为若干段,每个段定义了一组逻辑信息,如有主程序段、子程序段、数据段及栈段等,每个段都有自己的名字,都是从零开始编址的一段连续的地址空间,段的长度由相应逻辑信息组的长度决定,因而各段长度不等,整个作业的地址空间是二维的。分段系统中地址结构如图3-4所示,其逻辑地址由段号(名)和段内地址两部分组成,在该地址结构中,允许一个作业最多能有256个段,每个段的最大长度为64KB。

 图3-3 分页地址结构 图3-4 分段地址结构

2.分页和分段的主要区别

分页对用户是不透明的,分段对用户是透明的。页是信息的物理单位,分页仅仅是由于系统管理的需要,而不是用户的需要;而段是信息的逻辑单位,它含有一组具有相对完整意义的信息,是出于用户的需要。

分段的大小任意,分页固定。分页的长度固定,分页系统把逻辑地址划分为页号和页内地址两部分的功能,由机器硬件实现;而段的长度却不固定,由用户在编程时确定,或由编译程序在对源程序进行编译时,根据信息的性质来划分。

分页地址空间是一维的,而分段是二维的。分段存储管理有利于模块的动态链接、装入和分段共享。

五、段页式存储管理

先将整个主存划分成大小相等的存储块(页架),将用户程序按程序的逻辑关系分为若干个段,并为每个段赋予一个段名,再将每个段划分成若干页,以页架为单位离散分配。在段页式系统中,其地址结构由段号S、段内页号P和页内地址W 3部分组成,如图3-5所示。

 图 3-5 段页式管理地址结构

获得一条指令或数据,要三次访问内存:第一次,是从内存中取得页表始址;第二次,是从内存中取出物理块号形成物理地址;第三次,才能得到所需的指令或数据。

六、虚拟存储器

1、基本思想

利用大容量的外存(通常是高速硬盘)来扩充内存,产生一个比有限的实际内存空间大得多的、逻辑的虚拟内存空间,以便能够有效地支持多道程序系统的实现和大型作业运行的需要,从而增强系统的处理能力。当进程要求运行时,不是将它的全部信息装入内存,而是将其一部分先装入内存,另一部分暂时留在外存。进程在运行过程中,要使用的信息不在内存时,发生中断,由操作系统将它们调入内存,以保证进程的正常运行。

2.替换算法随机算法(RAND):随机地选择被淘汰的页,这种算法开销小,但被淘汰的页可能马上就会被访问,从而产生了“抖动”。

最佳置换算法(OPT):这是一种理论化的算法。该算法淘汰在访问串中将来再也不出现的或是在最长时间内不再访问的页。淘汰掉该页将不会造成因需要访问该页又需要把它调入的现象。这种最佳策略本身不是一种实际的方法,它的理论价值在于:用 OPT算法的缺页率去评价其他算法的优劣。

进先先出算法(FIFO):总是选择作业中在主存驻留时间最长(即最老)的一页淘汰。即先进入主存的页先退出主存。其理由是,最早调入主存的页,其不再被使用的可能性比最近调入主存的页要大。

最近最少使用算法(LRU):选择在最近一段时间内最久不用的页予以淘汰。这是最常用的页面置换算法,在UNIX V、Windows 95、Windows NT、OS/2中都采用LRU算法。

怎么考

【试题 3-16】2011年 11月真题 2

若某计算机系统的I/O接口与主存采用统一编址,则输入输出操作是通过( 2)指令来完成的。

(2)A. 控制    B.中断

C. 输入输出 D.访存

分析:统一编址方式是指I/O端口与主存单元使用同一个地址空间进行统一编址。在这种方式下,CPU指令系统中无需设置专门的与设备进行数据传输的输入输出指令,I/O端口被当成主存单元同样对待,对主存单元进行访问和操作的指令可以同样用于对I/O端口的访问和操作。【答案:D】

【试题 3-17】2011年 5月真题 27、28

某系统采用请求页式存储管理方案,假设某进程有6个页面,系统给该进程分配了4个存储块,其页面变换表如下表所示,表中的状态位等于1/0表示页面在内存/不在内存。当该进程访问的页面2不在内存时,应该淘汰表中页号为( 27)的页面。假定页面大小为4KB,逻辑地址为十六进制3C18H,该地址经过变换后页帧号为(28)。

 

(27)A.0 B.3 C.4 D.5

(28)A.2 B.5 C.8 D.12 分析:由表可知,页面1和页面2不在内存。当进程访问的页面2不在内存时,系统应该淘汰未被访问的页面。由访问位可知页面5没有被访问过,因此需要被淘汰。对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P可按下式求得:

 
其中,INT是整除函数。由“页面大小为4KB,逻辑地址为十六进制3C18H”可知,页号为3,查表知页面3对应的页帧号为2。【答案:(27)D (28)A】

【试题 3-18】2008年 12月真题 27、28

某虚拟存储系统采用最近最少使用(LRU)页面淘汰算法。假定系统为每个作业分配3个页面的主存空间,其中一个页面用来存放程序。现有某作业的部分语句如下:

  1. Var A: Array[1..128,1..128] OF integer;   
  2. i,j: integer;   
  3. FOR i:=1 to 128 DO   
  4. FOR j:=1 to 128 DO   
  5. A[i,j]:=0;  

设每个页面可存放128个整数变量,变量i、j放在程序页中,矩阵A按行序存放。初始时,程序及变量i、 j已在内存,其余两页为空。在上述程序片段执行过程中,共产生( 27)次缺页中断。最后留在内存中的是矩阵A的最后( 28)。

(27)A.64 B.128 C.256 D.512

(28)A.2行 B.2列 C.1行 D.1列分 析:参考试题3-19(2007年5月真题27、28)分析。【答案:B、A】

【试题 3-19】2008年 5月真题 27、28

在某计算机中,假设某程序的6个页面如右图所示,其中某指令“COPY A TO B”跨两个页面,且源地址A和目标地址B所涉及的区域也跨两个页面。若地址为A和B的操作数均不在内存,计算机执行该COPY指令时,系统将产生( 27)次缺页中断;若系统产生三次缺页中断,那么该程序应有(28)个页面在内存。

 

(27)A.2  B.3  C.4  D.5 

(28)A.2  B.3  C.4  D.5 

分 析:本题考查页面中断处理。【答 案:C、B】

在请求分页系统中,每次需要访问的页面不在主存中时,便要产生一个缺页中断,请求OS将所缺的页面调入主存,这是由缺页中断机构完成的。缺页中断发生时的事件顺序如下:

(1)硬件陷入内核,在堆栈中保存程序计数器。大多数机器将当前指令的各种状态信息保存在特殊的 CPU寄存器中。

(2)启动一个汇编代码例程保存通用寄存器和其他易失的信息,以免被操作系统破坏。这个例程将操作系统作为一个函数来调用。

(3)当操作系统发现一个缺页中断时,尝试发现需要哪个虚拟页面。通常一个硬件寄存器包含了这一信息,如果没有的话,操作系统必须检索程序计数器,取出这条指令,用软件分析这条指令,看看它在缺页中断时正在做什么。

(4)一旦知道了发生缺页中断的虚拟地址,操作系统检查这个地址是否有效,并检查存取与保护是否一致。如果不一致,向进程发出一个信号或杀掉该进程。如果地址有效且没有保护错误发生,系统则检查是否有空闲页框。如果没有空闲页框,执行页面置换算法寻找一个页面来淘汰。

(5)如果选择的页框“脏”了,安排该页写回磁盘,并发生一次上下文切换,挂起产生缺页中断的进程,让其他进程运行直至磁盘传输结束。无论如何,该页框被标记为忙,以免因为其他原因而被其他进程占用。

(6)一旦页框“干净”后(无论是立刻还是在写回磁盘后),操作系统查找所需页面在磁盘上的地址,通过磁盘操作将其装入。该页面被装入后,产生缺页中断的进程仍然被挂起,并且如果有其他可运行的用户进程,则选择另一个用户进程运行。

(7)当磁盘中断发生时,表明该页已经被装入,页表已经更新可以反映它的位置,页框也被标记为正常状态。

(8)恢复发生缺页中断指令以前的状态,程序计数器重新指向这条指令。

(9)调度引发缺页中断的进程,操作系统返回调用它的汇编语言例程。

(10)该例程恢复寄存器和其他状态信息,返回到用户空间继续执行,就好像缺页中断没有发生过一样。由题目知,地址为A和B的操作数均不在内存,计算机执行该COPY指令时,系统会去访问A的源地址和

B的目标地址,即3~6页,所以系统将产生4次缺页中断。整个程序有6个页面,若产生3次缺页中断,则该程序有3个页面在内存。



原创粉丝点击