操作系统 处理器调度

  • 处理器是计算机系统中的重要资源
  • 在多道程序环境下,进程数目通常多于处理器的数目
  • 系统必须按一定方法动态地把处理器分配给就绪队列中的一个进程
  • 处理器利用率和系统性能(吞吐量、响应时间)在很大程度上取决于处理机调度

需要解决的问题:
WHAT:按什么原则分配CPU—进程调度算法
WHEN:何时分配CPU —进程调度的时机
HOW:如何分配CPU —CPU调度过程(进程的上下文切换)

作业与进程的关系

  • 作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将该作业放入外存中的后备作业队列中等待作业调度。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任何一个进程,只要它被创建,总是有相应的部分存在于内存中。
  • 一个作业可以由多个作业步组成,即同时对应多个进程,并且至少由一个进程组成;反之则不成立。
  • 作业的概念主要用在批处理系统中,如UNIX分时系统中就没有作业的概念。进程的概念则用在几乎所有的多道程序系统中。
  • 作业调度的主要功能是检查系统是否满足作业的资源要求以及按照一定的算法来把外存后备作业队列中的作业调入内存,为其创建进程并插入到进程就绪队列等待进程调度。进程调度则是根据一定的算法把CPU分配给就绪队列中的某个进程并让其执行。
  • 在多道批处理系统中,作业是用户提交给系统的一项相对独立的工作。操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,并保存在一个后备作业队列中。再由作业调度程序将其从外存调入内存。
    在这里插入图片描述
    批处理作业经历的4种状态:
    (1)提交状态(2)后备状态(3)执行状态(4)完成状态
批系统中的作业
  • 作业是用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合,包括用户程序、所需的数据及命令等
  • 作业控制块 (Job Control Block JCB)
    • 作业标识
    • 用户名称、用户账号
    • 作业类型
    • 作业状态
    • 调度信息
    • 资源需求
    • 资源使用情况等
  • 作业的状态:一个作业进入系统到运行结束,一般需要经历收容、运行、完成三个阶段,与之相对应的是作业的三种状态
    • 后备状态
    • 运行状态
    • 完成状态
作业状态间转换

在这里插入图片描述

CPU的三级调度

调度类型

  • 高级调度
  • 低级调度
  • 中级调度

在这里插入图片描述
在这里插入图片描述

低级调度

进程调度或短程调度(Short-Term Scheduling)

  • 主要任务是按照某种策略和方法选取一个处于就绪状态的进程,将处理机分配给它
  • 常见的低级调度有非抢占式抢占式两种
  • 低级调度的时间尺度通常是毫秒级的。由于低级调度算法的频繁使用,要求在实现时做到高效
中级调度(Intermediate-Level Scheduling)

中程调度(Medium-Term Scheduling)

  • 引入目的是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待
  • 主要任务是按照给定的原则和策略,将处于外存对换区中的重又具备运行条件的就绪进程调入内存,或将处于内存就绪状态或内存阻塞状态的进程交换到外存对换区

处理器调度队列模型

  • 仅有进程调度的调度队列模型
    • 在分时系统中,通常仅设有进程调度
    • 系统把这些进程组织成一个就绪队列
    • 每个进程在执行时,可能有以下几种情况
      • 进程获得CPU正在执行
      • 任务在给定时间片内已完成,释放处理机后为完成状态
      • 任务在时间片内未完成,进入就绪队列末尾
      • 在执行期间因某事件而阻塞

在这里插入图片描述

  • 具有高级和低级调度的调度队列模型
    • 在批处理系统中,不仅需要进程调度,而且还要有作业调度
    • 就绪队列的形式
      • 在批处理系统中,常用高优先权队列。进程进入就绪队列时,按优先权高低插入相应位置,调度程序总是把处理机分配给就绪队首进程
    • 设置多个阻塞队列
      • 根据事件的不同设置多个队列提高效率

在这里插入图片描述
与上一模型的主要区别:就绪队列的形式;设置多个阻塞队列

  • 同时具有三级调度的调度队列模型
    在这里插入图片描述

进程调度方式和时机

  • 进程调度的任务
    控制、协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程
进程调度时机
  • 进程退出
  • 进程阻塞
  • 新进程创建
  • 中断发生
  • 时钟中断

调度时机:

  • 当一个进程运行完毕或由于某种错误而终止运行
  • 当一个进程在运行中处于等待状态(等待I/O)
  • 分时系统中时间片到了
  • 当有一个优先级更高的进程就绪(可抢占式)
    例如:新创建一个进程,一个阻塞进程变成就绪
  • 在进程通信中,执行中的进程执行了某种原语操作(P操作,阻塞原语,唤醒原语)
何时切换进程
  • 只要OS取得对CPU的控制,进程切换就可能发生:
  • 超级用户调用
    • 来自程序的显式请求 (如:打开文件),该进程通常会被阻塞
      陷阱
    • 最末一条指令导致出错,会引起进程移至退出状态
  • 中断
    • 外部因素影响当前指令的执行,控制被转移至IH(中断处理程序)
引起进程调度的原因
  • 正在执行的进程执行完毕或因发生某事件而不能再继续执行;
  • 执行中的进程因提出I/O请求而暂停执行;
  • 在进程通信或同步过程中执行了某种原语操作如P操作、阻塞、挂起原语等;
  • 在可剥夺式调度中,有比当前进程优先权更高的进程进入就绪队列;
  • 在时间片轮转法中,时间片完。
  • 通常系统是按先来先服务或优先权形式来组织调度队列。

进程调度的任务

  • 保存处理机的现场信息。
  • 按某种算法选取进程。
  • 把处理器分配给进程。

进程调度机制

  • 排队器。
  • 分派器。
  • 上下文切换器。
非抢占方式(Non-preemptive Mode)
  • 当某一进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,该进程仍继续执行,直到其完成或发生某种事件而进入完成或阻塞状态时,才把处理机分配给更为重要或紧迫的进程
  • 引起进程调度的因素
    • 正在执行的进程执行完毕, 或因发生某事件而不能再继续执行
    • 执行中的进程因提出I/O请求而暂停执行;
    • 在进程通信或同步过程中执行了某种原语操作,如wait、Block、Wakeup原语

优点:算法简单,系统开销小
缺点:紧急任务不能及时响应;短进程到达要等待长进程运行结束

抢占方式(Preemptive Mode)
  • 当某一进程正在处理机上执行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在执行的进程,将处理机分配给这个更为重要或紧迫的进程
  • 抢占式调度主要有以下原则
    • 优先权原则 允许高优先权的新到进程抢占当前进程的处理机
    • 短作业(进程)优先原则允许执行时间短的新到进程抢占当前进程的处理机
    • 时间片原则:时间片用完后停止执行,重新进行调度,适用于分时系统

优点:适于时间要求严格的实时系统
缺点:调度算法复杂,系统开销大

【实验目的】 1. 理解进程的概念,熟悉进程的组成; 2. 用高级语言编写和调试一个进程调度程序,以加深对进程调度算法的理解。 【实验准备】 1. 几种进程调度算法  短进程优先调度算法  高优先权优先调度算法  先来先服务调度算法  基于时间片的轮转调度算法 2. 进程的组成  进程控制块(PCB)  程序段  数据段 3. 进程的基本状态  就绪W(Wait)  执行R(Run)  阻塞B(Block) 【实验内容】 1. 例题 设计一个有 N个进程共行的进程调度程序。 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。 4. 实验题目  编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。  编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。简单轮转法的基本思想是:所有就绪进程按 FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还为完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直至所有的进程运行完毕。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值