操作系统 内存管理

操作系统要做的事情

  1. 内存空间的分配与回收
内存分配
      优点 缺点
连续内存分配 单一连续分配

内存被分为系统区和用户区

内存中只能有一道用户程序,独占整个用户区空间

实现简单

无外部碎片

可以采用覆盖技术扩充内存

不一定要内存保护

只能用于单用户和单任务的操作系统中

y有内部碎片

存储器利用率低

固定分区分配

将整个用户区划分为若干个固定大小的分区,在每个分区中只装入一道作业,用于支持多道程序系统

固定大小的意思时该分区大小不变,但不同分区可能大小不一样

建立一个分区说明表,来实现各个分区的分配与回收,每个表项包括该分区的大小,起始地址,状态

实现简单

无外部碎片

当程序太大时,所有分区都无法满足该要求,要采用覆盖技术来解决

会产生内部碎片,内存利用率低

动态分区分配

不会预先划分内存分区,而是在进程进入内存时,根据进程的大小动态建立分区,并使大小刚好适合。

常用数据结构:1.空闲分区表 2.空闲分区链 

没有内部碎片 有外部碎片
离散内存分配        

TIPS:

  1. 内部碎片:分配给某些进程时,有部分内存该进程没有用上
  2. 外部碎片:内存中某些空闲内存分区由于太小而难以利用
  1. 采用某种技术从逻辑上对内存空间进行扩充
    1. 覆盖技术
    2. 交换技术
    3. 虚拟存储技术
内存扩充
  思想 缺点
覆盖技术

将程序分成多个段,常用的段常驻内存"固定区",不常用的段需要时再调入内存"覆盖区",不用时调出

内存中分一个“固定区”和若干个“覆盖区”

让不可能同时调用的程序段共享一个覆盖区

 对用户不透明,增加编程负担

(适用于早期的操作系统)

交换技术

当内存空间紧张时,可将某些进程暂时换出到外存(变成挂起态),把外存中已经满足运行条件的进程换入到内存中 (PCB要常驻内存)

通常把磁盘(也就是外存)分为文件区和对换区

可优先换出阻塞或优先级低的进程,有时考虑内存驻留时间

 
虚拟存储技术 (在下一篇博客中单独进行记录)  
  1. 地址重定位(逻辑地址到物理地址)
    1. 三种装入方式
        时期 方式
      绝对装入 单道程序阶段 编译时产生绝对地址
      可重定位装入 早期多道批处理阶段 装入时将逻辑地址转换为物理地址
      动态运行时装入 现代操作系统 运行时将逻辑地址转换为物理地址,需设置重定位寄存器
  2. 内存保护功能(两种方法)
    1. 在cpu中设置一对上下限寄存器,存放进程的上下限地址,用于检测指令是否越界
    2. 采用重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)进行越界检查

  

猜你喜欢

转载自blog.csdn.net/qq_20176001/article/details/100170632