处理机进程调度

2.6 处理机调度的概念和层次

基本概念

当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题

(补)【作业:一个具体的任务】

​ 暂时调到外存等待的进程状态为挂起状态。(存在就绪挂起、阻塞挂起)被挂起的进程PCB会被组织成挂起队列

请添加图片描述

三个层次

请添加图片描述

2.7 进程调度

进程调度的时机

请添加图片描述

临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。

临界区:访问临界资源的那段代码

内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)

进程调度方式

  • 非剥夺式调度方式(非抢占式)
  • 剥夺调度方式(抢占式)

进程的切换与过程

狭义的进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程, 也可能是另一个进程,后一种情况就需要进程切换

进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。

广义的进程调度包含了选择一个进程和进程切换两个步骤

进程切换的过程:

  1. 对原来运行进程各种数据的保存
  2. 对新的进程各种数据的恢复

进程调度、切换是有代价的,过于频繁的进行进程调度、切换,会使整个系统的效率降低

2.8 调度算法的评价指标

CPU利用率

CPU“忙碌”的时间占总时间的比例

利用率=忙碌时间/总时间

系统吞吐量

单位时间内完成作业的数量

系统吞吐量=总共完成了多少道作业/总共花了多少时间

周转时间

从作业被提交给系统开始,到完成为止的时间间隔

周转时间=完成时间-提交时间

平均周转时间=各周转时间和/作业数

带权周转时间=周转时间/实际运行时间

平均带权周转时间=带权周转时间/作业数

等待时间

进程/作业处于等待处理机状态时间之和

对于进程,等待被服务的时间之和

对于作业,在外存后备队列中等待的时间+建立进程后的等待时间

响应时间

提出请求首次产生响应所用的时间

2.9 调度算法

先来先服务(FCFS)

请添加图片描述

短作业优先(SJF)

请添加图片描述

高响应比优先(HRRN)

请添加图片描述

以上算法不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于早期的批处理系统

时间片轮转调度算法(RR)

请添加图片描述

时间片太大,可能会使其退化为先来先服务调度算法,并且会增大进程的响应时间时间片太小导致进程切换过于频繁,过多的进程切换导致实际用于进程执行的时间比例减少

优先级调度算法

请添加图片描述

补充:

就绪队列未必只有一个,可以按照不同优先级来组织。另外,也可以把优先级 高的进程排在更靠近队头的位置

根据优先级是否可以动态改变,可将优先级分为静态优先级动态优先级两种。

静态优先级:创建进程时确定,之后一直不变。

动态优先级:创建进程时有一个初始值,之后会根据情况动态地调整优先级

  • 通常:
    • 系统进程优先级 高于 用户进程
    • 前台进程优先级 高于 后台进程
    • 操作系统更偏好 I/O型进程或称 I/O繁忙型进程

注:与I/O型进程相对的是计算型进程(或称 CPU繁忙型进程)

多级反馈队列调度算法

请添加图片描述

这三种算法适合用与交互式系统(eg:UNIX使用多级反馈队列调度算法)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值