内存使用
内存作为计算机的基本组成部分,用来存储程序(指令和数据),内存单元按字节编址、寻址,程序装入到内存后,PC 指向程序开始的地址,CPU依次取指执行。
内存使用即:将程序放到内存中,PC指向开始地址。
程序里面的地址是相对地址(逻辑地址),而程序真正运行时的地址是绝对地址(物理地址),即程序运行时,根据逻辑地址得到物理地址就是地址的重定位。而重定位就是相对地址+基地址(保存PCB里面)——发生重定位的一般在程序运行时。
内存保护
进程不被允许跨界访问不属于该进程的内存块,如何实现呢?
- 设置上下限寄存器,每次访问的时候都判读一下
- 设置重定位寄存器(记录起始物理地址)、界地址寄存器(记录最大逻辑地址)
交换
为了更好地支持多进程,当内存空闲空间不足时,有选择地将某些进程保存到硬盘上(换出),再将要运行的进程换入到内存。
被挂起的进程所表示的状态机:
- 优先唤出哪种进程?可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出(饥饿现象),有的系统还会考虑进程在内存的驻留时间
内存空间分配
- 连续分配管理方式
- 固定分区分配(会产生内部碎片,内部碎片就是分配给某进程的内存区域中,有部分内存没用上)
- 动态分区配置(根据进程大小动态建立分区,会产生外部内存碎片,外部内存碎片指内存中某些空闲分区由于太小而难以利用)
- 非连续分配管理方式
外部内存碎片:
动态分区分配算法: