内存使用

内存作为计算机的基本组成部分,用来存储程序(指令和数据),内存单元按字节编址、寻址,程序装入到内存后,PC 指向程序开始的地址,CPU依次取指执行。

内存使用即:将程序放到内存中,PC指向开始地址。

程序里面的地址是相对地址(逻辑地址),而程序真正运行时的地址是绝对地址(物理地址),即程序运行时,根据逻辑地址得到物理地址就是地址的重定位。而重定位就是相对地址+基地址(保存PCB里面)——发生重定位的一般在程序运行时。

内存保护

进程不被允许跨界访问不属于该进程的内存块,如何实现呢?

  • 设置上下限寄存器,每次访问的时候都判读一下
  • 设置重定位寄存器(记录起始物理地址)、界地址寄存器(记录最大逻辑地址)

交换

为了更好地支持多进程,当内存空闲空间不足时,有选择地将某些进程保存到硬盘上(换出),再将要运行的进程换入到内存。
image.png

被挂起的进程所表示的状态机:
image.png

  • 优先唤出哪种进程?可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出(饥饿现象),有的系统还会考虑进程在内存的驻留时间

内存空间分配

  • 连续分配管理方式
    • 固定分区分配(会产生内部碎片,内部碎片就是分配给某进程的内存区域中,有部分内存没用上)
    • 动态分区配置(根据进程大小动态建立分区,会产生外部内存碎片,外部内存碎片指内存中某些空闲分区由于太小而难以利用)
  • 非连续分配管理方式

外部内存碎片:
image.png

动态分区分配算法:
image.png