操作系统第三章:进程管理与调度【南邮】【考察重点】

声明:操作系统系列只针对南邮操作系统课程重点进行梳理,尽量不要作为考研复习资料,可能会有缺失之类,也恳请读者进行批评指正,共同进步;参考教材:《操作系统教程》人民邮电出版社,黄刚、徐小龙、段卫华编著,2009.9;

第二章用户界面不作要求,可选择自行观看。

本章节为考察重点,尽量跳过繁琐的概念(但不会忽视重点的概念和相关概念的辨析),重点讲快速复习的知识点并在考试中取得高分,尤其是作业调度算法一定要熟练掌握


进程管理与调度

3.1中央处理器

3.1.1 CPU的构成与基本工作方式

中央处理器由运算器、控制器、一系列的寄存器以及高速缓存构成。

1)运算器:实现指令中的算术运算和逻辑运算,是计算机计算的核心。

2)控制器:负责控制程序运行的流程,包括取指令、维护CPU状态、CPU与内存的交互等。

3)寄存器:指令在CPU内部作处理的过程中暂存数据、地址以及指令信息的存储设备。

3.1.2 特权指令和非特权指令

  • 特权指令:只能由操作系统使用的指令。
  • 非特权指令:操作系统和用户都能使用的指令。

3.1.3 处理器状态

  • 管态:操作系统管理程序运行的状态,具有较高的特权级别,又称为特权态、系统态。
  • 目态:用户程序运行时的状态,较低的特权级别,又称为普通态、用户态。

(注意:有些系统将处理器状态划分核心状态,管理状态和用户程序状态(目标状态)三种)

  • 状态切换

在这里插入图片描述

管态到目态的转换可通过设置程序状态字来实现;

目态到管态的转换的唯一途径是通过中断。

3.2中断⭐️⭐️

中断是指CPU对系统中或系统外发生异步事件的响应。异步事件是指无一定时序关系的随机发生事件。

从中断的性质和激活的手段将中断分为强迫性的中断和自愿性中断。

在这里插入图片描述

通常:异常会引起中断;中断未必由异常引起。

3.3进程及其实现

3.3.1 进程定义⭐️⭐️

进程是为了描述程序在并发执行时对系统资源的共享,所需的一个描述程序执行时动态特征的概念。

定义:进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配、调度和保护的独立单位。

3.3.2 进程的类型和特性

1、进程的类型:系统进程、用户进程

2、进程的特征:

  • 动态性:进程是程序在处理机上的一次执行过程,有一定生命周期。
  • 并发性:多个进程可同时存在于内存中,能在一段时间内同时运行。
  • 独立性:进程是一个能独立运行的基本单位,也是资源分配的基本单位
  • 制约性:进程间因为对资源的争用而相互制约。
  • 异步性:进程按照各自独立的、不可预知的速度推进。
  • 结构性:进程包含了相关的数据和程序,同时还有一个称为“进程控制块”的数据结构来记录进程的动态变化过程。因此,进程的组成三要素为“程序”、“数据”和“进程控制块(PCB)”。

3、进程和程序的区别⭐️⭐️(考简答题)

  • 进程更能真实地描述并发,而程序不能。
  • 进程是由程序和数据和进程控制块三部分组成的。
  • 程序是静态的,进程是动态的。
  • 进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的。
  • 一个程序可对应多个进程,反之亦然。
  • 进程具有创建其他进程的功能,而程序没有。

3.3.3 进程的状态和转换

三态/五态模型⭐️⭐️⭐️

  • 就绪 ------> 运行:调度程序选择一个新的进程运行。
  • 运行 ------> 就绪:①运行进程用完了时间片;②运行进程被中断,因为一高优先级进程处于就绪状态。
  • 运行 ------> 等待:①当一进程必须等待时;②对一资源的访问尚不能进行;③初始化I/O且必须等待结果;④等待某一进程提供输入。
  • 等待 ------> 就绪:当所等待的事件发生时。

在这里插入图片描述

3.3.4 进程控制块

