《Linux操作系统编程》第二章 进程运行与调度: 了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念

简介: 《Linux操作系统编程》第二章 进程运行与调度: 了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁

🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥


第二章 进程运行与调度

学习目的

要求学生了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念。

学习要求

了解:进程并发、进程调度方式、同步与互斥、实时(分时)操作系统调度。处理机调度的层次。

理解:进程概念:进程的定义与特征、进程的基本状态、进程的挂起状态、进程控制块、进程的创建、进程的终止、进程的阻塞与唤醒、进程的挂起与激活。

掌握:进程的定义与特征、进程的基本状态、进程控制块、操作系统内核、进程的创建、进程的终止、进程的阻塞与唤醒、进程的挂起与激活、线程与进程、进程调度算法。进程调度的概念、调度队列模型、各种进程调度算法。

学习方法

许多概念十分抽象,需要同学具有抽象思维能力。处理机调度算法属于重难点问题,需要同学动手实践,帮助更好地理解原理。

概念和原理

2.1 进程的描述与特征

典型的进程定义有:(1)进程是程序的一次执行。(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。(3)进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

PCB:为使程序(含数据)能独立运行,应为之配置一个专门的数据结构即进程控制块(PCB);由程序段、相关的数据段和PCB三部分构成了进程实体。创建进程,实质上是创建进程实体中的PCB;撤消进程,实质上是撤消进程的PCB。

2.1.1 进程的定义

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

2.1.2 程序和进程的区别

(1) 程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;

(2) 程序是静态的观念,进程是动态的观念;

(3) 进程具有并发性,而程序没有;

(4) 进程是竞争计算机资源的基本单位,程序不是。

(5) 进程和程序不是一一对应的:

▪ 一个程序可对应多个进程即多个进程可执行同一程序;

▪ 一个进程可以执行一个或几个程序。

2.1.3 进程的特征

(1) 动态性

▪ 进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。

▪ 动态性表现:“它由创建而产生,由调度而执行,由撤消而消亡”。可见,进程实体有一定的生命期。

▪ 程序是一组有序指令的集合,其本身并不具有运动的含义,因而是静态的。

(2) 并发性

多个进程实体同存于内存中,且能在一段时间内同时运行。

(3) 独立性

进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。

(4) 异步性

进程按各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行。

2.2 进程的状态与转换

2.2.1 进程的状态

(1) 三种基本状态

▪ 就绪(Ready)状态

当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行。

▪ 执行状态

进程已获得CPU,其程序正在执行。

▪ 阻塞状态

正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,把这种暂停状态称为阻塞状态,有时也称为等待状态。

图2-1 三种基本状态的转换

(2) 五种状态

在三种基本状态基础上引入下面两种状态:

▪ 创建状态

当一个新进程刚刚建立,还未将其放入就绪队列时的状态,称为创建状态。

▪ 终止状态

当一个进程已经正常结束或异常结束,操作系统已将其从系统队列中移出,但尚未撤消,这时称为终止状态。

图2-2 五种状态的转换

2.2.2 挂起状态

当出现了引起进程挂起的事件时,用户请求将自己挂起,或者父进程请求挂起自己的子进程,这时使用挂起原语suspend( )。挂起原语检查进程状态,如果处于活动就绪状态就改为静止就绪;如果处于活动阻塞就改为静止阻塞。

当发生激活事件后,系统利用激活原语active( ) 将指定进程激活。激活原语将进程从外存调入内存,然后检查进程状态。

(1) 造成挂起状态的原因

▪ 终端用户的请求。

▪ 父进程请求。

▪ 负荷调节的需要。

当实时系统中的工作负荷较重,把一些不重要的进程挂起,以保证系统能正常运行。

▪ 操作系统的需要

操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。

(2) 被挂起进程的特征

▪ 不能立即执行

▪ 可能是等待某事件发生,若是,则阻塞条件独立于挂起条件,即使阻塞事件发生,该进程也不能执行

▪ 使之挂起的进程为:自身、其父进程、OS

▪ 只有挂起它的进程才能使之由挂起状态转换为其他状态

(3) 进程挂起状态的转换

图2-3 进程挂起状态的转换

2.2.3 进程状态的切换

图2-4 进程状态的切换

▪ 挂起原语

活动就绪 à 静止就绪

活动阻塞 à 静止阻塞

▪ 激活原语

静止就绪 à 活动就绪

静止阻塞 à 活动阻塞

2.3 进程管理的数据结构

2.3.1 进程和进程映像

▪ 进程是操作系统中最基本、最重要的概念,多道程序出现后为了刻画程序执行的动态情况,描述运行程序的活动规律而引入进程。

▪ 进程最少必须包括一个或一组被执行的程序,以及与这些程序相关联的局部变量、全局变量和任何已定义的常量的数据单元。

▪ 属于一个进程的程序、数据、栈和属性的集合称为进程映像。

2.3.2 进程控制块的作用

进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位—进程。

在进程的整个生命期中,操作系统总是通过PCB对进程进行控制的。

所以说,PCB是进程存在的唯一标志。

OS是根据PCB来对并发执行的进程进行控制和管理的,如:

- 进程创建:分配进程控制块

- 进程调度:保存和读取进程控制块

- 进程撤销:回收进程控制块

2.3.3 进程控制块中的信息

(1) 进程标识符信息

进程标识符用于唯一地标识一个进程。一个进程通常有两种标识符:

▪ 内部标识符:为每一个进程赋予一个唯一的数字标识符,通常是进程的序号。设置内部标识符主要是为了方便操作系统使用。

▪ 外部标识符:它由创建者提供,通常是由字母、数字组成,往往是由用户(进程)在访问该进程时使用。

(2) 处理机状态信息

处理机状态信息主要是由处理机的各种寄存器的内容组成的。

▪ 通用寄存器:又称为用户可视寄存器。

▪ 指令计数器(PC):其中存放了要访问的下一条指令的地址。

▪ 程序状态字PSW:其中含有状态信息,如条件码、执行方式、中断屏蔽标志等

▪ 用户栈指针(SP):用于存放系统调用参数及调用地址。栈指针指向该栈的栈顶。

(3) 进程调度信息

在PCB中还存放一些与进程调度和进程对换有关的信息

▪ 进程状态:指明进程的当前状态。

▪ 进程优先级。

▪ 进程调度所需的其它信息,如:进程已等待CPU的时间总和、进程已执行的时间总和等;

▪ 事件:是指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。

(4) 进程控制信息

▪ 程序和数据的地址:

进程的程序和数据所在的内存或外存地址。

▪ 进程同步和通信机制:

实现进程同步和进程通信时必需的机制,如消息队列指针、信号量等。

▪ 资源清单:

进程所需的全部资源及已经分配到该进程的资源的清单;

▪ 链接指针:

本队列下一个进程的PCB的首地址。

2.3.4 进程控制块的组织方式

(1) 线性方式

把系统中所有的PCB都组织在一张线性表中。

(2) 链接方式

把具有同一状态的PCB,用其中的链接指针链接成一个队列。

(3) 索引方式

相同状态的进程PCB组织在一张表格中,系统根据所有进程的状态建立几张索引表,系统分别记载各PCB表格的起始地址。

▪ 系统根据所有进程的状态建立相应的索引表,并将每个索引表的首地址记录在内存中的专用单元中。

▪ 每个索引表的表目记录一个PCB在系统PCB表中的位置。

比较以上两种方式的特点,链接方式是插入和删除操作很方便,查找速度慢;索引方式查找速度快,但因为索引表是线性的,因此插入和删除操作麻烦。

因为进程的主要操作就是插入和删除,因此,链接方式使用更多一些。

2.4 进程的创建与终止

2.4.1 操作系统对进程的控制

进程控制一般是由OS内核中的一组原语来实现的

(1) 原语

▪ 操作系统内核提供核外调用的过程或函数称为原语

▪ 原语是由若干条指令构成,用于完成特定功能的一段程序。

▪ 原语在执行过程不允许被中断。

(2) 原子操作

▪ 执行中不能被其它进程(线程)打断的操作就叫原子操作。

▪ 当该次操作不能完成的时候,必须回到操作之前的状态,原子操作不可拆分。

2.4.2 操作系统内核

内核是计算机硬件的第一层扩充软件,为系统对进程控制、存储器管理等提供有效的机制。

(1) CPU的工作模式

▪ 特权模式:只有操作系统能够工作在特权模式上,这个模式可以直接访问硬件,执行特权指令。

▪ 用户模式:用户程序都工作在用户模式,在这种模式工作的CPU只能执行基本的指令,当用户程序想干些关键的操作时,他会向操作系统请求,由操作系统帮他完成,即“系统服务” 。

(2) CPU的执行状态

▪ 用户态:用户程序执行的状态,只能执行规定的指令,访问规定的寄存器和存储区。

▪ 系统态:也称“核心态”或“管态”,OS运行的状态,能执行一切指令,访问所有的寄存器和存储区。

2.4.3 进程创建

(1) 进程图

进程图是用于描述一个进程的家族关系的有向树。

(2) 进程之间的关系

▪ 子进程可以继承父进程所拥有的资源。

▪ 当子进程被撤消时,应将其从父进程那里获得的资源归还给父进程。

▪ 在撤消父进程时,也必须同时撤消其所有的子进程。

(3) 引起进程创建的事件

导致一个进程去创建另一个进程的典型事件,可以有下四类:

  1. 用户登录。
  2. 作业调度。
  3. 提供服务。例如:I/O请求
  4. 应用请求。基于应用进程的需求,由它自己创建一个新进程,以便使新进程以并发运行方式完成特定任务。

(4) 调用进程创建原语步骤

  1. 申请空白PCB。
  2. 为新进程分配资源。
  3. 初始化进程控制块。

▪ 初始化标识信息。

▪ 初始化处理机状态信息。使程序计数器指向程序的入口地址,使栈指针指向栈顶;

▪ 初始化处理机控制信息:进程的状态、优先级。

  1. 将新进程插入就绪队列,启动调度。
2.4.4 进程终止

(1) 引起进程终止的事件

1)正常结束。

