第三章内存管理
基址寄存器和界限寄存器
交换技术
进程完整调入内存,然后运行一段时间再存回磁盘。
当换入或移动进程时为它分配一些额外的内存,以解决进程空间动态增长。
使用链表的存储管理
首次适配、下次适配、最佳适配、最差适配、快速适配。
虚拟内存
分页
虚拟地址空间的页面对应物理内存的页框。
缺页中断
若虚拟地址空间中的地址没有被映射到物理空间中,CPU就会陷入操作系统,称为缺页中断或缺页错误。操作系统找到一个很少使用的页框并把它的内容写入磁盘,随后把需要访问的页面读到刚才回收的页框中,修改映射关系,再重启引起陷阱的指令。
MMU(内存管理单元)原理
输入的16进制被分为4位的页号和12位偏移量,4位页号表示16个页面,12位偏移表示一页内4096个字。可用页号作为页表的索引,以得出对应于该虚拟页面的页框号,如果在不在位为0,就会引起操作系统陷进,为1就将在页表中查到的页框号复制到输出寄存器的高3位中,再加上输入虚拟地址中的低12位偏移量就构成15位物理地址。
页表
保护位指出一个页允许什么类型的访问。
修改位:写入一页时自动设置修改位,重新分配页框时,如果一个页面已经被修改过,就必须把它写入磁盘,否则直接丢弃即可。
加速分页过程
当将一个寄存器中的数据复制到另一个时,不适用分页只访问一次内存,而使用分页会访问两次。
解决方案:
多级页表
避免全部页表保存在内存中
倒排页表
减少存储空间,增加查找时间
页面置换算法
- 最优页面置换算法
将每个页面首次被访问前所要执行的指令数作为标记,置换标记最大的页面。
无法实现!!!
- 最近未使用页面置换算法NRU
- 先进先出页面置换算法FIFO
- 第二次机会页面置换算法
5、时钟页面置换算法
6、最近最少使用页面置换算法LRU
7、最不常使用页面置换算法NFU
记录每页的访问次数,次数最小的换出。
缺页中断处理的过程
分段
每个段由一个从0到最大线性地址序列构成,长度可以是0到某个允许的最大值之间的任何一个值,可在运行期间动态改变。段是一个逻辑实体,可能包含一个过程、一个数组、一个堆栈、一组数值变量,一般不会同时包含多种类型的内容。
优点:
- 简化对长度经常变动的数据结构的管理
- 如果段的过程被修改并重新编译也不需要对其它的过程进行修改
- 有助于在几个进程之间共享数据和过程
分段与分页结合