操作系统——存储器管理


一、存储器的层次结构

  • 寄存器、主存,属于操作系统存储管理的管辖范畴,断电后存储的信息不存在;(这两个又称为 可执行存储器)
  • 辅存,属于设备管理的管辖范畴,存储信息被长期保存;
    在这里插入图片描述
  • 主存储器:简称内存或主存,是计算机系统中的主要部件,用于保存进程运行时的程序和数据,也称可执行存储器。
  • 寄存器:具有和处理机相同的速度,故对寄存器的访问速度最快,价格昂贵,因此容量不大。
  • 高速缓存:介于寄存器和存储器之间的存储器,主要用于备份主存中较为常用的数据,减少处理机对主存储器的访问次数,提高速度。
  • 磁盘缓存:目前磁盘 I/O 的速度远低于对主存的访问速度,为了缓和两者之间在速度上的不匹配,从而设置了磁盘缓存;主要用于暂时存放频繁使用的一部分磁盘数据和信息,以减少访问磁盘的次数。

二、程序的装入和链接

在这里插入图片描述

1. 程序的装入

在将一个装入模块装入内存时,可以有如下三种装入方式:

  • 绝对装入方式
    • 当计算机系统很小,且仅能运行单道程序时,完全有可能知道程序将驻留在内存的什么位置。此时可以采用绝对装入方式。用户程序经编译后,将产生绝对地址(即物理地址)的目标代码。
  • 可重定位装入方式
    • 绝对装入方式只能将目标模块装入到内存中事先指定的位置,这只适用于单道程序环境。而在多道程序环境下,编译程序不可能预知经编译后所得到的目标模块应放在内存的何处。因此,对于用户程序编译所形成的若干个目标模块,它们的起始地址通常都是从0开始的,程序中的其它地址也都是相对于起始地址计算的。 因此不能采用绝对装入的方式,而应采用可重定位的装入方式。
    • 可重定位装入方法就是按照内存的具体情况,把模块装入到内存适当位置。此时就会产生逻辑地址和物理地址的不同,将逻辑地址更改为物理地址就是重定位。
  • 动态运行时的装入方式
    • 可重定位装入方式可将装入模块装入到内存中任何允许的位置,故可用于多道程序环境。但该方式并不允许程序运行时在内存中移动位置。但是,实际情况是,在运行过程中,它在内存中的位置要经常变换,这种情况就应该采用动态运行时的装入方式。
    • 动态运行时的装入程序再把装入模块装入内存后,并不立即把装入模块的逻辑地址转为物理地址,而是把这种地址转换推迟到真正执行时才进行。为使地址转换不影响指令的执行速度,这种方式需要一个重定位寄存器的支持。

2. 程序的链接

源程序经过编译后,可得到一组目标模块,链接程序的功能是将这组目标模块以及他所需要的库函数装配成一个完整装入模块。在对目标模块进行链接时,根据进行链接时间不同,可把链接分为下面三种。

  • 静态链接方式
    • 在程序运行之前,先将各目标模块以及他们所需的库函数链接成一个完整的装配模块,以后不再拆开。我们把这种事先进行链接的方式称为静态链接方式。
  • 装入时动态链接
    • 这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存,还要按照图上图所示的方式修改目标模块中的相对地址。
    • 装入时动态链接方式有以下优点:
      便于修改和更新。便于实现对目标模块的共享。
  • 运行时动态链接
    • 在许多情况下,应用程序在运行时,每次要运行的模块可能是不相同的。但由于事先无法知道本次要运行哪些模块,故只能是将所有可能要运行到的模块全部都装入内存,并在装入时全部链接在一起。显然这是低效的,因为往往会有部分目标模块根本就不运行。比较典型的例子是作为错误处理用的目标模块,如果程序在整个运行过程中都不出现错误,则显然就不会用到该模块。
    • 而运行时动态链接,是对上述链接的改进。即在执行过程中,当发现一个被调用模块为装入内存是,立即由OS去找到该模块,并将之装入内存,并将链接到调用者模块。凡在执行过程中未被用到的目标模块,都用会被调入内存和被链接到装入模块上,这样不仅能加快程序的装入过程,也可以节省大量的内存空间。

三、连续分配存储管理方式

博客链接:连续分配存储管理方式

四、对换

  • 对换技术也称为交换技术。由于最早计算机的内存都非常小,为了使该系统能分时运行多个用户程序而引入了对换技术。系统把所有的用户作业存放在磁盘上,每次只能调入一个作业进入内存,当该作业的一个时间片用完时,将它调至外存的后备队列上等待,再从后备队列上将另一个作业调入内存。这就是最早出现的分时系统中所用的对换技术。现在已经很少使用。
  • 由上述可知,要实现内外存之间的交换,系统必须有一台I/O速度较高的外存,其容量也必须够大,能容纳正在分时运作的所有用户程序,目前最常使用的是大容量磁盘存储器。