2)异常结束:

a) 越界错误。

b) 保护错。

c) 非法指令。

d) 特权指令错。

e) 运行超时。

f) 等待超时。

g) 算术运算错、被0除:

h) I/O故障。

3)外界干预:外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行。

a) 操作员或操作系统干预:

由于某种原因,例如,发生了死锁,由操作员或操作系统终止该进程;

b) 父进程请求终止该进程;

c) 当父进程终止时,OS也将他的所有子孙进程终止。

(2) 进程的终止过程

  1. 根据被终止进程的PID找到它的PCB,从中读出该进程的状态。
  2. 若被终止进程正处于执行状态,应立即终止该进程的执行,重新进行调度。
  3. 若该进程还有子孙进程,立即将其所有子孙进程终止。
  4. 将被终止进程所拥有的全部资源,归还给其父进程,或者归还给系统。
  5. 将被终止进程的PCB从所在队列中移出。

2.5 进程的阻塞与唤醒

2.5.1 进程的阻塞

一个进程因为等待某一事件发生而暂时停止运行,这时称该进程处于阻塞状态。由于无法继续执行,于是进程便通过调用阻塞原语block()把自己阻塞。阻塞是主动行为

(1) 引起进程阻塞的事件

  1. 请求系统服务。
  2. 启动某种操作:如I/O操作。
  3. 新数据尚未到达。
  4. 无新工作可做

