储存器管理
储存器层次
储存器分为三层:CPU寄存器、主存、辅存。也可以根据功能分为寄存器、高速缓存、主储存器、磁盘缓存、固定磁盘、可移动储存介质等。
储存介质的访问速度越快,价格越高。寄存器、高速缓存、主储存器和磁盘缓存均属于操作系统存储管理的管辖范畴,一旦断电信息就中断了。
主储存器 = 内存
寄存器
访问速度最快,一般的字节长度为32位或64位。
高速缓存
备份主存储器的信息,减少处理机对主存储器的访问次数,提高执行速度。
程序的装入
绝对装入方式
只能用于单道程序环境
可重定位装入方式
指定某一个地址为相对0号地址。
动态运行时的装入方式
连续分配存储管理方式
单一连续分配、固定分区分配、动态分区分配、动态可重定位分区分配四种算法。
单一连续分配
只能适用于单道用户程序,一次把所有内存分配给程序独占。
固定分区分配
把内存分片,每个分区只装入一道作业,可以实现多道用户程序,缺乏灵活性。
动态分区分配
若要实现动态分区分配,需要配备对应的数据结构,用来描述空闲分区和已分配分区的情况。
分配算法:
- 首次适应算法
- 循环首次适应算法
- 最佳适应算法
- 最坏适应算法
对换
是把内存中用不上的程序和数据转移到外存上,腾出足够的内存空间,再把已准备好运行条件的程序和数据换入内存。
对换的类型:
- 整体对换
- 分页对换
分页储存的管理方法
页面
把内存的物理地址分为若干块,由于进程最后一块一般装不满,称之为页面碎片。
地址结构
| 符号 | 含义 |
|---|---|
| A | 逻辑地址空间中的地址 |
| L | 页面大小 |
| P | 页号 |
| D | 页内地址 |
计算公式:
- 页号 = 整除(地址 / 页面大小)
- 页内地址 = 取余(地址,页面大小)
例题: 设页面大小为1KB,设A=2107B
计算得出 ,
页表
分页系统允许把进程储存在内存的任意物理块中,因此必须要找到内存地址的物理块,系统就创建了页面映像表,称之为页表。
访问内存的有效时间
从进程发出指定逻辑地址的访问请求,经过地址变换,在内存中找到对应的实际物理地址单元并取出数据,所需要花费的总时间,称之为有效访问时间EAT。
假设访问一次内存的时间为,有效访问时间分为:
- 第一次访问内存时间(查找页表对应的页表项)
- 第二次访问内存时间(把页表地址拼接成实际物理地址)
引入快表的分页储存管理方式中,通过快表查询,可以直接得到物理块号,减少了一次内存访问。但快表有容量限制,不能将一整个页表全部装入快表中,所以再快表中查询存在着命中率的问题,命中率就是成功查询到所需页面的表项的比率,在这种系统中,有效访问时间计算公式为:
引入快表,CPU访问数据所耗费的时间明显减少。
分段储存管理方式
特点
- 信息共享
- 信息保护
- 动态增长
- 动态链接
基本原理
分段地址具有如下结构:
段号 + 段内地址
分页和分段的区别
| 方面 | 分页 | 分段 |
|---|---|---|
| 信息单位 | 信息的物理单位 | 信息的逻辑单位 |
| 大小 | 固定且由系统决定 | 不固定,由用户程序决定 |
| 地址空间 | 一维地址空间 | 二维地址空间 |