第五章 存储管理
5.1程序的装入与链接
编译
链接
目标代码+所需库函数=装入模块
装入
将装入模块装入内存,该过程也叫做地址重定位,也称地址映射
程序的装入方式:
重定位:逻辑地址装换为物理地址
静态重定位
动态重定位
程序的链接方式
静态链接:对相对地址进行修改 变换外部调用符号
装入时动态链接:再装入内存时,边装入边链接。便于软件版本的更新,便于实现目标模块的共享。
运行时动态链接:运行时,用到那个模块,再链接哪个模块,用不到的模块可不装入内存。
5.2连续分配存储管理方式
操作系统的任务是将系统程序和用户程序分开。
连续分配:指为一个用户程序分配一个连续的内存空间。
单一连续分配:应用于单用户、单任务操作系统。使用基址-限长寄存器。
固定分区分配:应用于多道程序设计系统。使用分区大小相等、分区大小不等。
可变分区分配:分区的大小和个数随系统的运行而不断改变。
可变分区的处理:
动态分区分配数据结构:空闲分区表 空闲分区链
动态分区分配算法:
首次适应法:空间分区链以存储空间地址递增的次序链接
下次适应法:空间分区链以存储空间地址递增的次序连接成循环链表,为进程分配存储空间时,不是从队首开始找,而是上次找到的空闲的下一个空闲分区开始找。
最佳适应法:空闲分区链以存储空间大小递增的次序拉链。
最坏适应法:空闲分区链以存储空间大小递减的次序拉链。
动态分区的分配和回收操作
可变分区的回收:回收分区与其相邻的空闲分区合并
离散分配方式的引入
分页存储管理方式:存储管理的需要
分段存储管理方式:用户编程的需要
5.3页式存储管理
将进程的逻辑地址空间分成若干个大小相等的片,称为页面或页。
内存空间分成与页大小相等的若干个存储块,称为物理块或页框。
在为进程分配内存时,以块为单位,将进程中的若干页分别装入多个可以不相邻的块中。
页面大小的选择:
页面的大小由机器的地址结构决定的。
页面的大小的权衡(521B~4MB)
逻辑地址:页号 页内位移
页式存储管理地址变换机构
物理地址=块号*页的大小+页位移
快表:由于页表放在内存,使得CPU存放一个数据时,要两次访问内存,为了提高速度,增设快表(高速缓存)
内存有效访问时间(EAT)
t为访问一次内存所需时间;a为命中率;y为查找快表所需时间
不用快表:EAT=t+t=2t
引入快表后:ETA=ay+(t+y)(1-a)+t=2t+y-ta
页表所需地址空间采用离散分配方式解决 (两级和多级页表)
两级页表结构:外层页号、内层页号、页内位移
反置页表
典型页式操作系统举例:
一级分页:PDP_11
二级分页:VAX
三级分页:SPARC
四级分页:68030
5.4段式存储管理
(方便编程、分段共享、分段保护、动态链接、动态增长)
段表:段号、段长、基址
段式存储管理地址变换机构
当段号小于进程的总段数时,段号合法;
当段内位移小于段长时,段内地址合法。
分页和分段的区别
分页 | 分段 |
---|---|
页是信息的物理单位 | 段是信息的逻辑单位 |
分页是系统管理的需要 | 分段是为了更好的满足用户的需求 |
页的大小固定,由系统决定 | 段的长度不固定,由用户所编写的程序决定 |
分页的作业地址空间时一维的,是单一的线性地址空间 | 分段的作业地址空间时二维的,需要有端名和段内地址 |
段的共享与保护
页的共享要求作业地址空间的共享页必须具有相同的页号。
实现段的共享数据结构:共享进程计数、存取控制、段号。
分段的分配与回收
段的保护:存取控制、段表保护、保护环(编号越高,权限越低)
保护环:
内核是0级、系统调用是1级、库函数是2级、用户程序是3级
5.5段页式存储管理
分页系统:提高内存利用率,解决外部碎片问题。
分段系统:满足用户编程需要,解决段的共享、动态链接等问题。
段页式存储管理逻辑地址:段号、段内页号、页内位移
段页式地址变换机构
段表始址找段表,页表始址找页表。
段号大于段表长度时,产生越界中断。
状态为不在内存,产生段中断。
页号大于页表长度,产生越界中断。
三次访问内存:
第一次找段表、第二次找页表、第三次找实际的存储地址。
段页式存储管理系统举例
MULTICS Intel 80386