操作系统-第二章(2.2CPU调度)

1.调度的概念

为什么要CPU调度?

  1. 答:进程的数量往往多于CPU的个数。因此进程争用CPU的情况在所难免。CPU的调度是对CPU的分配。 
  2. 若没有CPU1调度,则意味着要等到当前运行的进程执行完毕后,下一个进程才能执行,而时间情况中,进程时常需要等待一些外部设备的输入,而外部设备的速度与CPU相比是非常缓慢的,若让CPU总是等待外部设备,则是对CPU的资源是极大的浪费。

什么事调度研究的问题?

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

 调度的三个层次:

->高级调度:按一定的原则从外存的作业后背队列中挑选一个作业调入内存,并创建进程。每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时才会撤销PCB。

 ->低级调度(进程调度/处理机调度):按照某种策略从就绪队列中选取一个进程,将处理机分配给它。

进程调度是操作系统中最基本的一种调度,在一般的操中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

->中级调度:按照某种策略决定将哪个处于挂起状态的进程重新调入内存。一个进程可能被多次调入、调出内存,因此中级调度发生的频率要比高级调度发生的频率更高。

对此解释:内存不够时,可将某些进程的数据调出外存。等内存空闲或者进程需要运行时再重新调入内存,暂时调到外存等待的进程被称为挂起状态。被挂起的进程PCB会被组织成挂起队列。

->进程的挂起态与七状态模型

总结:

 

2.调度的实现

 2.1调度的时机

进程调度(低级调度):就是按照某种算法从就绪队列中选择一个进程为其分配处理机。

需要进程调度与切换的情况

 1.当前运行的进程主动放弃处理机:

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

2.当前运行的进程被动放弃处理机:

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

不能进行进程调度与切换的情况:

  • 在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进程切换
  • 进程在操作系统内核程序临界区中
  • 在原子系统操作过程中(原语)。原子操作不可中断,要一气呵成(如之前讲过的修改PCB中进程状态标志,并把PCB放到相应队列)

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

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

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

考题:进程处于临界区时不能进行处理机调度。X

应该是在操作系统内存程序临界区中不能进行调度与切换。

2.2调度的方式

非剥夺调度方式:只允许进程主动放弃处理机。在运行中即便有更紧急的任务达到,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。

特点:系统开销小,但是无法及时处理紧急任务。

剥夺调度方式:又称抢占式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。

特点:可以优先处理更紧迫的进程。使用与分时操作系统、实时操作系统。

3.调度程序(调度器)

用于调度和分派CPU的组件称为调度程序,包括三部分: 

排队器。将系统中的所有就绪进程按照一定算法排成一个或多个队列,负责将新就绪进程插入队列。
分派器。将CPU分配给调度算法选中的进程。
上下文切换器。切换CPU到另一个进程需要保存当前进程状态并恢复另一个进程的状态,这个任务称为上下文切换。有的处理器提供多个通用寄存器,上下文切换只需保存寄存器指针即可。
内核级线程与用户级线程调度

  • 支持内核级线程调度的系统调度的对象是内核级线程,缺点是切换线程需要更大开销;
  • 只支持用户级线程的系统调度的对象还是进程。

4.闲逛进程

 idle

当就绪队列有新进程时立刻切换。

可以是0地址指令,指令执行周期末尾例行检查中断。能耗低。 

5.调度算法的评价指标

 为了在不同方面比较调度算法的性能,我们有以下性能指标:

  • CPU利用率。忙碌的时间 / 总时间。有的题目还会要求计算某种设备的利用率。
  • 系统吞吐率:单位时间完成的作业数量。
  • 周转时间:从用户提交作业到作业被完成所用的时间。包括:等待高级调度时间+等待低级调度时间+总执行时间+等待I/O操作完成的时间。注意题目描述的侧重点
  • 平均周转时间:多个作业周转时间之和 / 作业数。
  • 带权周转时间(比值):作业周转时间 / 实际运行时间。(大于等于一)
  • 平均带权周转时间(比值):多个作业带权周转时间之和 / 作业数。
  • 等待时间。对于进程来说,是等待被服务的时间之和,不包括等待I/O操作完成时间。对于作业来说,是等待作业调度时间+等待CPU调度时间。
  • 响应时间。用户从提出请求到系统首次产生响应所用的时间。
  • 响应比。(等待时间+执行时间) / 执行时间。

6.调度算法

6.1先来先服务(FCFS)

根据例题思考

注意公式的理解

6.2短作业优先(SJF)

由于先到先服务对长作业友好,对短作业不友好,故想要对短作业优化,就采取SJF。

SJF分为抢占式和非抢占式。

非抢占式

 抢占式

 

短作业(SJF)调度算法的平均等待时间、平均周转时间是最优的。 

6.3高响应比优先算法 (HRRN)

为解决FCFS对于短作业不友好,SJF对长作业不友好,可能造成饥饿问题,想设计一个折中兼顾以上问题的算法。

优先考虑作业调度。

总栏:

 下面就是适合交互式的

6.4时间片轮转(RR)

优先使用与分时系统。

时间片为2时

时间片为5时

 

6.5优先级调用算法

  • 既可以用于作业调度,又可以用于进程调度。
  • 既有抢占式,又有非抢占式

 注:并不一定是优先数越大,优先级越高,具体看题意。

下面是非抢占式

抢占式

6.6多级反馈队列调度算法

针对上面五种,想做一个综合表现优秀平衡的算法。

6.7多级队列调度

队列之间可采取哪一个队列->固定优先级、时间片划分

  • 固定优先级:高优先级空时,低优先级进程才能杯调度
  • 时间片划分:如三个队列分配时间50%、40%、10%

队列中选择哪些进程->各队列中可采用不同的调度策略

  • 系统进程队列采用优先级调度
  • 交互式队列采用RR
  • 批处理队列采用FCFS

总栏

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值