当前位置:   article > 正文

超详细|一篇搞定操作系统——存储器管理_系统设计硬核知识(3)-操作系统的存储管理

系统设计硬核知识(3)-操作系统的存储管理

操作系统全家桶:传送门
一、操作系统引述:https://blog.csdn.net/diviner_s/article/details/108829327
二、处理器管理:https://blog.csdn.net/diviner_s/article/details/108940809
三、存储器管理:https://blog.csdn.net/diviner_s/article/details/112245241
四、设备管理:https://blog.csdn.net/diviner_s/article/details/112250905
五、文件管理:https://blog.csdn.net/diviner_s/article/details/112253441
六、用户接口:https://blog.csdn.net/diviner_s/article/details/112255959

3.1 存储器管理概述

一、存储器管理

  1. 内存描述
    • 内存也称主存,是指CPU能直接存取指令和数据的存储器。
    • 内存在计算机系统中的地位

  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)运行时动态链接:对某些目标模块的链接,是在执行中需要该目标模块时,才对它进行的链接。其优点是便于修改和更新,便于实现对目标模块的共享。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UaJaraWS-1609837286080)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20201217155332279.png)]

  1. 程序装入内存

    • 绝对装入:在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生基于绝对地址的目标代码。绝对装入程序按照装入模块中的设定地址,直接将程序和数据装入指定内存。由于程序中的逻辑地址与实际内存地址完全相同,故不需对程序和数据的地址进行修改。

      绝对装入方式只适用于单道程序环境。程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。而通常情况下在程序中釆用的是符号地址,编译或汇编时再转换为绝对地址。

    • 可重定位装入方式:在多道程序环境下,多个目标模块的起始地址通常都是从0开始,程序中的其它地址都是相对于起始地址的,此时应釆用可重定位装入方式。根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对目标程序中指令和数据的逻辑地址一次性变为物理地址的修改过程称为重定位,地址变换通常是在装入时一次完成的,所以又称为静态重定位。

      静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udaY87i1-1609837286082)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20201217155517914.png)]

    • 动态运行时装入方式:动态运行时装入,也称为动态重定位,程序在内存中如果发生移动,就需要釆用动态的装入方式。装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到进程执行时才进行。因此,装入内存后的所有地址均为相对地址。这种方式需要重定位寄存器的支持。

      动态重定位的特点是可以将作业分配到不连续的存储区中,在进程运行之前可以只装入它的部分代码即可投入运行,然后在进程运行期间,根据需要动态申请分配内存;便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87PZz8LM-1609837286084)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20201217155822877.png)]

三、地址保护

​ 系统内多道并发,内存属于共享状态,为实现存储保护,需要进程执行时所访问的内存属于自己的合理空间,这就要实现内存地址保护,也就是进行地址越界检查。主要有两种方式:

  1. 对于静态重定位方式:
    在处理器中设置“下界寄存器”和“上界寄存器”。当一个已经装入主存储器的进程得到处理器运行时,进程调度计算得到该进程的上界地址(起始地址)和下界地址(最大地址),分别送入上界寄存器和下界寄存器中。处理器执行该进程的指令时,将处理器的物理地址分别与上界寄存器和下界寄存器进行比较,确定是否越界,越界则为地址越界,出错。如果不越界,则访问相应内存单元。

  2. 对于动态重定位方式:
    在处理器设置设置“基址寄存器”和“限长寄存器”。当一个已经装入主存储器的进程得到处理器运行时,进程调度计算得到该进程的长度和起始地址,分别送入限长寄存器(也叫界限寄存器)和基址寄存器(也叫重定位寄存器)中。处理器执行该进程的指令时,首先将逻辑地址与限长寄存器的值作比较,确定是否越界,越界则为地址越界,出错。如果不越界,再将逻辑地址与基址寄存器运算得到实际的物理地址,然后通过地址总线找到对应的内存单元读取指令或数据。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OM4RggqI-1609837286086)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20201217160012869.png)]

四、覆盖与对换

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vMi2k1oI-1609837286088)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20201217160252176.png)]

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

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

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

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

    • 进程的换出换入:

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

      2)选择换入进程:优先级,进程状态,换出时间等[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D6HafRjc-1609837286090)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20201217160412205.png)]

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

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

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

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

3.2 分区存储管理

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

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

    • 1)全部(一次性)装入:非虚拟存储
    • 2)部分(多次性)装入:虚拟存储
  • 2、装入内存时是否要放在内存连续地址空间,分为两种:

    • 1)连续分配:必须放在内存连续的地址空间
    • 2)不连续分配:可以放在内存不连续的地址空间

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

3.2.1 单一连续分区存储管理

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

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

  • 采用这种管理方案时,内存被分成两个区域,一个是系统区域,仅供操作系统使用,可以驻留在内存的低地址部分,也可以驻留在高地址部分(通常设置在内存的低端);另一个是用户区,它是除系统区以外的全部内存区域,这部分区域是提供给用户使用的区域,任何时刻主存储器中最多只有一个作业,作业放在从用户区起始地址开始的连续地址区域。所以,单用户连续存储管理只适用于单用户的情况。

二、单一连续分区存储管理的地址变换与地址保护

单一连续分区使用静态重定位,不需要专门硬件进行地址变换,但是会有硬件保护机构,以确保不干扰系统区中的信息,方法有:

  • 1)上界寄存器和下界寄存器:上界寄存器和下界寄存器中存放用户区的起始地址和终止地址,运行时检查指令或数据的地址,若不在上界寄存器和下界寄存器的范围内,则发生越界中断。

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

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

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

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

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

  • 不支持覆盖技术、对换技术、虚拟存储等技术,作业地址空间大于内存可用空间就无法运行。

3.2.2 固定分区存储管理

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

  • 固定分区分配是是将内存用户空间划分为若干个固定大小(不是相等大小)的区域,在每个分区中只装入一道作业,放在该分区起始地址开始的连续地址区间内。

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

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

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

二、固定分区的分区划分

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

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

  1. 分区分配表:为便于内存分配,通常将分区按大小排队,并为之建立一张分区分配表,其中包括每个分区的起始地址、大小及状态(是否已分配)。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gcgJo1dz-1609837286091)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20201217161224987.png)]

  2. 主存空间分配:当有用户作业要装入内存时,便检索该表,以找到合适的分区给予分配,并将其状态置为“已分配”;未找到合适分区则拒绝为该用户作业分配内存。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JcHDmigk-1609837286092)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20201217161238256.png)]

四、固定分区中的地址转换与存储保护

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

  • 1、静态重定位方式:装入内存后所有地址转换为物理地址,通过上界寄存器和下界寄存器进行地址保护。

  • 2、动态重定位方式:装入内存后地址仍然是逻辑地址,通过限长寄存器和基址寄存器进行地址转换和地址保护。在执行的时候,首先将逻辑地址与限长寄存器的值作比较,确定是否越界,越界则出错。不越界时再与基址寄存器的值运算转换为物理地址,然后通过地址总线找到对应的内存单元读取指令或数据。
    在这里插入图片描述

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

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

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

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

3.2.3 可变分区存储管理

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

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

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

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

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

  1. 数据结构
  • 1)已分分区表:登记系统中的已分配分区(分区号、分区起始地址、分区大小及状态)(不是必须的,内存占用情况可以记录在进程的PCB中,如起始地址和空间大小)
    在这里插入图片描述

  • 2)空闲分区表:用来登记系统中的空闲分区(分区号、分区起始地址、分区大小及状态),必须的数据结构。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/935049
推荐阅读
  

闽ICP备14008679号