进程控制块的构成:

  • 进程描述信息:进程标识符(process ID),唯一。
  • 进程控制信息;
  • 所拥有的资源和使用情况;
  • CPU现场保护信息。

3.3.5 进程要素

进程的静态组成:进程程序;进程数据;栈;进程控制块;前面所有统称为进程映像。

3.6处理器调度

1、调度策略考虑因素⭐️⭐️(考简答题)

  • 系统设计目标;
  • 资源利用率;
  • 均衡系统与用户的要求。

2、调度模式:(按层次分)

  • 高级调度:也称为作业调度或宏观调度。
  • 中级调度:也称为平衡负载调度或中程调度。
  • 低级调度:也称为进程调度或短程调度。

3.7作业的管理与调度⭐️⭐️⭐️⭐️

3.7 我觉得编写的不好,作者把进程调度和作业调度分得太开,导致理解起来会有一定困难,个人认为最好的顺序是在作业调度之后紧跟进程调度,然后再讲多道程序环境下的作业调度算法;还有线程和进程的安排也不是很合理;而且我还觉得作者目录分这么细,感觉把内容割裂了开,个人不是很喜欢这种风格。

3.7.1 作业及其调度

作业:用户在一次计算过程中,或者一次事务处理过程中,要求计算机系统所做工作的总称。

系统为每个作业建立一个作业控制块(Job Control Block,JCB)记录有关信息。JCB的内容包括作业名、作业类型、资源要求、当前状态、资源使用情况以及该作业的优先级等。

3.7.2 作业与进程

作业与进程的主要区别⭐️⭐️(考简答题)

作业是用户需要计算机完成某项任务而要求计算机所做工作的集合。一个作业的完成要经过作业提交、作业收容、作业执行和作业完成四个阶段。而进程是已提交完毕的作业的执行过程,是资源分配的基本单位。两者的主要区别如下:

  • 作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业之后,系统将它放入外存中的作业等待队列中等待执行;而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。

  • 一个作业可由多个进程组成,且必须至少由一个进程组成,但一个进程不能构成多个作业。

  • 作业的概念主要用在批处理系统中。像UNIX这样的分时系统则没有作业的概念;而进程的概念则用在几乎所有的多道程序系统中。

3.7.3 调度原则

一个最佳的作业或进程调度算法及相应策略应该达到哪些理想目标?⭐️⭐️(考简答题)

调度实质上是一个策略问题,设定的目标往往是相互冲突的。

  • (1)单位时间内运行尽可能多的作业
  • (2)使处理器尽可能保持“忙碌”
  • (3)响应时间和周转时间能够尽可能短
  • (4)使各种I/O设备得以充分利用
  • (5)对所有的作业都是公平合理的

设作业进入时间(也叫到达时间)为 S i S_i Si,结束时间为 E i E_i Ei,则作业平均周转时间 T = 1 n × ∑ i = 1 n ( E i − S i ) T=\frac{1}{n}\times\sum_{i=1}^{n}(E_i-S_i) T=n1×i=1n(EiSi)

r i r_i ri为作业的实际执行时间,则作业的平均带权周转时间 W W W W = 1 n × ∑ i = 1 n E i − S i r i W=\frac{1}{n}\times\sum_{i=1}^{n}\frac{E_i-S_i}{r_i} W=n1×i=1nriEiSi

T T T:衡量不同调度算法对同一个作业流的性能。

W W W:同一调度算法对不同作业流的性能衡量。

系统进行作业调度算法的决策因素:

  • 作业到达时间
  • 预先为作业确定的优先级

系统可测定的其他因素:

  • 作业所需的CPU时间片
  • 存储要求
  • 其他的资源要求

3.7.3 作业调度算法⭐️⭐️⭐️⭐️⭐️

单道程序环境下的作业调度算法(重点掌握三个)书 P 54 P_{54} P54

抢占和非抢占:通俗来讲,抢占就是作业在进行中的时候,按照比如SJF规则,在到达时间有个更短的作业,就会强制让之前运行的作业直接退出,然后进行新的作业;非抢占就是一旦作业进入工作就不可被强制替换出来,但还依旧在等待序列中。

