操作系统要做的事情
- 内存空间的分配与回收
优点 | 缺点 | |||
---|---|---|---|---|
连续内存分配 | 单一连续分配 | 内存被分为系统区和用户区 内存中只能有一道用户程序,独占整个用户区空间 | 实现简单 无外部碎片 可以采用覆盖技术扩充内存 不一定要内存保护 | 只能用于单用户和单任务的操作系统中 y有内部碎片 存储器利用率低 |
固定分区分配 | 将整个用户区划分为若干个固定大小的分区,在每个分区中只装入一道作业,用于支持多道程序系统 固定大小的意思时该分区大小不变,但不同分区可能大小不一样 建立一个分区说明表,来实现各个分区的分配与回收,每个表项包括该分区的大小,起始地址,状态 | 实现简单 无外部碎片 | 当程序太大时,所有分区都无法满足该要求,要采用覆盖技术来解决 会产生内部碎片,内存利用率低 | |
动态分区分配 | 不会预先划分内存分区,而是在进程进入内存时,根据进程的大小动态建立分区,并使大小刚好适合。 常用数据结构:1.空闲分区表 2.空闲分区链 | 没有内部碎片 | 有外部碎片 | |
离散内存分配 | ||||
TIPS:
|
- 采用某种技术从逻辑上对内存空间进行扩充
- 覆盖技术
- 交换技术
- 虚拟存储技术
思想 | 缺点 | |
---|---|---|
覆盖技术 | 将程序分成多个段,常用的段常驻内存"固定区",不常用的段需要时再调入内存"覆盖区",不用时调出 内存中分一个“固定区”和若干个“覆盖区” 让不可能同时调用的程序段共享一个覆盖区 | 对用户不透明,增加编程负担 (适用于早期的操作系统) |
交换技术 | 当内存空间紧张时,可将某些进程暂时换出到外存(变成挂起态),把外存中已经满足运行条件的进程换入到内存中 (PCB要常驻内存) 通常把磁盘(也就是外存)分为文件区和对换区 可优先换出阻塞或优先级低的进程,有时考虑内存驻留时间 | |
虚拟存储技术 | (在下一篇博客中单独进行记录) |
- 地址重定位(逻辑地址到物理地址)
-
三种装入方式 时期 方式 绝对装入 单道程序阶段 编译时产生绝对地址 可重定位装入 早期多道批处理阶段 装入时将逻辑地址转换为物理地址 动态运行时装入 现代操作系统 运行时将逻辑地址转换为物理地址,需设置重定位寄存器
-
- 内存保护功能(两种方法)
- 在cpu中设置一对上下限寄存器,存放进程的上下限地址,用于检测指令是否越界
- 采用重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)进行越界检查