操作系统-进程调度

一、进程调度

按照某种算法,在就绪队列中选择一个进程为其分配处理机。

1.1 进程调度时机

需要进行进程调度与切换的情况
当前运行的进程主动释放处理机:

  • 进程正常终止
  • 运行过程中发生异常而终止
  • 进程主动请求阻塞(如等待I/O)

当前运行的进程被动释放处理机:

  • 分配给进程的时间片用完
  • 有更紧急的事情需要处理(中断)
  • 有更高优先级的进程进入就绪队列

不能进行进程切换的场景

  • 处理中断的过程
  • 进程在操作系统内核临界区
  • 在原子操作过程中

1.2 进程调度的方式

1)非抢占式:
只允许进程主动地释放处理机,即使有更高优先级的任务到达,也会继续运行当前进程。除非该进程终止或者主动要求进入阻塞态。
这种方式只在早起操作系统中使用。
2)抢占式:
当更紧急的任务到达时,暂停当前进程,将处理机分配给更紧急的任务进程。
这种方式适用于现在的分时、实时操作系统。

1.3 进程调度算法

早期操作系统调度算法(交互性不好)

  • 先来先服务(FCFS)
  • 短作业优先(SJF Shortest Job First)
  • 高响应比(HRRN)

1.3.1 先来先服务
优点:简单、公平、不会产生饥饿现象
缺点:对于长作业有利,对于排在长作业之后的短作业需要等待的时间很长。

1.3.2 短作业优先
优先调度运行时间短的进程
优点:平均等待时间和平均周转时间少
缺点:对长作业不利,会产生饥饿现象。

1.3.3 高响应比
FCFS在选择长作业运行时,没有考虑运行的时长,对短作业不有好。
SJF在选择短作业运行时,没有考虑各个作业的等待时间,对长作业不有好,甚至有饥饿问题。

响应比 = (运行时间 + 等待时间)/ 运行时间;
通过高响应比优先算法,既考虑了运行时间又考虑了等待时间。
优点:折中上述两种算法的缺点,不会饥饿

适用于交互性操作系统的进程调度算法:

  • 时间片轮转
  • 优先级调度
  • 多级反馈队列

1.3.4 时间片轮转
按照进程到达就绪队列的顺序,轮流让这个进程执行一个时间片的时间,若一个进程没有执行完成,会被强行的剥夺处理机,重新放到就绪队列的尾部。
优点:公平、响应快、适用于分时操作系统,不会产生饥饿
缺点:高频率的切换进程,存在一定的开销;没有考虑任务的紧急程度。

1.3.5 优先级调度
如何合理的设置优先级?

  • 系统进程高于用户进程
  • 前台进程高于后台进程
  • I/O型进程高于CPU繁忙型进程(因为调度I/O设备后,可以继续进行其他操作,提高了CPU的使用率)

优点:区分任务紧急程度、适用于实时操作系统、可灵活地调整对各种作业的偏好
缺点:可能会导致低优先级的进程饥饿

1.3.6 多级反馈队列
对其他所有的算法的折中。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值