进程的引入
程序的顺序执行
顺序执行的特征(需要满足要求):
-
顺序性
对于单个的作业,三个操作,必须按照 I C P 的顺序进行执行。
对于多个的作业,必须是第一个作业全部执行完成后才能进行第二个作业。 -
封闭性
由于在一段时间内只允许一个作业运行,所有系统的资源只归这一个资源独占,也叫资源的独占性。 -
可再现性
由于资源的独占,使我们的程序具有可再现性的特征。只要程序的初始运行环境不变,无论程序是一口气执行还是运行一会暂停一会再运行得到的结果是一样的。也就是程序的运行结果与其推进速度无关。
当多个作业同时执行时,程序的顺序执行方式就遭到了破坏。
-
程序的并发执行
对n个用户作业的处理 ——
作业1: I1 C1 P1
作业2: I2 C2 P2
…
作业n: In Cn Pn
虽然在同一个作业中,我们需要按照 I C P 的顺序进行顺序执行,但是作业1与作业2之间并没有顺序上的规定的。所以我们可以按照如下的顺序进行执行: -
特征
- 间断(异步)性:运行-暂停-运行
- 失去封闭性:程序与程序的运行不再一一对应。
- 不可再现性:进程的运行结果与其推进速度有关。也就是与时间有关的错误。
- 与时间有关的错误
对于如下的程序,如果程序之间的执行顺序不同,则其程序的执行结果不 同,与各个并发程序的相对执行速度有关。
程序并发执行时,若共享了公共变量,其执行结果与各并发程序的相对速度有关,给定相同的初始条件,若不加以控制,也可能得到不同的结果,此为与时间有关的错误。
进程的概念出现
-
进程的定义及特征
简单定义:一个程序的一次运行过程。 -
特征:
-
动态性:进程最基本的特征
进程具有生命周期,创建进程到结束进程。
进程具有不同的状态:运行状态、等待状态… -
结构特征: = 程序 + 数据 + PCB
- 独立性:是系统进行资源分配和调度的独立单位,是能独立运行的基本单位。
- 并发性:程序在建立进程后并发运行。进程的运行状态是可以暂停的。
- 异步性:进程以不可预知的速度向前推进。
- 进程的更多细节
进程的控制
- 进程的创建
- 进程撤销
- 进程阻塞
- 进程唤醒
进程控制原语
进程之间的制约关系
临界资源
- 定义:一次仅允许一个进程使用的资源称为临界资源。
- 硬件:如输入机、打印机、磁带机等
- 软件:如公用变量、数据、表格、队列等
- 互斥:对某个系统资源,一个进程正在使用它,另外一个想用它的进程就必须等待,而不能同时使用 ;
进程同步概念
- 概念:并发进程在一些关键点上可能需要互相等待或互通消息,这种相互制约的等待或互通消息称为进程同步。
同步机制应遵循的准则 - 空闲让进:其他进程均不处于临界区;
- 忙则等待:已有进程处于其临界区;
- 有限等待:等待进入临界区的进程不能"死等";
- 让权等待:不能进入临界区的进程,应释放CPU(如转换到等待状态)
经典进程同步问题
生产者消费者问题(pV操作)共享缓冲区。
** 哲学家进餐问题**
读者优先的读者-写者问题
写者优先的读者-写者问题
进程同步
进程通信
- 这个应该不是期末考试的重点,暂时不做笔记
进程调度(核心)
不同种类的操作系统所需要的使用要求不同
- 批处理系统:无须及时的用户响应,采用不可抢占的调度方式,或时间间隔很长的可抢占调度方式,从而允许进程能长时间运行,减少进程的切换次数,提高系统的性能;
- 交互式系统:及时的用户响应非常重要,必须采用可抢占的调度方式。以防单个进程占用太多CPU时间,影响到其他进程的运行。(基于时间片的抢占方式)
- 实时系统:对响应时间要求苛刻,每个进程运行时间很短,可采用可抢占的调度方式。(基于优先权的可抢占方式)
调度的原因
(1)分时系统中时间片用完;
(2)当前进程本身状态发生转换:进程终止;进程等待
(3)进程从系统调用中返回用户态;
(4)系统从中断处理中返回用户态;
(5)就绪队列中出现比当前进程优先级更高的进程;
(6)在一次出错陷入之后,该陷入使当前进程在出错处理时被挂起时;
调度方式
1、非抢占方式:一旦进程占用CPU就一直运行,直到终止或等待。
2、抢占方式:系统强行剥夺已分配给现运行进程的CPU,而重新分配给其他进程运行。
- 抢占原则:
- 时间片原则;
- 优先权原则;
- 短作业(进程)优先原则。
- 抢占方式的实现机制:
- 内核完全不可抢先;如winNT,传统unix
- 内核部分可抢先:如unix SVR4,linux;
- 内核完全可抢先:如solaris、win2000。(内核完全可抢先,只是指的不可抢先的内核代码的数目非常的少,并不是全部都可以抢先。)
调度依据
(1)周转时间:
- 从作业进入系统起,直到作业全部运行完成出系统为止,中间所经历的时间。
平均周转时间:
(2)带权周转时间
- 作业的周转时间T与系统为它提供服务的时间TS之比,即W=T/TS,称为带权周转时间。
平均带权周转时间:
具体算法
先来先服务调度算法(FCFS)
- 优点:实现简单;
- 缺点:对长作业有利,对短作业不利;平均周转时间可能较长
短作业(进程)优先调度算法
算法分类:
- 非抢占式调度:
- 抢占式调度算法:
- 按估计运行时间抢占
- 按剩余运行时间抢占
(1)非抢占式调度:
(2)抢占式调度:按剩余时间抢占
- 优点:使作业的平均周转时间最短;
- 缺点:对长作业不利(饥饿状态);对紧迫作业不利 ;估计运行时间不准,难以真正做到短作业(进程)优先。
高优先权优先调度算法
-
优先权进程调度算法的类型:
- 非强占式优先权调度算法
- 强占式优先权调度算法
- 优先权的设计方法:
-
静态优先权:进程创建时确定其优先权,整个生命周期中不改变。这种方式创建简单,但是不能动态的反映进程特性的变化。
确定依据:
进程类型;
进程对资源的需求;
进程的估计运行时间 -
动态优先权:进程创建时赋一个优先权初值,运行期间动态调整其权值。具有可防止一个进程长期垄断或长期等待 CPU 的优点。
动态优先权改变原则:
进程使用CPU超过一定数值时,降低优先级
进程I/O操作后,增加优先级
进程等待时间超过一定数值时,提高优先级
循环轮转调度算法:时间片轮转调度算法
多级反馈队列调度算法
线程的提出
-
线程的概念
线程定义: -
线程是进程内一个相对独立的可调度的执行单元。
-
线程属性:
-
轻型实体:TCB+堆栈+一组寄存器
- 独立调度和分派的基本单位;
- 可并发执行;
- 共享进程资源;
- 线程有生命周期,在生命期中有状态变化。
线程是最小的调度单元
更多线程细节
死锁的基本概念处理死锁的基本方法
理死锁的基本方法
-
预防
-
静态分配资源:
在作业调度时为选中的作业分配它所需要的所有资源,当 资源一旦分配给该作业后,在其整个运行期间这些资源为它独占。
破坏了产生死锁所需要的请求与保持条件,所以系统不会进入死锁状态
-
缺点:
资源利用率低;
进程的运行可能被推迟;(一旦其中的某个条件不能满足,则整 个作业不能运行)
-
-
避免
-
采用有序资源分配策略:
将所有的系统资源按类型进行线性排队,并赋予不同的序号;
所有进程对资源的请求应严格按资源序号递增顺序提出。
破坏了产生死锁的四个必要条件中的循环等待条件。不会进入 死锁。
-
-
优点:
较之前面两种方法资源利用率高,系统吞吐量大。
-
缺点:
为系统中各种资源类型分配序号时,必须相对稳定, 从而限制了新设备的增加;
会出现作业使用的资源顺序与系统规定的顺序不同的情况,造成资源的浪费。 -
银行家算法(安全序列)
-
死锁的检测与解除死锁
-
忽略死锁(当死锁出现的概率足够小时,可以直接忽略掉)
死锁的更多细节