(2) 进程的阻塞过程

  1. 找到要阻塞进程对应的PCB;
  2. 保护进程运行现场,把PCB中的现行状态由“执行”改为“阻塞”,暂时停止进程运行;
  3. 将PCB插入相应事件的阻塞队列;
  4. 转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换。
2.5.2 进程的唤醒

当被阻塞进程所期待的事件出现时,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语wakeup( ),将等待该事件的进程唤醒。唤醒是一种被动行为。

(1) 进程的唤醒过程

  1. 在等持该事件的阻塞队列中找到PCB
  2. 把阻塞进程的PCB从阻塞队列中移出,并将其PCB中的现行状态由“阻塞”改为“就绪”
  3. 将该PCB插入到就绪队列中,等待被CPU调度
2.5.3 进程的阻塞与唤醒的转换

图2-5 进程的阻塞与唤醒的转换

2.6 进程的挂起与激活

2.6.1 进程的挂起

当出现了引起进程挂起的事件时,系统将利用挂起原语suspend( )将指定进程挂起或处于阻塞状态的进程挂起。挂起是主动行为

(1) 挂起原语的执行过程

  1. 检查将要被挂起的进程的状态
  2. 若状态为:

▪ 执行 à 静止就绪,设置CPU调度标志为“真”

▪ 活动就绪 à 静止就绪