1、先来先服务算法(FCFS:First Come First Serve)

最简单的调度算法。按照作业提交的先后顺序分派CPU。当前作业或进程占用CPU后,除非其任务完成或阻塞,才让出CPU(非抢占式)。

	特点:   ● 算法开销小
            ● 有利于长作业,不利于短作业
			● 有利于CPU繁忙的作业,不利于I/O繁忙的作业

2、最短作业优先算法(SJF:Shortest Job First)

对执行时间短的作业优先分派处理机。

	特点:   ● 可以得到最大的系统吞吐率
            ● 比FCFS算法改善了平均周转时间和带权周转时间
            ● 有可能使长作业永远没有机会执行

3、基于优先数的调度算法(HPF)

● 由用户规定优先数(外部优先数)用户提交作业时,根据急迫程度规定适当的优先数作业调度程序根据JCB优先数决定进入内存的次序

● 由系统计算优先数(内部优先数)

多道程序环境下的作业调度算法(必考大题)⭐️⭐️⭐️⭐️⭐️ 书 P 55 P_{55} P55

例题:有一个具有两道作业的批处理系统,作业调度采用短作业优先的非抢占调度算法,进程调度采用以优先数为基础的抢占式调度算法,在下表所示的作业序列中,作业优先数即为进程优先数,优先数越小优先级越高。

作业名
到达时间
估计运行时间(分钟)
优先数
A
10:00
40
5
B
10:20
30
3
C
10:30
50
4
D
10:50
20
6

(1)列出所有作业进入内存时间及结束时间。(2)计算平均周转时间和平均带权周转时间。

解析:每个作业运行将经过两个阶段:作业调度(SJF算法)和进程调度(优先数抢占式)。作业调度是非抢占的,即作业进入CPU就不会被强制退出,而进程是抢占的,即当CPU存在两个作业的时候必须得选一个,会根据算法进行选择更改运行的作业。另外,批作业最多容纳2道作业,更多的作业将在后备队列等待。

在这里插入图片描述

  • a)10:00,作业A到达并投入运行。

  • b)10:20,作业B到达并且优先权高于A,所以B运行,A等待,此时A还剩20分钟

  • c)10:30,作业C到达,但是由于作业调度是非抢占的,已经有两道作业,等待,不可进入CPU。

  • d)10:50,作业B结束,作业D到达,按SJF短作业优先算法,所以D被装入CPU,但是A的优先级高于D,所以进程调度选择A运行。

  • e)11:10,作业A结束,作业C被调入CPU,且C的优先级高于D,所以进程调度选择C运行。

  • f)12:00,作业C结束,作业D运行。

  • g)12:20,作业D结束。

作业名
到达时间
估计运行时间
开始时间
结束时间
周转时间
带权周转时间
A
10:00
40
10:00
11:10
70
1.75
B
10:20
30
10:20
10:50
30
1
C
10:30
50
11:10
12:00
90
1.8
D
10:50
20
10:50
12:20
90
4.5
作业平均周转时间 T=70作业平均带权周转时间 W=2.2625
280
9.05

3.9线程及其基本概念

进程与线程的联系和区别

  • 进程是资源分配的基本单位。进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。而线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。
  • 当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。
  • 线程只由相关堆栈寄存器和线程控制块组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。
  • 进程切换时涉及到有关资源指针的保存以及地址空间的变化等问题;线程切换时,由于同一进程内的线程共享资源和地址空间,将不涉及资源信息的保存和地址变化问题。而且,进程的调度与切换都是由操作系统内核完成,而线程则既可由操作系统内核完成,也可由用户程序进行。
  • 进程间的关系比较疏远。各个进程是在自己独有的地址空间内执行,不但寄存器和堆栈是独有的,动态数据堆、静态数据区和程序代码也相互独立。而线程间的关系则要紧密得多,虽然各线程为保持自己的控制流而独有寄存器和堆栈,但由于两线程从属于同一进程,它们共享同一地址空间,所以动态堆、静态数据区及程序代码为各线程共享。

线程的实现:用户级线程、核心级线程、混合级线程。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值