考研408总结【操作系统】---内存管理

607 阅读3分钟

这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战

考研倒计时:28天

参考资料: 王道操作系统考研复习指导 天勤操作系统高分笔记

内存管理

内存管理相关的原理和概念

首先要知道内存管理的功能:内存空间的分配与回收、地址转换、内存空间的扩充、存储保护。

程序的装入和链接:编译---链接---装入。

链接有:静态链接、装入时动态链接、运行时动态链接

装入有:绝对装入、可重定位装入(静态重定位)、动态运行时装入(动态重定位)

内存保护:设置上下限寄存器、重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)

连续分配和非连续分配

连续分配:单一连续分配(无外部碎片)、固定分区分配(无外部碎片,适用于多道程序)、动态分区分配(存在外部碎片)

  • 在动态分配算法中,最佳适应会产生最多的外部碎片

非连续分配:基本分页、基本分段、段页式管理

原理图如下:

图片来源zhxmdefj

image.png

image.png

image.png 需要注意的tip:

- 对于分页,页号P=A/L,页内偏移量W=A%L
- 注意一些名词、进程的块叫页、内存的块叫页框、页与页框一一对应。
- 区别于页表长度和页表项长度
- 会计算访存次数、多级页表的设计
- 分页通过硬件机制实现,对用户完全透明(页号和页内偏移);而段式系统,段号和段内偏移必须由用户显示的提供
- 一个进程,段表只能有一个,页表可以有多个。
- 不能被修改的代码称为纯代码或可重入代码(不属于临界资源)

虚拟内存

对于是否全部装入内存,分页可以分为基本分页和请求分页。

引入虚拟内存技术,表面上扩大了容量、基于局部性原理。

硬件支持(一定容量的内存和外存、页表机制(或段表)、中断机构、地址变换机构)

主要有三种方式:请求分页、请求分段、请求段页式。

比如请求分页在基本分页加了几个属性

image.png

虚拟内存的实际容量=min(内存+外存之和,CPU寻址范围)

还要知道虚拟内存的页面置换算法和页面分配策略

页面置换算法:最佳置换OPT(性能最好)、FIFO(会出现Belady现象)、最近最久未使用LRU、时钟置换算法。

这四个算法提一下CLOCK算法,比较容易忘记
CLOCK算法:设置访问位,遇到0(未访问的)置换出来,指针指向下一个。如果遇到1会置为0。直到找到为止
改进后的CLOCK算法:除了访问位还设置了修改位,遇到第一个00会换出,如果没有就找01,对于每个跳过的会把访问位变为1,然后一直循环找到为止。

页面分配策略:固定分配局部置换、可变分配全局置换、可变分配局部置换。

调入页面的时机:预调页策略、请求调页策略

从何处调页:

  • 拥有足够的对换空间,可以全部从对换区调入所需页面
  • 缺少足够的对换空间,不会被修改的文件从文件区调入,可能修改的部分换入对换区,以后再从对换区调入
  • UNIX方式

其他补充知识点

抖动、工作集、驻留集。

一般来说 驻留集的大小不能小于工作集的大小, 否则进程运行过程中将频繁缺页

image.png


部分内容待补充完善~

如有误,请多指正!