▪ 活动阻塞 à 静止阻塞

  1. 将被挂起进程的PCB复制到指定的内存区域。
  2. 若处于运行状态,则转向调度程序重新调度

(2) 挂起和阻塞的区别

阻塞:正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行。此时引起进程调度,OS把处理机分配给另一个就绪进程,而让受阻进程处于暂停状态,一般将这种状态称为阻塞状态。

挂起:由于系统和用户的需要引入了挂起的操作,进程被挂起意味着该进程处于静止状态。如果进程正在执行,它将暂停执行,若原本处于就绪状态,则该进程此时暂不接受调度。

挂起和阻塞的不同点:

  1. 对系统资源占用不同:阻塞的进程仍处于内存中,而挂起的进程通过“对换”技术被换出到外存(磁盘)中。
  2. 发生时机不同:阻塞一般在进程等待资源(IO资源、信号量等)时发生;而挂起是由于用户和系统的需要。
  3. 恢复时机不同:

- 阻塞要在等待的资源得到满足(例如获得了锁)后,才会进入就绪状态,等待被调度而执行;

- 被挂起的进程由将其挂起的对象(如用户、系统)在时机符合时(调试结束、被调度进程选中需要重新执行)将其激活。

2.6.2 进程的激活

当发生激活进程的事件时,例如,父进程或用户进程请求激活指定进程,系统将利用激活原语active( )将指定进程激活。(激活是被动行为)。系统利用激活原语active( )将指定进程激活:

(1) 激活原语的执行过程

  1. 检查将要被激活的进程的状态:

▪ 静止就绪 à 活动就绪

▪ 静止阻塞 à 活动阻塞

  1. 检查是否要进行重新调度
2.6.3 挂起与激活原语

▪ suspend()挂起原语

活动就绪 à 静止就绪

活动阻塞 à 静止阻塞

▪ active()激活原语

静止就绪 à 活动就绪

静止阻塞 à 活动阻塞

进程控制原语可能引起的调度:

时机:假如采用的是抢占调度策略,则每当有新进程进入就绪队列时,都应检查是否要进行重新调度。

创建、终止(自己)、挂起(自己)、激活、阻塞、唤醒都可能会产生新的调度。

2.7 处理机调度

2.7.1 处理机调度的基本概念

(1) 为什么要有处理机调度

▪ 处理机是计算机系统中的重要资源

▪ 在多道程序环境下,进程数目通常多于处理机的数目

▪ 系统必须按一定方法动态地把处理机分配给就绪队列中的一个进程

