搜索
您的当前位置:首页正文

超详细|一篇搞定操作系统——存储器管理

来源:爱go旅游网

3.1 存储器管理概述

一、存储器管理

  1. 存储器管理的主要功能

    • 主存空间的分配与回收
    • 地址变换
    • 主存空间的共享
    • 主存空间的保护
    • 主存空间的扩充
  2. 存储器的层次

  1. 用户程序的主要处理阶段
    • 编辑
    • 编译
    • 连接
    • 装入
    • 运行

  1. 有关概念
    • 逻辑地址:也叫相对地址、用户地址。逻辑地址是程序中编程使用的。实际中C语言的指针,读取指针变量的值,实际上这个值是逻辑地址,是相对于当前进程数据段的地址。
    • 物理地址:也叫绝对地址、内存地址。是最终加载到内存地址寄存器中的地址,内存单元的真正地址。编号从0开始一直到物理内存的最大值,映射到实际的内存条上。
    • 逻辑地址空间:也称用户地址空间或相对地址空间,是由程序中逻辑地址组成的地址范围,逻辑地址空间大小(即最大可寻址空间)由系统总线中地址总线的宽度决定。
    • 物理地址空间:也称内存地址空间或绝对地址空间,是由内存中一系列存储单元限定的地址范围,由实际的物理内存大小决定。
    • 重定位:程序和数据装入内存时,需对目标程序中的逻辑地址进行修改,把程序数据中的逻辑地址转变为实际内存存放的物理地址的过程称作重定位。
    • 重定位方式:分为静态重定位和动态重定位
    • 系统总线:又称内总线或板级总线,是用来连接微机各功能部件从而构成一个完整系统的。常说的微机总线就是指系统总线,如ISA总线、EISA总线、PCI总线等。
    • 系统总线上传送的信息包括数据信息、地址信息、控制信息,所以包含有三种不同功能的总线,即数据总线DB、地址总线AB和控制总线CB。
    • 数据总线DB用于传送数据信息。实现CPU和存储器或I/O接口等其它部件间的数据通信。数据总线的位数也代表微型计算机的处理性能,称为字长。
    • 地址总线AB是用来传送地址的,地址只能从CPU传向存储器或I/O端口。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如32位地址总线可寻址空间为4GB的位址。
    • 控制总线CB用来传送控制信号和时序信号。如读写信号、中断响应信号、中断申请信号、复位信号等。
  2. 程序连接的方式
    • 1)静态链接:在程序装入内存之前,先将各目标模块及所需的库函数链接成一个完整的可执行程序(外存上会形成可执行文件),以后不再拆开。
    • 2)装入时动态链接:将用户源程序编译后得到一组目标模块,在装入内存时,釆用边装入边链接的链接方式(在外存上不会形成可执行文件)。
    • 3)运行时动态链接:对某些目标模块的链接,是在执行中需要该目标模块时,才对它进行的链接。其优点是便于修改和更新,便于实现对目标模块的共享。

  1. 程序装入内存

    • 静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。

四、覆盖与对换

  1. 覆盖技术:主要用在早期操作系统中(内存 <64KB),可用存储空间受限,某些大作业不能一次全部装入内存,产生了大作业与小内存的矛盾。这时把一个程序划分为一系列功能相对独立的程序段,让执行时不要求同时装入内存的程序段组成一组(称为覆盖段),共享主存的同一个区域,这种内存扩充技术就是覆盖

    • 程序段先保存在磁盘上,当有关程序段的前一部分执行结束,把后续程序段调入内存,覆盖前面的程序段(内存“扩大”了)。
    • 一般要求作业各模块之间有明确的调用结构,程序员要向系统指明覆盖结构,然后由操作系统完成自动覆盖。
    • 缺点:对用户不透明,增加了用户负担。

  1. 对换技术:是指将暂时不用的某个进程及数据(首先是处于阻塞状态优先级最低的)部分(或全部)从内存移到到外存(备份区或对换区)中去,让出内存空间,同时将某个需要的进程调入到内存中,让其运行。交换到外存的进程需要时可以被再次交换回(选择换出时间最久的)内存中继续执行。

    • 对换的类型:1)整体对换:进程对换,使用中级调度。

      ​ 2)部分对换:页面对换/分段对换,使用虚存存储。

    • 对换空间的管理:具有对换功能的OS中,通常把外存分为文件区和对换区。前者用于存放文件,后者存放从内存换出的进程。对换区比文件区侧重于对换速度。因此对换区一般采用连续分配。

    • 进程的换出换入:

      1)选择换出进程:优先级,进程状态

      2)选择换入进程:优先级,进程状态,换出时间等

  2. 覆盖与对换技术的区别:覆盖与对换技术是在多道环境下扩充内存的两种方法。覆盖与对换可以解决在小的内存空间运行大作业的问题,是“扩充”内存容量和提高内存利用率的有效措施。覆盖技术主要用在早期的OS中,对换技术则用在现代OS中。主要区别为:

    1)覆盖可减少一个进程运行所需的空间。对换可让整个进程暂存于外存中,让出内存空间。

    2)覆盖是由程序员实现的,操作系统根据程序员提供的覆盖结构来完成程序段之间的覆盖。对换技术不要求程序员给出程序段之间的覆盖结构。

    3)覆盖技术主要在同一个作业或进程中进行。对换主要在作业或进程之间进行。