1. 多道程序环境下的对换技术

  • 对换的引入
    • 在多道程序环境下,一方面,在内存中的某些进程由于某事件尚未发生而被阻塞运行,但它却占用了大量的内存空间,甚至有时可能出现在内存中所有进程都被阻塞,而无可运行之进程,迫使CPU停止下来等待的情况;另一方面,却又有着许多作业,因内存空间不足,一直驻留在外存上,而不能进入内存运行。显然这对系统资源是一种严重的浪费,且使系统吞吐量下降。
    • 对换是指:把内存中暂时不能运行的进程或者暂时不用的程序和数据换出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或者进程所需的程序或者数据换入。对换是改善内存利用率的有效措施,它可以直接提高处理机的录用率和吞吐量
  • 对换的类型
    • 在每次对换时,都是将一定数量的程序或数据换入或换出内存。根据每次对换时所对换的数量,可将对换分为如下两类:
      • 整体对换。整体对换其实就是之前博客中所说的处理机的中机调度,也称为"进程对换"或者"整体对换"
      • 页面(分段)对换。即对换是以进程的一个"页面"或者"分段"为单位进行的,这种方法是实现请求分页和分段使储存管理的基础,其目的是支持虚拟存储系统。

2. 对换空间的管理

  • 对换空间管理的主要目标
    在具有对换功能的OS中,通常把磁盘空间分为文件区对换区两部分。
    • 对文件区管理的主要目标  
      文件区占磁盘空间的大部分,用于存放各类文件,由于通常的文件都是较长时间的驻留在外存上,对它的访问频率是较低的,故对文件区管理的主要目标是提高文件存储的空间利用率。然后才是提高访问速度。因此,对文件区空间的管理采取离散分配方式。
    • 对对换空间管理的主要目标
      对换区只占用了磁盘空间的小部分,用于存放从内存换出的进程。这些进程在兑换区的驻留时间是短暂的,而对换操作的频率却较高,故对对换空间管理的主要目标是,提高进程换入换出的速度,然后才是提高文件空间的利用率。为此,对对换区空间的管理采取连续分配方式,较少考虑外存中的碎片问题。
  • 对换区空闲盘块管理中的数据结构
    • 为了实现对对换区中的空闲盘块的管理,在系统中应配置相应的数据结构,用于记录外存对换区中的空闲盘块的使用情况。
    • 其数据结构的形式与内存在动态分区分配方式中所用数据结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表的每个表目中,应包含两项:对换区的首址及其大小,分别用盘块号和盘块数表示。
  • 对换空间的分配与回收
    • 由于对换分区的分配采用的是连续分配方式,因而对换空间的分配与回收与动态分区方式时的内存分配与回收方法雷同。
    • 其分配算法可以是首次适应算法、循环首次适应算法或最佳适应算法等。

3. 进程的换出与换入

当内核因执行某操作而发现内存不足时,便调用对换进程,它的主要任务就是实现进程的换出和换入。

  • 进程的换出
    对换进程在实现进程换出时,是将内存中的某些进程调出至对换区,以便腾出内存空间。换出过程可分为以下两步:
    • 选择被换出的进程。对换进程在选择被换出的进程是,将检查所有驻留在内存中的进程,首先选择处于阻塞状态或者睡眠状态的进程。当有多个这样的进程时,应当选择优先度最低的进程作为换出进程。在有些操作系统中,还会来了进程在内存中的驻留时间。如果系统中已经无阻塞进程,而现在的内存空间仍不满足需求,便选择优先级最低的就绪进程换出。
    • 进程换出过程 。在选择换出进程后,只能换出非共享的程序和数据段。在进行换出时,应先申请对调空间,若申请成功,,就启动磁盘,将该进程的程序和数据传送到磁盘的对换区。如果未出现错误,便可回收该进程所占的内存空间,并对该进程的进程控制块和内存分配表上的数据结构进行相应的修改。
  • 进程的换入
    • 对换进程将定时执行换入操作,它首先查看PCB集合中所有进程的状态,从中找出“就绪”状态但已换出的进程。当有许多这样的进程时,它将选择其中已换出到磁盘上时间最久(必须大于规定时间,如2 s)的进程作为换入进程,为它申请内存。如果申请成功,可直接将进程从外存调入内存;如果失败,则需先将内存中的某些进程换出,腾出足够的内存空间后,再将进程调入。
    • 由于要交换一个进程需要很多的时间,因此,对于提高处理机的利用率而言,它并不是一个非常有效的解决方案。目前使用较多的方案是:处理机正常运行时,并不启动对换程序,如果发现有许多进程运行时经常发生缺页且显示内存紧张的情况,则启动对换程序将一部分进程调至外存。如果发现所有进程的缺页率都已经明显减小,系统的吞吐量已下降时,可暂停运行对换程序。

五、分页存储管理方式

博客链接:分页和分段存储管理方式

六、分段存储管理方式

博客链接:分页和分段存储管理方式

猜你喜欢

转载自blog.csdn.net/pary__for/article/details/114438149