avatar

操作系统-作业管理

2. 作业管理

2.1 进程调度

进程调度是计算机通过决策哪个就绪进程可以获得CPU使用权。在新的进程进来前首先要保留旧进程的运行信息,然后选择新进程并配置运行环境。进程的调度上可以分为抢占式调度和非抢占式调度。顾名思义,抢占式就是线程没有完全执行完就进行切换,当然还要保存旧进程的上下文信息,非抢占式直到进程完成工作或者IO阻塞才让出处理器。

抢占式调度 非抢占式调度
系统开销 频繁切换、开销大 切换次数少、开销小
公平性 相对公平 不公平
应用 通用系统 专用系统

2.2 调度算法

批处理系统(没有太多用户操作,调度算法目标是保证吞吐量和周转时间)

  • 先来先服务: 按照请求顺序进行调度。
  • 短进程优先(非抢占式): 选择就绪队列中估计运行时间最短的进程进行优先调度。(长作业可能饿死)
  • 短进程优先(抢占式): 相较于非抢占式,可能出现新的进程打断当前进程的运行状态。

交互式系统(有大量的用户操作,调度算法目标是进行快速响应)

  • 时间片轮转: 按先来先服务的原则排队,但要将进程分割,每次执行一个时间片,收到时间中断后,停止进程并送往队尾。
    • 时间片过长会影响实时性
    • 时间片过短会将大量时间浪费在进程切换上
  • 优先级调度: 每个进程都有优先级,按优先级调度。当低优先级的进程长时间得不到运行可以适当提高其优先级。
  • 多级反馈队列: 多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同。进程在第一个队列没执行完,就会被移到下一个队列。队列的优先级也不同,只有高优先级的队列没有进程在排队才能调度当前队列上的进程。可看成是时间片轮转调度算法和优先级调度算法的结合。

2.3 死锁

2.3.1 死锁条件

  • 互斥条件:进程对资源的使用是排他性使用,资源只能被一个进程使用,其他进程必须等待。
  • 请求保持条件:进程至少保持一个资源,又提出新的资源要求,但该资源在被阻塞的进程那里。
  • 不可抢占条件:资源不能只能由进程自身释放。
  • 环路等待:有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。

2.3.2 预防死锁

上述四个条件破坏其中一个即可。

  • 破坏互斥条件
    例如假脱机打印机技术允许若干个进程同时输出,唯一真正请求物理打印机的进程是打印机守护进程。
  • 破坏占有和等待条件
    一种实现方式是规定所有进程在开始执行前请求所需要的全部资源。
  • 破坏不可抢占条件
  • 破坏环路等待
    给资源统一编号,进程只能按编号顺序来请求资源。

2.3.3 银行家算法

核心思想: 进程需要申请的资源是有限的,每次申请需要声明最大的资金量。在给进程资源时,当手中的资源可以满足进程的最大需要时,必须给进程资源。进程使用完资源之后,及时归还资源。

银行家算法.PNG

A、B、C为所需资源种类,Pn为进程编号。可发现P2所需的资源是小于可分配资源的,所以系统会先将资源分配给P2以让该进程尽快完成,尽快放出资源。P2执行完全后,资源便会重新回到可分配资源上。

Author: TheOutsider
Link: http://yoursite.com/2020/04/04/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F-%E4%BD%9C%E4%B8%9A%E7%AE%A1%E7%90%86/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.