一. 进程调度
是指计算机通过决策决定哪个就绪进程可以获得CPU使用权。与多道程序设计有关
两个步骤:
保留旧进程的运行信息,清除旧进程(收拾包袱)
选择新进程,准备运行环境并分配CPU(新进驻)
有两种类型:
1. 非抢占式的调度
处理器一旦分配给某个进程,就让该进程一直使用下去。
调度程序不以任何原因抢占正在被使用的处理器。
直到进程完成工作或因为IO阻塞才会让出处理器。
2. 抢占式的调度
允许调度程序以一定的策略暂停当前运行的进程。
保存好旧进程的上下文信息,分配处理器给新进程。
调度算法:
先来先服务调度算法
短进程优先调度算法
1. 调度程序优先选择就绪队列中估计运行时间最短的进程
2. 该算法不利于长作业进程的执行
高优先权优先调度算法
1. 进程附带优先权,调度程序优先选择权重高的进程
2. 这样使得紧迫的任务可以优先处理
(前台进程/后台进程)
时间片轮转调度算法
1. 按照先来先服务的原则排列好就绪进程
2. 每次从队列头部取出待执行进程,分配一个时间片执行,将时间片用完以后,不论执行完与否,都将其重新插入队列尾部?
3. 是相对公平的算法,但不能保证及时响应用户。
二. 死锁
死锁的产生:
1 竞争资源
共享资源数量不满足各个进程需求
各个进程之间发生资源竞争导致死锁
2. 进程调度顺序不当
死锁的四个必要条件:
1. 互斥条件
进程对资源的使用是排他性的使用
某资源只能由一个进程使用,其他进程需要使用只能等待
2. 请求保持条件
进程至少保持一个资源,又提出新的资源请求。
新资源被占用,进程被阻塞
被阻塞的进程不释放自己保持的资源。
3. 不可剥夺条件
进程获得的资源在未完成使用前不可被剥夺
获得的资源只能由进程自身释放
4. 环路等待条件
死锁的处理:
预防死锁的方法
1. 摒弃请求保持条件
2. 摒弃不可剥夺条件
3. 摒弃环路等待条件
银行家算法
贷款策略:
需要三张表
可分配资源表是指当前还有多少资源可供分配。
首先相减得到还需分配资源表
其次将还需分配资源表与可分配资源表做对比,得到可满足需求的进程。
上图为P2可以满足,因此优先进行,完成后资源释放,继续其他进程对比运行。