▪ 处理机的利用率和系统性能(吞吐量、响应时间)在很大程度上取决于处理机调度

(2) 什么是处理机调度

无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数,这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。

(3) 作业

作业是用户在一次算题过程中或一次事务处理中,要求计算机系统所做的工作的集合。

- 计算机完成作业是通过执行一系列有序的工作步骤进行的,每个步骤完成作业的一部分特定工作。

- 把计算机系统完成一个作业所需的一系列有序的相对独立的工作步骤称为作业步。

- 作业的各个作业步虽然功能相对独立,但它们之间相互关联,往往是一个作业步的执行需要使用上一个作业步的执行结果

(4) 引起处理机调度的因素

▪ 正在执行的进程执行完毕,或因发生某事件而不能再继续执行(包括:当前执行进程被中断、时间片用完了、挂起自己、退出等);

▪ 执行中的进程因提出I/O请求而暂停执行;

▪ 在进程通信或同步过程中执行了某种原语操作,如P、V操作原语,block原语, wakeup原语等。

(5) 调度时机

▪ 非抢占系统

- 当前进程主动放弃CPU时

▪ 可抢占系统

- 中断请求被服务例程响应完成时

- 当前进程被抢占

(6) 进程切换

▪ 当一个进程占用处理机执行完(或不能继续执行),则换另一个进程占用处理机执行,称为进程切换。

▪ 把处理机分配给不同的进程占用执行,称为进程调度。

▪ 实现分配处理机的程序称为调度程序。

▪ 在进程切换时,要保护执行现场。

▪ 执行现场称为进程的上下文。

图2-6 进程切换过程

基本步骤

  1. 保存进程上下文环境
  2. 更新当前运行进程的控制块内容,将其状态改为就绪或阻塞状态
  3. 将进程控制块移到相应队列(就绪队列或阻塞队列)
  4. 改变需投入运行进程的控制块内容,将其状态变为运行状态
  5. 恢复需投入运行进程的上下文环境
2.7.2 处理机调度的层次

(1) 高级调度

  1. 定义

又称作业调度、长程调度或接纳调度,其主要功能是根据某种算法,把外存上处于后备队列中的那些作业调入内存。批处理系统需要有作业调度,分时和实时系统无需此调度。

  1. 目标

主要用于批处理系统。其设计目标是最大限度地发挥各种资源的利用率和保持系统内各种活动的充分并行

  1. 性能评价

▪ 多道程序度:即允许多少个作业同时在内存中运行。

▪ 周转时间:从作业被提交给系统开始,到作业完成为止的这段时间间隔。

▪ 吞吐量:是指在单位时间内系统所完成的作业数。

▪ 相应比 = (等待时间+要求服务时间) / 要求服务时间 = 响应时间/要求服务时间

(2) 低级调度

  1. 定义

低级调度又称为进程调度或短程调度,它所调度的对象是进程。三种类型OS都必须配置这级调度。(最基本调度)

低级调度用于决定就绪队列中的哪个进程应获得处理机,然后再由分派进程执行把处理机分配给该进程的具体操作

  1. 三个基本机制

a) 排队器

为了提高进程调度的效率,应事先将系统中所有的就绪进程按照一定的方式排成一个或多个队列。

b) 分派器(调度程序)

分派器把由进程调度程序所选定的进程从就绪队列中取出,然后进行上下文切换,将处理机分配给它。

c) 上下文切换机制

当对处理机进行切换时,会发生两对上下文切换操作。

  1. 低级调度功能

a) 按某种算法选取进程(调度)。

b) 保存处理机的现场信息(上下文切换第一步骤)

c) 把处理器分配给进程(上下文切换第二步骤)。

  1. 低级调度方式

a) 非抢占方式:进程占用处理机直至自愿放弃或发生某事件被阻塞时,在把处理机分配给其他进程。

b) 抢占方式:允许暂停某个正在执行的进程,将处理机重新分配给另一个进程。抢占原则有:

