进程调度 订阅
无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。 展开全文
无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
信息
基本属性
多态性
领    域
操作系统
处    理
高级
中文名
进程调度
基本状态
等待态、运行态、就绪态
进程调度基本属性
1.多态性 从诞生、运行,直至消灭。 2.多个不同的进程可以包括相同的程序3.三种基本状态 它们之间可进行转换4.并发性并发执行的进程轮流占用处理器
收起全文
精华内容
下载资源
问答
  • 进程调度
    千次阅读
    2021-05-13 11:15:39

    更多文章分享在个人微信公众号:极客熊猫
    欢迎扫码关注:
    在这里插入图片描述
    在这里插入图片描述

    调度的概念

    首先,在《进程与线程基础》一文中,我们已经了解到:

    • 进程是资源分配的基本单位;
    • 线程是CPU调度的基本单位。

    一个单核CPU在某一时刻只能允许一个线程执行,但是现在的计算机总是有一大堆进/线程等待执行。这就需要某种规则来决定处理这些进/线程的顺序,这就是调度要研究的问题。

    回忆之前提到的进程状态:

    在这里插入图片描述

    运行态:当前正在占有CPU的进/线程;

    就绪态:具备运行条件,等待系统分配CPU的进/线程;

    阻塞态:不具备运行条件,正在等待某外部事件发生的进/线程。

    所谓进程调度,就是指在处于就绪态的一堆进/线程里,按照一定的调度算法,选出一个进/线程并给它分配CPU时间让它运行,从而实现多进程/多线程的并发执行。

    进程调度与线程调度尽管有些不同,但大部分是相同的,本文仅关注二者共同的部分。

    进程切换的基本流程:

    1. 首先用户态必须切换到内核态;
    2. 保存当前进程的状态,包括在其PCB中保存CPU各寄存器值,以便日后重新执行;
    3. 调度算法选定一个新进程;
    4. 新进程的内存地址空间重新装入MMU(内存管理单元);
    5. 新进程开始执行。

    调度目标

    所有系统

    对于所有系统,都应该有以下调度目标:

    • 公平——给每个进程公平的CPU份额;
    • 策略强制执行——保证规定的调度策略被执行;
    • 平衡——保证系统的所有部分都在忙碌。

    批处理系统

    批处理系统更适合非抢占式调度算法(见下文),应有以下调度目标:

    • 吞吐量——每小时最大作业数;
    • 周转时间——从提交到终止的最短时间;
    • CPU利用率——保持CPU始终忙碌。

    交互式系统

    交互式系统更适合抢占式调度算法(见下文),应有以下调度目标:

    • 响应时间——快速响应请求;
    • 均衡性——满足用户的期望。

    实时系统

    对于实时系统,应有以下调度目标:

    • 满足截止时间——避免丢失数据;
    • 可预测性——如多媒体系统中避免品质降低。

    调度算法

    进程调度的核心自然是调度规则,即各种调度算法。

    计算机都有一个硬件时钟,也叫RTC或CMOS,它独立于操作系统,由主板上一块电池供电的芯片,所以即使计算机断电,RTC也可以维持时间。这个硬件时钟会周期性的发出时钟中断。

    根据如何处理时钟中断,可以把调度算法分为两类:

    • 非抢占式调度算法:发生时钟中断时不调度;
    • 抢占式调度算法:通过时钟中断使CPU控制权返回给调度程序,进而调度其它进程。

    非抢占式调度算法:正在运行的进程只有在该进程执行完成或发生阻塞(如I/O请求)的情况下才会释放CPU;

    抢占式调度算法:分给进程的时间片耗尽之后,无论当前进程有没有执行完成,调度程序均选择其他进程执行。

    非抢占式调度算法

    先来先服务

    先来先服务算法(FCFS):按照进程请求CPU的顺序调度它们。

    意思就是,所有的就绪状态的进程在一个队列中,申请使用CPU的进程按照先来后到的顺序排在队列尾部,每执行完一个进程,系统就从该队列的头部取出第一个进程来执行。

    优点

    • 易于理解且算法实现简单;

    缺点

    • 对短进程不利。排在长进程后面的短进程需要等待很长时间,短进程的响应时间可能会很长。

    最短作业优先

    最短作业优先算法(SJF):每次调度时选择当前已到达的、且运行时间最短的作业。

    优点

    • 对比FCFS,平均等待时间、平均周转时间、平均带权周转时间均有提高;

    缺点

    • 需提前掌握各作业的运行时间;

    • 对长作业不利。因为如果一直有短作业到来,那么长作业永远得不到调度,长作业有可能会饿死,处于一直等待短作业执行完毕的状态。

    周转时间:从进程请求CPU到进程执行完毕为止的统计平均时间。

    非抢占式优先级调度

    优先级调度:每个进程被赋予一个优先级,允许优先级最高的可运行进程先运行。

    对于非抢占式优先级调度,当一个进程到达就绪队列时,比较它的优先级与当前运行进程的优先级。如果新到达进程的优先级高于当前运行进程的优先级,非抢占优先级调度算法只是将新的进程加到就绪队列的头部,而不会进行进程切换。

    缺点

    • 若有源源不断的高优先级进程到来,低优先级进程会导致饥饿。

    抢占式调度算法

    最短剩余时间优先

    最短剩余时间优先(SRTN):当一个新的进程到达时,把它所需要的整个运行时间与当前进程的剩余运行时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程,否则新的进程等待。

    优点

    • 可以使新的短进程得到良好的服务。

    缺点

    • 需提前掌握各进程的运行时间;
    • 对长进程不利。

    最短剩余时间优先(SRTN)是最短作业优先的抢占式版本。

    轮转调度

    轮转调度(RR):每个进程被分配一个时间段,称为时间片,即允许该进程在该时间段内运行。如果在时间片结束时该进程还在运行,则剥夺其CPU并分配给另一个进程;如果该进程在时间片结束前阻塞或结束,则立即进行进程切换。

    轮转调度算法对每个进程都一视同仁,就好比大家都排好队,一个一个来,每个人都运行一会儿再接着重新排队等待运行。

    在这里插入图片描述

    优点

    • 易理解且算法易实现;
    • 可以兼顾长进程和短进程。

    缺点

    • 平均等待时间较长,频繁上下文切换比较费时;

    • 时间片的长度选取困难。

    时间片设置的太短会导致过多的进程切换,降低CPU效率;

    时间片设置的太长又可能会引起对短的交互请求的响应时间变长。

    通常时间片设为20-50ms是一个较合理的折中。

    抢占式优先级调度

    优先级调度:每个进程被赋予一个优先级,允许优先级最高的可运行进程先运行。

    优先级调度的问题在于高优先级进程可能无休止地运行下去,对此有两种解决方案:

    • 调度程序可能在每个时钟中断降低当前进程的优先级。如果调整后该进程的优先级低于次高优先级的进程,则进行进程切换。
    • 给每个进程赋予一个允许运行的最大时间片,时间片耗尽,次高优先级的进程就获得运行机会。

    优先级有静态赋予动态赋予两种方式。

    静态赋予即在创建进程时人为确定进程的优先级,并且规定它在进程的整个运行期间保持不变;

    动态赋予即在创建进程时赋予该进程一个初始优先级,然后系统根据进程的执行情况的变化而不断改变其优先级,以便获得更好的调度性能。

    对于抢占式优先级调度,当一个进程到达就绪队列时,比较它的优先级与当前运行进程的优先级。如果新到达进程的优先级高于当前运行进程的优先级,那么抢占式优先级调度算法就会进行进程切换,让新到的高优先级进程运行。

    多级反馈队列

    多级反馈队列:在系统中设置多个就绪队列,并为每个队列赋予不同的优先级,从第一个开始逐个降低。不同队列中的进程所赋予的执行时间也不同,优先级越高,时间片越小。

    • 首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程;

    • 对于同一个队列中的各个进程,按照时间片轮转调度

    • 当一个进程用完分配的时间片后,它被移到低一级优先级队列。

    彩票调度

    彩票调度:为进程提供各种系统资源(如CPU时间)的彩票。一旦要做出调度决策时,就随机抽取一张彩票,拥有该彩票的进程则获得该资源。

    为了增加重要进程“中彩票”的机率,可以给它们额外的彩票。

    公平分享调度

    公平分享调度:考虑进程的拥有者是谁,保证每个用户公平的分享CPU。

    之前的调度算法都不关注进程所有者是谁。这样做的结果是,如果用户1启动9个进程而用户2启动1个进程,使用轮转或相同优先级调度算法,那么用户1将得到90%的CPU时间,而用户2只得到10%的CPU时间。

    更多相关内容
  • 进程调度模拟程序:假设有10个进程需要在CPU上执行,分别用: 先进先出调度算法; 基于优先数的调度算法; 最短执行时间调度算法 确定这10个进程在CPU上的执行过程。要求每次进程调度时在屏幕上显示: 当前...
  • 操作系统os进程调度,作业调度以及请求分页系统的实现,其中进程调度涉及FCFS算法,时间片轮转法以及多级反馈队列实现。作业调度涉及FCFS以及短作业优先等。有源代码以及文档解释
  • 上海大学操作系统实验一(进程调度
  • python实现进程调度

    2019-12-29 14:45:18
    python模拟实现进程调度算法,先来先服务,短作业优先,静态高优先级优先,动态高优先级优先,时间片轮转法
  • 进程调度算法的实现计算机操作系统课程设计
  • 使用python内置模块tkinter实现进程的可视化模拟调度,下载后的源代码可直接运行,根据操作系统作业设计而成
  • 进程调度算法模拟 专业 XXXXX 学号 XXXXX 姓名 XXX 实验日期 20XX 年 XX 月 XX 日 一实验目的 通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解 二实验要求 编写程序实现对 5 个进程的调度模拟 要求至少...
  • Linux进程调度策略

    2021-01-20 14:53:49
    分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也是曾经使用了cpu少的进程将会得到优先调度。  SHCED_RR和SCHED_FIFO的不同:  当采用SHCED_RR策略的进程的时间片用完,...
  • 进程调度模拟程序:假设有10个进程需要在CPU上执行,分别用:  先进先出调度算法;  基于优先数的调度算法;  最短执行时间调度算法 确定这10个进程在CPU上的执行过程。要求每次进程调度时在屏幕上显示:  ...
  • Linux进程调度

    2021-01-09 10:02:31
    Linux进程调度 1.Linux进程类型 普通进程: 采用动态优先级来调度; 调度程序周期性地修改优先级 实时进程: 采用静态优先级来调度; 由用户预先指定,以后不会改变 2.Linux进程优先级 静态优先级: 进程创建时指定...
  • 利用c++模拟进程调度。模拟操作系统内核对进程的控制和管理:包括进程的创建和撤销、进程状态的切换和简单的内存空间管理。  能够模拟进程的创建与撤销过程;(4 分)  对进程的状态进行全面的控制;(4 分) ...
  • 本资源使用Java和JavaFX模拟了单处理器系统进程调度的源代码。该资源的文字版信息请访问博客《操作系统实验:单处理器系统的进程调度(学习笔记)》...
  • 进程是操作系统中最基本、最重要的概念,进程调度又是操作系统的核心模块。本实验要求学生独立设计并实现进程调度模拟程序,以加深对进程控制块概念和各种进程调度算法的理解
  • 目的: 在进程控制、请求分页存储器管理、设备管理基础上 实现按先来...5.调度时应适当输出调度过程中各进程状态队列的变化情况以及进程的已执行时 间、还需服务时间(针对时间片轮转算法)。 6.完成银行家算法的实现。
  • 实验1 进程调度(2学时) 一、实验目的 通过实验加强对进程调度算法的理解和掌握。 二、实验内容 编写程序实现基于优先级的时间片轮转调度算法。 三、实验要求 1、假定系统有5个进程,每个进程用一个进程...
  • 进程调度模拟程序:假设有10个进程需要在CPU上执行,分别用:先进先出调度算法、基于优先数的调度算法、最短执行时间调度算法确定这10个进程在CPU上的执行过程。要求每次进程调度时在屏幕上显示:当前执行进程、就绪...
  • 编写一个单处理机下的进程调度程序,模拟操作系统对进程的调度。 要求: 1.能够创建指定数量的进程,每个进程由一个进程控制块表示。 2.实现先来先服务调度算法:进程到达时间可由进程创建时间表示。 3.实现短作业...
  • 随机生成进程信息并进行模拟调度,会显示出相应调度方法下的各个时间片进程调度安排(图表)。共四种调度方法:时间片轮转调度,优先数调度,最短进程优先,最短剩余时间优先。内含实验报告。
  • 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。进程调度分配处理机,是控制协调进程对 CPU 的竞争,即按一定的调度算法从...
  • C++实现优先进程调度算法源代码+实验报告:计算机操作系统课程综合性实验报告-进程调度算法程序设计。
  • 进程调度是系统内部的低级调度,进程调度的策略通常 有先来先服务算法、时间片轮转算法、最高优先权优先调度 算法、最短进程优先调度算法等。衡量进程调度性能通常需 要从定性和定量两个方面来综合考虑。
  • 通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。
  • C语言实现:短进程优先-进程调度算法 1. 采用“短进程优先”调度算法对五个进程进行调度。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已用CPU时间、进程...
  • . 优质范文 . 优质范文 淮海工学院计算机工程... 优质范文 目的与要求 进程是操作系统最重要的概念之一进程调度是操作系统内核的重要功能本实验要求用Java或C/C++语言编写一个进程调度模拟程序至少使用先来先服务短进程
  • 计算机操作系统-实验一进程调度实验报告书 作者 日期 淮海工学院计算机工程学院 实验报告书 课程名操作系统原理A 题 目: 进程调度 班 级 计21 学 号: 0114009 姓 名 薛慧君 评语 评语 成绩 指导教师 批阅时间 年 月 ...
  • 2. 用高级语言编写和调试一个进程调度程序,以加深对进程调度算法的理解。 【实验准备】 1. 几种进程调度算法  短进程优先调度算法  高优先权优先调度算法  先来先服务调度算法  基于时间片的轮转调度算法...
  • 使用动态优先权和时间片轮转的进程调度算法的模拟使用动态优先权和时间片轮转的进程调度算法的模拟使用动态优先权和时间片轮转的进程调度算法的模拟使用动态优先权和时间片轮转的进程调度算法的模拟使用动态优先权和...
  •  编写一个单处理机下的进程调度程序,模拟操作系统对进程的调度。 实验目的: 进程是操作系统中最基本、最重要的概念,进程调度又是操作系统的核心模块。本实验要求学生独立设计并实现进程调度模拟程序,以加深对...
  • 进程管理是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用...本实验模拟在单处理器情况下的进程调度,目的是加深对进程调度工作的理解,掌握不同调度算法的优缺点。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 420,290
精华内容 168,116
关键字:

进程调度

友情链接: marykay.zip