存储管理

来源:互联网 发布:网络犯罪的客观原因有 编辑:程序博客网 时间:2024/06/04 18:57

所谓虚拟存储技术,即在内存中保留一部分程序或数据,在外存中放置整个地址空间的副本。程序运行过程中可以随机访问内存中的数据或程序,但需要的程序或数据不在内存时,就将内存中部分内容根据情况写回外存,然后从外存调入所需程序或数据,实现作业内部的局部转换,从而允许程序的地址空间大于实际分配的存储区域。它在内存和外存之间建立了层次关系,使得程序能够像访问内存一样访问外存,主要用于解决内存的容量问题。

地址变换

用户编程所用的地址称为逻辑地址(虚地址),而实际的内存地址则称为物理地址(实地址),每次访问内存时都要进行逻辑地址到物理地址的转换,这种转换是由硬件完成的,而内存和外存间的信息动态调度是硬件和操作系统两者配合完成的。
(1)静态重定位:在程序执行前,由装配程序完成地址映射工作。
(2)动态重定位:在程序执行过程中,在CPU访问内存之前,依靠硬件完成地址变换。

虚拟存储器存储组织

(1)单一连续分区:把的有用户区都分配给唯一的用户作业,当作业被调用时,进程全部进入内存,一旦完成,所有内存恢复空闲,因此,它不支持多道程序设计。
(2)固定分区:这是支持多道程序设计的最简单的存储管理方法,它把内存分成若干个固定的和大小不同的分区,每个分区能够装入一个作来,分区的大小是固定的,但是容易生成较多的存储器碎片。
(3)可变分区:虽然提高了内存利用率,但是由于系统在不断地分配和回收中,必定会出现一些不连续的小的空闲区,产生碎片。
(4)可重定位分区:它能够把相邻的空闲存储空间合并成一个完整的安全区,还能够整理存储器内各个作业和存储位置,以达到消除存储碎片和紧缩存储空间的目的。紧缩工作需要花费大量的时间和系统资源。
(5)非请求页式:将存储空间和作业的地址空间分成若干个等分部分在分页时,需要把所需要的页面全部调入内存后作业方能执行。因此,当内存可用空间小于作来所需的地址空间时,作业无法运行。
(6)请求页式:将存储空间和作业的地址空间分成若干个等分部分在分页时,当进程需要用到某个页面时将该页面调入内存,把那些暂时无关的页面留在内存外。但是它不能实现对最自然的以段为单位的共享与存储保护(因为程序通常是以从段为单位划分的)
(7)段页式:作业按逻辑结构分段,段内分页、内存分块。



基本分页存储





基本分段存储 




基本段页式






在虚拟存储器的管理中,涉及载入、放置和置换。
(1)调入策略:即何时将一页或一段从外存中调入内存,通常有两种策略,一种是请求调入法,即需要使用时才调入,另一种是行钎调入法。
(2)放置策略:调入后,放在内存的什么位置,这与内存管理基本上是一致的。
(3)置换策略:
  • 最优算法(Optimized ,OPT):选择淘汰不再使用或者将来才使用的页,这是理想的算法,但难以实现,常用于淘汰算法的比较。
  • 随机算法:但可能选中立即就要访问的页。
  • 先进先出算法:可能淘汰立即要使用的页,另外,在未给予足够的页面时,有时会出现给予进程的页面数越多,缺少次数反而增加的异常现象。例如432143543215,当拥有3个主存页面时,<4><3><2><1><4><3><5>43<2><1>5,有4个主存页面时,<4><3><2><1>43<5><4><3><2><1><5>,<>是发生了缺页,可以看到3个主页面有3次命中,而4个主面页只有2次命中。
  • 最近最少使用:这个算法的主要出发点是,如果某页面被访问了,则它可能马上就要被访问。

局部性原理:
存储管理策略的基础是局部性原理,局部性分为时间局部性和空间局部性,时间局部性是指最近访问存储位置,很可能不久的将来还要访问,空间局局部性是指存储访问有成组的倾向,当访问某个位置后,很可能也要访问其附近的位置。
根据局部性原理,提出了工作集的概念,它是进程频繁访问的页面的集合。通常用两种等价的方法确定进程的工作集,一种是将工作集确定为定长的页面访问序列中的页面集合,另一种是将工作集确定为在定长时间间隔中涉及的页面的集合。
操作系统还可以规定缺页率的上下限,当一个进程的缺页率高于上限时,表时该进程需要更大的内存空间,则分配较多的内存页面给它,当进程的缺页率低于下限时,表进该进程占用的内存空间过大,可以适当的收回若干内存页面。