▪ 时间片原则

▪ 优先权原则

▪ 短作业(进程)优先原则

(3) 中级调度

  1. 定义

又称中程调度,在存储器管理中对换。

  1. 主要目的

为了提高内存利用率和系统吞吐量。

  1. 具体实现

▪ 使那些暂时不能运行的进程不再占用宝贵的内存资源,而将其调至外存去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。

▪ 当这些进程重又具备运行条件、且内存又稍有空闲时,由中级调度来决定把外存上的那些又具备运行条件的就绪进程,重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。

(4) 三级调度的比较

调度类型 运行频率 运行时间 算法复杂性
低级调度
中级调度 中等 较短 中等
高级调度
2.7.3 调度队列模型和调度准则

(1) 仅有进程调度的调度队列模型 (分时系统)

▪ 在分时系统中,通常仅设有进程调度

▪ 系统把这些进程组织成一个就绪队列

▪ 每个进程在执行时,可能有以下几种情况

- 进程获得CPU正在执行;

- 任务在给定时间片内已完成,释放处理机后为完成状态;

- 任务在时间片内未完成,进入就绪队列末尾;

- 在执行期间因某事件而阻塞。

(2) 具有高级和低级调度的调度队列模型(批处理系统)

▪ 在批处理系统中,不仅需要进程调度,而且还要有作业调度

▪ 就绪队列的形式

在批处理系统中,常用高优先权队列。进程进入就绪队列时,按优先权高低插入相应位置,调度程序总是把处理机分配给就绪队列首进程

▪ 设置多个阻塞队列

根据事件的不同设置多个队列提高效率

(3) 同时具有三级调度的调度队列模型

▪ 在OS中引入中级调度后,进程的就绪状态分为内存就绪(表示进程在内存中就绪)和外存就绪(进程在外存中就绪)。

▪ 同样,阻塞状态进一步分成内存阻塞和外存阻塞两种状态。

▪ 在调出操作的作用下,可使进程状态由内存就绪转为外存就绪,由内存阻塞转为外存阻塞;

▪ 在中级调度的作用下,又可使外存就绪转为内存就绪。

(4) 选择调度方式和调度算法的若干准则

  1. 面向用户的准则

a) 周转时间短(评价批处理)

b) 响应时间快(评价分时)

c) 截止时间的保证(评价实时)

d) 优先权准则

  1. 面向系统的准则

a) 系统吞吐量高(评价批处理系统)

b) 处理机利用率高。主要对大、中型多用户系统,对单用户或实时系统不重要。

c) 各类资源的平衡利用。(内存、外存、I/O设备等)主要对大、中型系统,对微型机或实时系统不重要。

2.7.4 处理机调度的算法

▪ 作业调度(高级调度):根据JCB中的信息,检查系统中的资源是否能满足作业对资源的需求,以及按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为他们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上等待调度。

▪ 进程调度(低级调度):当计算机系统处于就绪状态的用户进程数多于CPU数时,就会产生多个进程或线程同时竞争CPU的结果。假设现在只有一个CPU可用,那么操作系统就必须选择一个进程运行,并把处理机分配给该进程

▪ 非抢占式算法:在采用这种调度方式时,一旦把处理机分配给某进程,就让它一直运行下去,绝不会因为时钟中断或者任何其他原因去抢占当前正在运行进程的处理机,直至该进程完成,或者因为发生某件事被阻塞时,才把处理机分配给别的进程。

▪ 抢占式算法:这种调度方式允许调度程序根据某种规则,去暂停某个正在执行的进程,将已经分配给该进程的处理机重新分配给另一进程。(当然,抢占是有一定原则的:1.优先权原则;2.短进程优先原则;3.时间片原则)

(1) 先来先服务调度算法

▪ 按照作业/进程进入系统的先后次序进行调度,先进入系统者先调度;即启动等待时间最长的作业/进程。

