操作系统学习笔记五CPU 调度

每当cpu空闲时,操作系统必须从就绪队列中选择一个进城来执行。进程选择由短期调度程序后cpu调度程序执行。

与cpu调度功能有关的另一个部分是分派程序,用来将cpu的控制权交给短期调度程序选择的进程。

为比较cpu的调度算法,有以下准则:cpu使用率、吞吐量、周转周期、等待时间、响应时间。

1.调度算法

      就绪队列不鄙视FIFO队列,就绪队列可以实现为FIFO队列、优先队列、树、链表。队列中的记录通常为进程控制块PCB

   1.1先到先服务调度

      最简单的算法是先到先服务算法(first-come,first-served FCFS)。其很容易用FIFO队列实现。但一个进程进到就绪队列,其PCB连接到队列的尾部。cpu空闲时,cpu分配给队列前头的进程,接着该运行进程从队列中删除。

      FCFS策略的平均等待时间较长。该算法是非抢占的,进程会运行到释放cpu为止,即程序终止或请求IO.

      1.2最短作业优先调度算法(shortest-job-first (SJF) scheduling algorithm)

      cpu空闲时,他会赋给具有最短cpu区间的进程。同样长度的进程可用FCFS。一个更为适当的表示是最短下一个cpu区间的算法。

      SJF算法是最佳的。因为其平均等待时间最小。他经常用于长期调度。下一个cpu区间通常可被预测为以前cpu区间长度的指数平均。

      SJF算法可以是抢占或非抢占的。抢占SIF调度有时称为最短剩余时间优先调度,可抢占当前运行的进程。

      1.3优先级调度

      SJF可作为通用优先级调度算法的一个特例。每个进程都有一个优先级与其关联,具有最高优先级的进程分配到CPU。SIF属于简单优先级算法。优先级为其下个cpu区间的倒数。

      优先级调度可以是抢占的或非抢占的。抢占的会使优先级高于当前运行进程的进程抢占其cpu.

      优先级调度算法的一个主要问题是无穷阻塞(indefinite blocking)或饥饿(starvation),可以运行但缺乏cpu的进程是阻塞的,他在等待cpu。优先级调度回事某个低优先级进程无穷等待cpu。

      1.4轮转法’

      轮转法(round-robin RR)专门为分时系统设计。定义一个时间片,其为10-100ms的时间单元。将就绪队列作为循环队列。为每个进程分配不超过一个时间片的cpu.
      RR 算法是抢占的,其性能很大程度上依赖于时间片的大小。如果时间片很大,那么RR算法与FCFS算法 差不多。如果时间片很小,RR算法称为处理器共享。上下文切换的时间仅为时间片的一小部分,因此上下文切换对RR影响不大。

      1.5多级队列调度

      一些情况下。前台程序要求比后台程序更高的优先级。多级队列调度算法将就绪队列分成许多独立队列,根据进程内存大小,优先级、类型等将其分配到一个队列。前台和后台程序可处于不同队列,分别采用RR和FCFS算法调度。

      另外队列之间亦必须有调度,通常采用固定优先级抢占调度。

      1.6多级反馈队列调度

      多级队列调度不够灵活,而多级反馈队列调度算法运行进程在队列之间移动。如果进程使用过多cpu区间,那么他会被转移到更低优先级队列。这种方案将IO约束和交互进程留在更高优先级队列。在低优先级等待过长的进程也会转移到更高优先级防止饥饿的发生。

2.多处理器调度

      SMP系统努力将一个进程在同一个处理器上运行,这被称为处理器亲和性,即一个进程需要有一种对其运行所在的处理器的亲和性。

      负载平衡:smp系统将工作负载平均分配到处理器上。通常采用两种方法: push nigration和 pull migration.

      对称多线程SMT:提供多个逻辑(非物理)处理器来实现SMP。即时系统仅有单处理器,但每个逻辑处理器都有自己的架构状态负责中断处理。SMT由硬件提供。

 

 2.线程调度

      系统调用的是系统线程,而非进程。用户线程由线程库管理。用户线程必须映射到相应的内核级线程。这种映射可能是间接的,可能使用轻量级进程(LWP)

1.竞争范围

      一对一和多对多模型的系统上,线程库调度用户级线程到一个有效的LWP上运行,这被称为进程竞争范围PCS。

3.算法评估

      评估的准则可包括如下参数:最大cpu使用率,同时要求最大响应时间为1s。最大吞吐量,例如周转时间与执行时间成正比。

     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值