进程是资源分配与调度的基本单位。
多道程序环境下,处理机管理可归结为对进程的管理,所以,处理机管理主要研究进程的调度管理。
主要任务就是对处理机进行分配,并对其运行进行有效的管理和控制。
进程的基本概念
- 程序的顺序执行
通常一个程序由若干个程序段组成,每一个程序段完成特定的功能,他们在执行时,都需要按照某种先后次序 顺序执行,仅当前一操作(程序段)执行完成后,才能执行后继操作。
顺序执行时的特征:
①顺序性:处理机严格的按照所规定的顺序执行,每一操作必须在下一个操作开始之前结束
②封闭性:程序运行时独占资源,程序一但开始执行,其计算结果就取决于程序本身,不受外界因素影响
③可再现性:程序重复执行多次时,必将得到相同的结果。
- 前趋图
前趋图中,一定不能出现循环!在系统中存在循环可能会出现死锁。
例:1、画出下面四条语句的前趋图:
S1:a=x+y; S2:b=z+1; S3:c=a – b;S4:w=c+1;
- 程序的并发执行
其中互不依赖部分可以并发执行,比如I2和C1之间并不存在前去关系,他们可以并发执行。
并发和并行
并发是同一时段
并行是同一时刻
程序并发执行的特征:
①间断性:由于它们共享资源,以及完成同一项任务相互合作,致使这些程序之间形成了相互制约的关系。从而导致程序 执行——暂停——执行
②失去封闭性:因为资源共享,比如处理机分配给某个进程,其他程序就必须等
③不可再现性:由于失去了封闭性,也导致失去可再现性
进程描述
进程=程序段+数据段+进程控制块(PCB)
- 进程的定义
进程是程序的一次执行
进程是一个程序及其数据在处理机上顺序执行所发生的活动
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
·····> 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。 - 进程的特征
①动态性:由创建产生,调度执行,撤销消亡
②并发性:多个进程实体同存于内存,能在一段时间内同时运行
③独立性:进程实体能独立运行、独立获得资源、独立接受调度
④异步性:按各自独立、不可预知的速度向前推进 - 进程控制块(PCB)
- PCB的特点:
PCB是操作系统中最重要的数据结构,是进程存在的唯一标志;
PCB的作用是使一个在多道环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程;
PCB常驻内存,可以被操作系统中的多个模块读或修改;
PCB是进程实体的一部分,同进程一样具有一定的生命期,且与进程保持一致。 - PCB的作用:
PCB是独立运行基本单位的标志
PCB能实现间断性运行方式
PCB提供进程管理所需要的信息
PCB提供进程调度所需要的信息
PCB实现与其他进程的同步与通信
- PCB的特点:
- 进程的状态
就绪状态:一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。
执行状态: 当一个进程在处理机上运行时,则称该进程处于运行状态。
阻塞状态:一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行,这时即使把处理机分配给它也无法运行,故称该进程处于阻塞状态。
创建状态 :进程刚创建,但还不能运行,OS还没有把它加到可执行进程组中,通常是还没有加载到主存中的新进程。
终止状态:OS从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消。进程不在适合执行,但与作业相关的表和其它信息临时被OS保留起来,为其他程序提供所需信息。 - 进程的三态五态变化
进程控制
为了确保系统的安全性,常将处理机的执行状态分为系统态(管态)和用户态(目态)。
进程控制由操作系统内核实现,运行于系统态。
原语(Primitive)是由若干条指令组成的,用于完成特定功能的一个特殊过程。它与一般过程的区别在于:它们是原子操作(Action Operation)。
- 进程的创建
(1)申请空白PCB。
(2) 为新进程分配资源。
(3) 初始化进程控制块。
(4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程, 便将新进程插入就绪队列。
引起创建进程的事件:
①用户登录
②作业调度
③提供服务
④应用请求
①②③由系统内核创建新进程 ④由应用程序创建新进程
- 进程的终止
进程的终止过程:
(1) 从PCB集合中检索出该进程的PCB,读出相应状态;
(2) 终止该进程的执行,更改调度标志;
(3) 终止其所有子孙进程;
(4) 将其全部资源,归还给其父进程或系统;
(5) 将该进程(即它的PCB)从所在队列(或链表)中移出。
引起进程终止的事件:
(1)正常结束
(2)外界干预 [操作员或系统干预、父进程请求、父进程终止]
(3)异常结束 [越界错误、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O故障 ]
-
进程的阻塞与唤醒
进程阻塞的过程:
(1)进程通过调用阻塞原语block把自己阻塞。
进程的阻塞是进程自身的一种主动行为。
(2)把PCB中的现行状态改为阻塞;
(3)将PCB插入阻塞队列;
(4)将处理机分配给另一就绪进程。
进程唤醒的过程:
当被阻塞进程所期待的事件出现时,则由有关进程调用唤醒原语wakeup,将等待该事件的进程唤醒。
唤醒原语执行的过程:
(1)把该进程从阻塞队列中移出;
(2)将其PCB中的现行状态改为就绪;
(3)将该进程的PCB插入就绪队列引起进程阻塞和唤醒的事件:
①请求系统服务
②启动某种操作
③新数据尚未到达
④无新工作可做 -
进程的挂起与激活
进程的挂起:
当出现了引起进程挂起的事件时,系统利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起。
挂起原语的执行过程:
活动就绪——> 静止就绪
活动阻塞——> 静止阻塞
执行状态——> 重新调度(静止就绪)
进程的激活过程:
系统将利用激活原语active将指定进程激活。
激活原语先将进程从外存调入内存,检查该进程的现行状态:
静止就绪 ——> 活动就绪
静止阻塞 ——> 活动阻塞
进程同步
进程同步是指对多个相关进程在执行次序上的协调。这些进程相互合作,在一些关键点上可能需要互相等待或互通消息。
- 进程同步的主要任务:
使并发执行的诸进程间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。 - 一些基本概念
临界资源: 一段时间内只允许一个进程访问的资源;诸进程之间采取互斥方式实现对这种资源的共享。(比如打印机,一段时间内只能一个人用,我用的时候你不能用)
临界区:各进程中访问临界资源的程序代码称为临界区。(每次只准许一个进程进入临界区,进入后不允许其他进程进入。这就保证了诸进程对临界资源的互斥访问)
同步机制应遵循的原则:
(1)空闲让进:没有进程在临界区时表明临界资源空闲,可以让一个进程进入来使用临界资源。
(2)忙则等待:有进程在临界去,那别的要进去的进程就必须等待。
(3)有限等待:要保证有限的时间内让进程进去,避免“死等”。
(4)让权等待:让进程不能进入临界区时,应立即释放处理机,避免“忙等”。 - 信号量机制
整型信号量:
把整型信号量定义为一个整型量
由P、V操作来访问
记录型信号量:
采取让权等待,避免忙等
需要一个用于代表资源数目的整型变量value,一个用于链接所有阻塞进程的进程链表queue。
AND型信号量:
基本思想:将进程在整个运行过程中需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放。只要尚有一个资源未分配给进程,其它所有可能为之分配的资源,也不分配给它。
信号量集:
在AND型信号量的基础上进行扩充
同时需要多种资源、每种占用的数目不同、且可分配的资源还存在一个临界值时的信号量处理。(一次申请多个)
经典进程同步问题
- 生产者-消费者问题
- 哲学家就餐问题:
- 读者-写者问题:
进程通信
- 基本概念
进程通信:指进程之间交换信息。
低级通信:与系统内核或低层控制密切联系的信息交换。
高级通信:指用户可直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。 - 进程通信的类型
(1)共享存储器系统:
基于共享数据结构的通信方式
基于共享存储区的通信方式
(2)消息传递系统 :
直接通信方式
间接通信方式
(3)管道通信
管道机制必须提供以下三方面的协调能力:
① 互斥
② 同步
③ 确定对方是否存在
线程
———调度和分派的基本单位
(进程——作为资源拥有的基本单位。)
引入线程是为了减少程序再并发执行时所付出的时空开销,使OS具有更好的并发性
- 特点
①线程是进程的一个实体,是比进程更小的能被系统独立调度和分派的基本单位。
②线程基本上不拥有系统资源,但可以与同一进程的其它线程共享该进程的全部资源。
③ 同一进程的多个线程间可并发执行,它们之间可存在创建与被创建关系。
④线程同进程一样,有就绪、阻塞、执行三种基本状态。