▪ 适合于作业调度和进程调度。

▪ 优点:

- 有利于长作业(进程)

- 有利于CPU繁忙型作业(进程)

▪ 缺点:

- 不利用短作业(进程),特别是来的较晚的短作业(进程)。

- 不利于I/O繁忙型作业(进程)

(2) 短作业优先调度算法

▪ 以要求运行时间长短进行调度,即启动要求运行时间最短的作业

▪ 可以分别用于作业调度和进程调度

▪ 短作业优先(SJF)的调度算法,是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行;

▪ 短进程优先(SPF)调度算法,则是从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时,再重新调度。

▪ 优点

- 能有效降低作业/进程的平均等待时间。

- 提高系统的吞吐量。

▪ 缺点

- 该算法对长作业不利,更严重的是可能将导致长作业(进程)长期不被调度。

- 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理。

- 由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。

- 无法实现人机交互

(3) 抢占式优先权调度算法

▪ 只要系统中出现一个新的就绪进程,就进行优先权比较

▪ 该调度算法常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中

▪ 用于要求严格的实时、性能要求较高的批处理和分时

▪ 静态优先权

- 静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变。

▪ 动态优先权

- 随进程的推进或随其等待时间的增加而改变,以获得更好的调度性能

- 高响应比优先调度算法(HRRN)

٭ 优先权=(等待时间+要求服务时间)/要求服务时间

٭ 由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先权又相当于响应比RP。据此,又可表示为

٭ 响应比=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间

(4) 基于时间片的轮转调度算法

▪ 适用于进程调度

▪ 原理:

- 在早期的时间片轮转法中,系统将所有就绪进程按先来先服务原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。当时间片用完时,由一个计时器发出时钟中断请求,调度程序便根据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。

▪ 时间片大小确定要考虑的因素:

- 系统对响应时间的要求。(用户数一定时,成正比)

- 就绪队列中的进程数目。(保证响应时间,成反比)

- 系统的处理能力。(保证用户键入的命令能在一个时间片内处理完毕)

▪ 优缺点

- 时间片的大小对计算机性能的影响。

- 存在的问题:未有效利用系统资源。对于短的、计算型进程比较有利,因为该进程充分利用时间片,而I/O型进程却不利,因为在两次I/O之间仅需很少的CPU时间,却需要等待一个时间片。

- 常用于分时系统及事务处理系统。

重点

进程的概念和状态变换;

进程就是在计算机上运行的可执行文件针对特定的输入数据的一个实例。通过状态机为学生重点讲述进程的就绪、挂起、运行、终止等状态变换。进程调度的概念、调度队列模型、各种进程调度算法。

难点

进程调度算法;进程调度算法在学生学习操作系统时是难点,具有一定的理论深度,需要结合板书为学生举例。

习题

1.在操作系统中为什么要引入进程概念?它会产生什么样的影响?

答:为了使程序在多道程序环境下能并发执行,并对并发执行的程序加以控制和描述,在操 作系统中引入了进程概念。

影响: 使程序的并发执行得以实行。

  1. 试说明PCB 的作用,为什么说PCB 是进程存在的惟一标志?

答:PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。作用是使一个在 多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程 并发执行的进程。OS是根据PCB对并发执行的进程进行控制和管理的。

  1. 试说明进程在三个基本状态之间转换的典型原因。

答: (1)就绪状态→执行状态:进程分配到CPU资源

(2)执行状态→就绪状态:时间片用完

(3)执行状态→阻塞状态:I/O请求

(4)阻塞状态→就绪状态:I/O完成

4.高级调度与低级调度的主要任务是什么?为什么要引入中级调度?

答:高级调度的主要任务是根据某种算法,把外存上处于后备队列中的那些作业调入内存。

