本教材为中国铁道出版社——操作系统(第四版)刘振鹏、张明、王煜著。本篇文章为第五章复习。
目录
思维导图:
一、存储体系
1、分类
计算机系统中存储器一般分为主存储器和辅助存储器两级。即内存和外存。
2、存储管理的目的
存储管理要实现的目的是为用户提供方便、安全、充分大的存储空间。
3、存储管理的过程
4、程序的连接和装入
(1)程序的连接
- 静态连接方式(不可逆)
- 装入时动态连接
- 运行时动态连接
(2)程序的装入
- 绝对装入方式:逻辑地址转换为物理地址的过程发生在程序编译或汇编时,装入内存的固定位置。
- 可重定位装入方式:逻辑地址转换为物理地址的过程发生在程序装入内存时运行。
- 动态运行时装入方式:逻辑地址转换为物理地址的过程发生在程序真正执行时。仅该装入方式支持紧凑。要求硬件:重定位寄存器
二、连续存储管理方式
1、单一连续分配
适用于单道存储系统,例如:DOS操作系统——没有存储保护机制。内存的利用率很低。
2、分区分配
(1)固定分区
数据结构:固定分区分配表
缺点:内存利用不充分,程序的大小受内存大小的限制
(2)可变分区
数据结构:已分分区表和空闲分区表
分区分配算法:
1.首次适应算法:
开始地址递增,可保留高址部分的大空闲区,但使地址首部产生大量内存碎片。
2.循环首次适应算法
从上一次找到的空闲分区的下一个空闲分区开始查找。会导致缺乏大的空闲分区。 3.最佳适应算法
最佳适应算法并非最佳!这个算法按照空闲分区由小到大的顺序形成一条空闲分区链,这种方法最容易生成内存碎片。
4.最差适应法:
空闲分区由大到小排列。
分区的回收:
分区回收时分为四种情况:
1>与前一个空闲分区相接:开始地址不变,链长不变
2>与前一个,后一个两个空闲分区相接:链长-1
3>与后一个空闲分区相接:开始地址变换,链长不变
4>与前一个,后一个两个空闲分区都不相接:链长+1
紧凑:
紧凑是指把多个小分区拼接成一个大分区
注意:
要想实现紧凑,装入方式必须为:动态运行时装入
紧凑开销很大,所有碎片之和能够满足时才会进行一次紧凑。
三、覆盖技术&交换技术
1、覆盖技术
关键:
覆盖技术的关键是提供正确的覆盖结构
特点:
覆盖技术的特点是打破了“一次性”
2、交换技术(终极调度)
具有交换技术的操作系统,通常把外存分为文件区和交换区
关键:
交换技术的关键是设法减少每次交换的信息量
特点:
打破“驻留性”
四、分页存储管理方式
基本思想:
将物理存储空间划分为大小相等、位置固定的页框(或称为内存块、物理块)。页框的大小通常是2的幂次方,如512B~8KB,以便于计算和管理。不宜过大或过小:过大——页表小,碎片多。过小——碎片少,页表大。
页表:
- 页面与页框之间通过页表进行映射。页表记录了每个页面在内存中对应的物理块号。
- 一个进程对应一个页表,页表项的数量与进程中的页面数量相等。
- 页表由“页号”和“块号”组成。页号用于标识进程中的页面,块号用于标识内存中的页框。
- 页表通常驻留在内存中,但可以通过分页的方式离散存储,以减少对连续内存空间的需求。
- 进程页表的起始地址存放在进程PCB中。
地址结构:
页号=逻辑地址/页面大小
页内位移量=逻辑地址-页号*页面大小
页号 | 页内偏移量 |
页表项大小 = 主存内存大小(物理地址大小) / 页面大小(页内地址多少)
页表大小 = 页表项的大小 x 页表项的个数 (页号多少)
快表:
为了提高地址变换速度,可以在地址变换机构中增设一个快表(Translation Lookaside Buffer,TLB)。快表用于存放当前访问频繁的页表项,以便快速找到对应的物理块号。当CPU给出有效地址后,地址变换机构会首先访问快表。如果快表中存在对应的页表项,则直接从中读出物理块号;否则,再访问内存中的页表。
访问一次块表会进行:2次内存访问,1次越界判断
两级和多级页表:
两级页表结构为
两级就是为一级页表再分页。外层页内地址就是每页条数。访问一次两级页表会进行:1次越界访问和3次内存访问
例题
已知系统为48位地址,页面大小4KB,页表项大小为8B,使用页式存储,则要采用多少级页表,页内偏移多少位 ?
页面大小 = 2 ^12 B,故页内偏移12位
页号位数 = 48-12 = 36
4KB / 8B = 2 ^9 ,一个页面能装下2 ^9个页表项
按理来说,外层页以及内层页的大小都应为一个页面大小,外层页号需不超过一个页面大小,不然需要对外层页号再次分页
因此,36/9 = 4 ,需要四级页表
分配和回收方式:
位示图法
五、分段存储管理方式
基本思想:
分段存储管理方式是一种操作系统的内存管理方式,它按照程序自身的逻辑关系将进程的地址空间划分为若干个段,每个段都有一个段名,并从0开始编址。段内地址连续。段间地址可以不连续。
段表:
段表实现了从逻辑段到物理内存的映射。
地址结构:
段号 | 段内地址 |
分段系统中的地址转换 通过段表寄存器实现。在访问过程中会有:2次越界判断 2次内存访问
分页和分段的主要区别:
(1)页是信息的物理单位,故对用户而言,分页是不可见的,是透明的。段是信息的逻辑单位,对用户而言,分段是可见的。分段更容易实现见共享
(2)页的大小是固定的,由系统决定;段的大小是不固定的,由用户程序本身决定。
(3)用户角度看,分页的地址空间是一维的,而段的地址空间是二维的。
回收方式:
可变分区方式
六、段页式存储管理方式
基本思想:
段页式存储管理方式将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。这样,每个段内的页都可以通过段名和页号来唯一标识。系统为每个作业或进程建立一张段表,用于管理内存分配与释放、缺段处理等。同时,由于一个段被划分为若干个页,因此每个段还必须建立一张页表,用于将段中的虚页变换为内存中的实际页面
地址结构:
在地址变换过程中,会出现2次越界判断,3次访问内存
回收方式:
位示图法