3.2 分区存储管理

在存储管理中涉及到两个问题:

  • 1、是否要把作业全部(一次性)装入内存,分为两种:

    • 1)全部(一次性)装入:非虚拟存储
    • 2)部分(多次性)装入:虚拟存储
    • 1)连续分配:必须放在内存连续的地址空间
    • 2)不连续分配:可以放在内存不连续的地址空间

    采用全部装入和连续分配,进程执行时速度快、效率高,采用部分装入和非连续分配都是为了进一步提高内存的利用率,使有限的内存装入更多更大的作业。

3.2.1 单一连续分区存储管理

一、单一连续分区存储管理的基本原理

  • 是一种最简单的存储管理方式,在早期的单道批处理系统中使用这种管理方案。

  • 2)内核态(系统态/管态)与用户态(目态)工作:如果当前在用户态下工作,内存访问时对硬件进行校验,以保证系统区不被访问,如果系统区被访问则产生中断,控制权交给操作系统。在内核态下工作,能访问整个存储空间。用户态是用户进程的工作方式,而系统态是系统进程的工作方式。

  • 3)不做特别管理:如MS-DOS等单用户单任务微机操作系统。

三、单一连续分区存储管理的管理特点

  • 管理简单。容易记住存储器的状态,不是全部空闲就是全部已分配;当作业被调度时就获得全部用户空间;全部主存空间都分配给一个作业使用;作业运行完后,全部主存空间又恢复成空闲(以上所指的全部主存空间是用户区空间)。

  • 资源利用率低。存储器没有得到充分利用,作业的大小与存储器的可用空间的大小不一定一致,作业的全部信息都装入主存,占用主存空间。处理机的利用率较低,因为是单道处理,一旦一个作业提出I/O请求,则CPU空闲。

3.2.2 固定分区存储管理

一、固定分区存储管理的基本原理

  • 用户空间划分为几个分区,便允许有几道作业并发运行。当有一空闲分区时,便可以从外存的后备作业队列中选择一个适当大小的作业装入该分区,当该作业结束时,又可再从后备作业队列中找出另一作业调入该分区。

  • 实际上每一个分区就相当于一个单用户连续分配区间。

  • 固定分区分配很少用于现在的操作系统中,但在某些用于控制多个相同对象的控制系统中仍发挥着一定的作用。

二、固定分区的分区划分

  1. 分区大小相等,即所有的内存分区大小相等。
  • 这种方式的缺点是缺乏灵活性,当作业太小时,会造成内存空间的浪费;当作业太大时,一个分区又不足以装入,致使作业无法运行。这种划分方式常被用于利用一台计算机控制多个相同对象的场合,因为这些对象所需的内存空间是大小相等的。例如,炉温群控系统,就是利用一台计算机去控制多台相同的冶炼炉。
  1. 分区大小不等。
  • 为了克服分区大小相等而缺乏灵活性的这个缺点,可把内存区划分成含有多个较小的分区、适量的中等分区及少量的大分区。这样,便可根据作业的大小为之分配适当的分区。

三、固定分区中主存空间的分配与回收

  1. 主存空间分配:当有用户作业要装入内存时,便检索该表,以找到合适的分区给予分配,并将其状态置为“已分配”;未找到合适分区则拒绝为该用户作业分配内存。

  • 固定分区存储管理实际中可采用可重定位装入(静态重定位)方式,也可采用运行时动态装入(动态重定位)方式

五、固定分区中的管理特点

  • 作业长度不能大于分区的大小,一个分区只能装入一个作业,一个作业只能装入一个分区。

  • 无外部碎片,有内部碎片(一个分区会有剩余空间),作业大小比分区大小越小时,内部碎片越大,空间比较浪费。

  • 分区的数量限制了作业的个数。

3.2.3 可变分区存储管理

一、可变分区存储管理的基本原理

  • 可变分区分配是一种动态划分内存的方法。这种方法不预先将内存划分分区,而是在作业装入内存时,根据作业大小动态进行内存分配,并使分配的内存空间大小正好适合进程的需要。在不断的分配回收过程中,系统中分区的大小和数目是不断变化的。

  • 动态分区在开始分配时是比较好的,但随着时间的推移,内存中可能会产生越来越多的小的空闲内存块,内存利用率下降。这些小的空闲内存块称为外部碎片,与固定分区中的内部碎片正好相对。

  • 克服外部碎片可以通过紧凑技术来解决,就是系统对进程进行移动和整理。这需要动态重定位的支持,比较费时。紧凑的过程实际上类似于Windows系统中的磁盘整理,只不过后者是对外存空间的紧凑。

二、可变分区存储管理的主存空间分配与回收

  1. 数据结构

因篇幅问题不能全部显示,请点此查看更多更全内容

Top