低级调度是保存处理机的现场信息,按某种算法先取进程,再把处理器分配给进程。 引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程不再 占用内存资源,将它们调至外存等待,把进程状态改为就绪驻外存状态或挂起状态。

5.试说明低级调度的主要功能。

答:(1)保存处理机的现场信息(2)按某种算法选取进程(3)把处理机分配给进程。

原创声明

=======

作者: [ libin9iOak ]


本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。

作者保证信息真实可靠,但不对准确性和完整性承担责任。

未经许可,禁止商业用途。

如有疑问或建议,请联系作者。

感谢您的支持与尊重。

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。


目录
相关文章
|
1月前
|
算法 调度 UED
探索操作系统的心脏:调度算法的奥秘与影响
【10月更文挑战第9天】 本文深入探讨了操作系统中至关重要的组件——调度算法,它如同人体的心脏,维持着系统资源的有序流动和任务的高效执行。我们将揭开调度算法的神秘面纱,从基本概念到实际应用,全面剖析其在操作系统中的核心地位,以及如何通过优化调度算法来提升系统性能。
|
11天前
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
12天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
31 0
Vanilla OS:下一代安全 Linux 发行版
|
8天前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第34天】本文旨在探讨操作系统中至关重要的一环——进程管理及其调度策略。我们将从基础概念入手,逐步揭示进程的生命周期、状态转换以及调度算法的核心原理。文章将通过浅显易懂的语言和具体实例,引导读者理解操作系统如何高效地管理和调度进程,保证系统资源的合理分配和利用。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供新的视角和深入的理解。
26 3
|
13天前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度策略
【10月更文挑战第29天】本文将带领读者深入探讨操作系统中的核心组件之一——进程,并分析进程管理的重要性。我们将从进程的生命周期入手,逐步揭示进程状态转换、进程调度算法以及优先级调度等关键概念。通过理论讲解与代码演示相结合的方式,本文旨在为读者提供对进程调度机制的全面理解,从而帮助读者更好地掌握操作系统的精髓。
29 1
|
13天前
|
算法 调度 UED
深入理解操作系统中的进程调度
【10月更文挑战第29天】探索进程调度的奥秘,本文将带你深入了解在操作系统中如何管理和控制多个并发执行的程序。从简单的调度算法到复杂的多级反馈队列,我们将逐步揭示如何优化系统性能和提高资源利用率。准备好一起揭开进程调度的神秘面纱吧!
|
15天前
|
人工智能 安全 Linux
|
18天前
|
算法 大数据 Linux
深入理解操作系统之进程调度算法
【10月更文挑战第24天】本文旨在通过浅显易懂的语言,带领读者深入了解操作系统中的进程调度算法。我们将从进程的基本概念出发,逐步解析进程调度的目的、重要性以及常见的几种调度算法。文章将通过比喻和实例,使复杂的技术内容变得生动有趣,帮助读者建立对操作系统进程调度机制的清晰认识。最后,我们还将探讨这些调度算法在现代操作系统中的应用和发展趋势。
|
1月前
|
分布式计算 算法 大数据
探索操作系统的核心:调度与内存管理机制
【10月更文挑战第11天】 本文深入探讨了操作系统中两大核心功能——调度与内存管理机制。通过分析调度算法、进程状态转换及内存分配策略等关键方面,揭示了它们如何共同维护系统性能和稳定性。旨在为读者提供对操作系统内部运作的深刻理解,同时引起对优化策略的思考。
59 5
|
9天前
|
算法 调度 UED
深入浅出操作系统调度策略
【10月更文挑战第33天】在数字时代的心脏,操作系统扮演着至关重要的角色。本文将探讨操作系统的核心功能之一——进程调度策略的设计与影响。我们将从理论到实践,通过浅显易懂的语言和具体代码示例,揭示如何通过不同的调度算法来优化系统性能和用户体验。无论你是技术新手还是资深开发者,这篇文章都将为你提供新的视角和深入的理解。

热门文章

最新文章