操作系统——存储管理(一)

一、固定分区管理模式
  1. 把主存中可分配的用户区域预先划分成若干个连续的分区,每个分区的大小可以相同,也可以不同。但是,一旦划分好分区之后,主存中分区的个数就固定了,且每个分区的大小也固定不变。这是一种静态分区法。
  2. 静态分区适用于多道程序系统,因为每一个分区可进行一个作业(几个进程共同完成一个任务),有多个分区就可同时进行多个作业。
  3. 以分区大小一样为例,由于每一个作业所需要的内存大小是不一样的,就产生一个大的问题:分区的使用效率低。
  4. 这时就有了不固定大小的分区方法,此时又有了一个新的问题就是如何分配分区,这就需要算法的配合来给每一个作业分配分区来保证分区的使用效率但如有要是有更大的作业需要占用主存就会产生所有分区都太小的问题所以。
  5. 为了管理主存空间的使用,必须设置一张**“主存分配表”**(分区说明表),以说明各分区的分配情况。主存分配表中应指出各分区的起始地址和长度,并为每个分区设一个标志位。当标志位为“0”时,表示对应的分区是空闲分区,当标志位为非“0”时,表示对应的分区已被某作业占用。空闲分区可以用来装作业。
二、动态分区管理模式
  1. 动态分区管理又称为可变分区存储管理动态分区方式不提前划分分区,而是根据执行的需要,动态分配分区的大小。
三、内碎片、外碎片、内存紧缩
  1. 内碎片:是已经被分配出去但是被利用的内存空间。
  2. 外碎片:是由于太小而无法被分配出去的内存空间。
  3. 综上可得,静态划分内存会产生大量的内碎片,降低内存的使用率,而动态划分则会产生较多的外碎片但是克服了内碎片的问题。
  4. 内存紧缩:
四、重定位
  1. 一个任务通过编译链接之后成为一个装入模块(可执行文件),而装入模块是逻辑地址要装入内存中就加上装入的起始物理地址,这个过程称为重定位。重定位可分为静态重定位和动态重定位
  2. 静态重定位的特点是在一个作业装入内存的时候,必须分配给其要求的全部内存空间,如果没有足够的内存就不能装入该作业且作业一旦进入内存后在运行期间就不能再移动,也不能再申请内存空间。
  3. 动态重定位与静态重定位不同的是它增加了一个重定位寄存器来存放装入模块的起始位置。在装入内存后不会立即把作业的逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时才进行,动态重定位允许程序在内存中发生移动。
五、内存保护
  1. 上下界保护法:通过设置上下界寄存器保存正在执行的程序的起始地址与终止地址,检测重定位之后的内存地址是否在其范围内。
  2. 重定位寄存器+界地址寄存器法:利用两个寄存器进行越界检查。重定位寄存器中存放的是进程的起始物理地址。界地址寄存器中存放的是进程的最大逻辑地址。
  3. 存储保护起始就是为了保证个进程在自己的内存空间运行,不会越界访问。

猜你喜欢

转载自blog.csdn.net/m0_46354595/article/details/109020628
今日推荐