调度的时机和过程
1.引起进程调度的事件
正在运行的进程运行完毕或发生某事件而不能再继续运行
运行中的进程因提出输入/输出请求而暂停运行
在进程通信或同步过程中运行了某种原语操作,如 P 操作等
在可抢先式调度中,有一个比当前进程优先级更高的进程进入就绪队列
在时间片轮转法中,时间片用完。
2.调度队列
在单处理机系统中,只有一个进程处于运行状态。
3.分派程序(dispatcher)
死锁
1.死锁的概念
系统中两个或两个以上的进程无限期地相互等待永远不会发生的条件,系统处于一种停滞状态,这种情况称为死锁。
2.死锁产生的原因
死锁的原因有以下二点:
(1)进程推进顺序不当和(2)对互斥资源的分配不当。
须要指出的是,系统资源不足并不是产生死锁的原因,进程资源如果不足则进程就不会被创建,只有在资源部分分配以后,剩余的资源不能满足某些个进程的请求,造成进程集无法推进的现象才是死锁。
3.产生死锁的四个要条件
互斥条件:任一时刻只允许一个进程使用资源。
非剥夺条件:进程已经占用的资源,不会被强制剥夺。
占用并请求条件:进程占有部分资源,申请更多的资源,且不会释放已经占有的资源。
循环等待:请求资源的进程形成了循环。
4.死锁处理策略
对死锁的处理,常用的方法有忽略死锁、死锁的检测与恢复、死锁的避免和死锁的预防。
5.死锁忽略
死锁忽略典型的算法是鸵鸟算法。
6.死锁检测和恢复
资源分配图算法
资源矩阵法
死锁的解除与系统恢复
恢复死锁常用的方法有如下几种:
(1)资源剥夺法:挂起某些死锁进程,并抢占它的资源。
(2)进程撤销法:经过撤销占有资源多的进程或代价量小的进程,以恢复死锁。
(3)进程回退法:设置还原点,让一个或多个进程回退到足以解除死锁的地步。
(4)重新启动系统:代价最大,一切从头开始。我们要尽量避免采用此方法。
内存管理
1.存储管理的功能
(1)内存空间的分配与回收,包括内存的分配和共享。
(2)地址转换:内存管理配合硬件进行地址转换,把逻辑地址转换成物理地址。
(3)内存空间的扩充:借助于虚拟存储器或交换覆盖技术来达到扩充内存容量的目的。
(4)存储保护:为了避免相互干扰和破坏,须提供保护功能。
2.地址重定位
(1)逻辑地址空间
(2)物理地址空间
(3)地址重定位
(4)重定位类型
地址重定位分为静态重定位和动态重定位两类。把作业在装入过程中随即进行的地址变换方式,称为静态重定位。在作业执行过程中,当访问内存单元时才进行的地址变换方式,称为动态重定位。动态重定位是在程序执行过程中由硬件地址变换机构实现的。
动态重定位的主要优点如下:用户作业在执行过程中,可以动态申请存储空间和在内存中移动有利于程序段的共享。
3.链接
(1)静态链接。
(2)装入时动态链接。
(3)运行时动态链接。
连续分配管理方式
1.固定式和可变式分区存储管理
(1)固定式分区存储管理(考纲不作要求)
(2)可变分区存储管理:根据作业的实际需要动态地划分存储空间。
(3)分配算法
首次适应算法(First Fit)
下次适应算法(Next Fit)
最佳适应算法(Best Fit)
最坏适应算法(Worst Fit)
采用“内存紧缩”技术,可以把碎片集中起来形成一个大的空闲区。
2.分区的存储保护
(1)界地址保护:界地址保护又称为界限寄存器保护。
界限寄存器方式:下界寄存器存放起始地址,上界寄存器存放结束地址。
基址寄存器和限长寄存器:基址寄存器存放起始地址,限长寄存器存放最大长度。
(2)存储键保护:同一作业的各页面所对应的内存块都要指定一个相同的,但又不与其他作业相重的键码。这个键码存于快速寄存器和该作业的程序状态字 PSW 中,当程序要访问某一块时,将程序状态字中的键码与被访问块的键码进行比较,若相符,则表明允许本次访问,否则发出越界中断。