1、第2章 进程管理,2.1 进程管理的概述,一、程序的顺序执行,特征,(1)程序执行的顺序性 (2)程序执行的封闭性 (3)程序执行结果的确定性 (4)程序执行结果的可再现性,第2章 进程管理,2.1 进程管理的概述,二、程序的并发执行,(1)程序执行的间断性 (2)程序执行失去封闭性 (3)程序和计算不再一一对应 (4)程序执行结果的不可再现性,静态的,动态的,特征,三、多道程序设计,多道程序设计:允许多个程序同时进入一个计算机系统的内存并运行。,第2章 进程管理,2.1 进程管理的概述,三、多道程序设计,(1)存储保护与程序浮动 (2)处理机的管理与调度 (3)系统资源的管理与调度,要解决的
2、问题,第2章 进程管理,2.1 进程管理的概述,第2章 进程管理,是程序在一个数据集合上运行的过程, 它是系统进行资源分配和调度的独立单位。,四、进程,2.1 进程管理的概述,1、含义,2、进程与程序的区别和联系,动态概念 资源分配和调度的独立单位 暂时的 具有结构的,静态概念 不是独立单位 可以作为资料长期保存的 没有结构即进程控制块,第2章 进程管理,四、进程,2.1 进程管理的概述,3、进程的特征,动态性 并发性 独立性 制约性 结构性进程=程序段+数据段+进程控制块(PCB),第2章 进程管理,四、进程,2.1 进程管理的概述,1、对并发性的再说明,第2章 进程管理,五、用进程概念说明
3、操作系统的并发性和不确定性,2.1 进程管理的概述,并发处理的意思是:如果我们把系统作为一个整体,对其拍张快照,那么在这张照片上可以找到许多进程,各自的状态都位于它们的起点与终点之间。,1、对不确定性的再说明,第2章 进程管理,五、用进程概念说明操作系统的并发性和不确定性,2.1 进程管理的概述,如果我们把进程看成是动作序列,而且这些动作在 步与步之间是可以中断的,那么由于中断可以以不可 预测的次序发生,因而这些序列也以不可预测的次序前 进。这就反映为不确定性。,第2章 进程管理,2.1 进程管理的概念,六、进程的基本状态及其转换,1、进程的三种基本状态,就绪状态 执行状态(运行) 阻塞状态(
4、等待、睡眠),2、进程状态的转换,第2章 进程管理,2.1 进程管理的概念,六、进程的基本状态及其转换,说明,第2章 进程管理,2.1 进程管理的概念,七、进程的组成,进程=程序段+数据段+进程控制块(PCB),1、进程控制块(PCB)的作用,是一个进程存在的唯一标志 是一种描述和控制进程状态的数据结构 是进程动态特性的集中反映,作用,是描述和控制进程状态以区别于其他进程。,第2章 进程管理,2.1 进程管理的概念,七、进程的组成,2、进程控制块(PCB)中的信息(内容),进程标识符信息 处理机状态信息 进程调度信息 进程控制信息 其他信息,第2章 进程管理,2.1 进程管理的概念,七、进程的
5、组成,3、进程控制块的组织方式,链接方式 索引方式,线性表方式,第2章 进程管理,2.1 进程管理的概念,七、进程的组成,第2章 进程管理,2.1 进程管理的概念,八、UNIX系统的进程映像,1、进程映像,第2章 进程管理,2.1 进程管理的概念,八、UNIX系统的进程映像,2、进程状态,用户态运行:执行用户态程序(在CPU上) 核心态运行:在CPU上执行操作系统程序,在内存就绪:具备运行条件,只等取得CPU 在外存就绪:就绪进程被对换到外存上,在内存睡眠:在内存中等待某一事件发生 在外存睡眠:睡眠进程被对换到外存上,在内存暂停:因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令 在外
6、存暂停:处于跟踪暂停状态的进程被对换到外存上,创建态:新进程被创建,但尚未完毕的中间状态 终止态:进程终止自己,第2章 进程管理,2.1 进程管理的概念,八、UNIX系统的进程映像,2、进程状态,画图说明,第2章 进程管理,2.2 有关进程的操作,一、进程的创建,(1)进程的树型体系,进程图见黑板!,解释,(2)引起创建进程的事件,用户登录 作业调度 提供服务 应用请求,第2章 进程管理,2.2 有关进程的操作,一、进程的创建,(3)创建进程的基本任务和方式,第2章 进程管理,2.2 有关进程的操作,一、进程的创建,基本任务:为新进程构造一个映像,并为它准备第一次被调度执行的现场信息。基本方式
7、:除了与进程的状态、标识及与时间有关的少数几项外,子进程复制或共享父进程的图像。,(4)创建进程的过程,申请空白PCB 为新进程分配资源 初始化PCB 将新进程插入就绪队列,第2章 进程管理,2.2 有关进程的操作,一、进程的创建,(5)创建进程的算法(以UNIX为例),见P37,第2章 进程管理,2.2 有关进程的操作,一、进程的创建,二、进程的终止和父/子进程的同步,(1)引起进程终止的事件,正常结束 异常结束 外界干预,第2章 进程管理,2.2 有关进程的操作,二、进程的终止和父/子进程的同步,(2)进程自我终止,第2章 进程管理,2.2 有关进程的操作,进程自我终止时,除了暂保留pro
8、c和user结构外,放弃它占用的一切资源(包括内存区)。,若终止进程有子进程,则应将它所有子进程的父进程指定为1#进程。,最后向父进程发送子进程终止信号,等待父进程做善后处理工作,然后进行进程调度。,二、进程的终止和父/子进程的同步,(3)父进程等待子进程终止,第2章 进程管理,2.2 有关进程的操作,若有终止子进程,则对其作善后处理后返回。若没有子进程则返回出错信息。若有子进程但无终止的子进程则进行睡眠等待。,第2章 进程管理,第2章 进程管理,2.3 进程间的相互作用和通信,一、进程间的联系,(1)资源共享关系 (2)相互合作关系,1、同步,生活当中司机与售票员的关系,同步指的是有协作关系
9、的进程之间要不断地调整它们的相对速度。,举例:,计算机中进程间共享缓冲区的关系,?,一、进程间的联系,第2章 进程管理,2.3 进程间的相互作用和通信,2、互斥,生活当中进出教室与内部空间的共享,互斥指多个进程之间要互斥地共享某一资源。,举例:,计算机中读写磁盘与内部空间的共享,?,一、进程间的联系,第2章 进程管理,2.3 进程间的相互作用和通信,3、临界资源与临界区,(1)临界资源:是一次只允许一个进程使用的资源。,(3)同类临界区:针对同一临界资源进行操作的程序段。,(2)临界区:是每个进程中访问临界资源的那一段程序。,一、进程间的联系,第2章 进程管理,2.3 进程间的相互作用和通信,
10、3、临界资源与临界区,(4)系统对同类临界区的调度原则:,一、进程间的联系,第2章 进程管理,2.3 进程间的相互作用和通信,用开关中断实施锁操作,硬件中断开关作为临界区的锁,关锁关中断,开锁开中断,执行过程:关中断执行临界区开中断,在UNIX系统中 用到此方法!,二、锁操作法,第2章 进程管理,2.3 进程间的相互作用和通信,用开关中断实施锁操作,局限性?,它不能用于多处理机系统。,它在临界区中,不能有进入封锁状态的因素。,二、锁操作法,第2章 进程管理,2.3 进程间的相互作用和通信,三、信号量与P、V操作,1、信号量,定义为: Struct Semaphore int Value;(值)
11、int *Ptr-of-Semque; (指向队列的指针) S;,物理意义?,解释,第2章 进程管理,2.3 进程间的相互作用和通信,三、信号量与P、V操作,1、信号量,信号量的物理意义?,第2章 进程管理,2.3 进程间的相互作用和通信,2、P、V操作,三、信号量与P、V操作,原语,整体,整体,3、用P、V操作实现互斥和同步问题的模型,同步模型: 考虑两个进程P1、P2;P1带有语句S1,P2带有语句S2,要求S2在S1完成之后才能执行。用PV操作实现之。,三、信号量与P、V操作,P1进程 P2进程 S1; P(pro); V(pro); S2;,同步信号量pro 的初值为0!,3、用P、V
12、操作实现互斥和同步问题的模型,同步模型: 供者和用者共用一个缓冲区,三、信号量与P、V操作,缓冲区,供者进程,用者进程,分析!,3、用P、V操作实现互斥和同步问题的模型,互斥模型:多个进程互斥地进入各自的同类临界区 。,三、信号量与P、V操作,Pa进程 Pb进程 P(mutex) P(mutex) 临界区 临界区 V(mutex) V(mutex) ,互斥信号量 Mutex的初值 为1,3、用P、V操作实现互斥和同步问题的模型,一般地说, 用P、V操作实现互斥时,信号量初值往往是1。 用P、V操作实现简单同步时,信号量初值可为0。 用P、V操作实现计数同步时,信号量初值通常是大于0的整数。,三
13、、信号量与P、V操作,结论,问题:什么是简单同步?什么是计数同步?,4、举例说明利用P、V操作互斥同步问题,例2.1 生产者与消费者的问题,三、信号量与P、V操作,问题是这样叙述的:有若干生产者进程P1、P2、Pn和若干消费者进程C1、C2、Cm;它们通过一个有界缓冲池(即由K个缓冲区组成)联系起来,如下图所示:,4、举例说明利用P、V操作互斥同步问题,例2.1 生产者与消费者的问题,三、信号量与P、V操作,生产者进程 消费者进程 L1:P(empty); L2:P(full);P(mutex); P(mutex);将产品送往缓冲池 从缓冲池取出产品V(mutex); V(mutex);V(f
14、ull); V(empty);goto L1; goto L2 ;,?,4、举例说明利用P、V操作互斥同步问题,例2.1 生产者与消费者的问题,三、信号量与P、V操作,生产者进程 消费者进程 L1:P(mutex); L2:P(full);P(empty); P(mutex);将产品送往缓冲池 从缓冲池取出产品V(mutex); V(mutex);V(full); V(empty);goto L1; goto L2 ;,4、举例说明利用P、V操作互斥同步问题,例2.1 生产者与消费者的问题,三、信号量与P、V操作,生产者进程 消费者进程 L1:P(empty); L2:P(mutex);P(m
15、utex); P(full);将产品送往缓冲池 从缓冲池取出产品V(mutex); V(mutex);V(full); V(empty);goto L1; goto L2 ;,4、举例说明利用P、V操作互斥同步问题,例2.2 读者与写者的问题,三、信号量与P、V操作,问题是这样叙述的:,分析!,读者进程 写者进程 P(mutex); P(wrt);n=n+1; 进行写if(n= =1) P(wrt); V(wrt);V(mutex); 进行读P(mutex);n=n-1;if(n= =0) V(wrt);V(mutex);,信号量初值 都为1,第2章 进程管理,2.3 进程间的相互作用和通信,
16、四、进程通信的类型,由系统管理一组缓冲存储区,其中每个缓冲区可以存放一个消息。当一个进程要发送消息时,先要向系统申请一缓冲区,然后把信息写进去,接着再把该缓冲区送到接收进程的一个消息队列中。接收进程则在适当时机从消息队列中取用消息,并释放有关缓冲区。,1、消息缓冲通讯,第2章 进程管理,2.3 进程间的相互作用和通信,四、进程通信的类型,name:发送消息的进程名或标识数。 size:消息长度。 text:消息正文。 next-ptr:下一个消息缓冲区指针。,1、消息缓冲通讯,缓冲区的内容,第2章 进程管理,2.3 进程间的相互作用和通信,四、进程通信的类型,问题:消息缓冲队列的队首指针在哪?
17、,进程PCB中应增加如下信息项: hd-ptr:是一个指针,指向进程接收到的消息队列的队首。 mutex:消息队列操作互斥信号量。 ssm:同步信号量,用于接收消息进与发送消息进程实施同步。其值表示了接收进程消息队列中的消息数。,1、消息缓冲通讯,第2章 进程管理,2.3 进程间的相互作用和通信,四、进程通信的类型,send的流程图:,receive的流程图:,2、信箱通信,信箱通信是消息缓冲通信的改进。,信箱是用以存放信件的,而信件是一个进程 发给另一进程的一组消息。,第2章 进程管理,2.3 进程间的相互作用和通信,四、进程通信的类型,send(B,M)原语的实现过程是:,查指定信箱B,若
18、信箱B未满,把信件M送入信箱B中,如果有进程在等B信箱中的信件,则释放“等信件”的进程;若信箱B已满,把向信箱B发送信件的进程置成“等信箱”的状态。,2、信箱通信,第2章 进程管理,2.3 进程间的相互作用和通信,四、进程通信的类型,receive(B,X)原语的实现过程是:,查指定信箱B,若信箱B中有信件,取出一封信件放在指定的地址X中,如果有进程在等待把信件存入信箱B中,则释放“等信箱”的进程;若信箱B中无信件,把要求从信箱B中取信件的进程置成“等信件”状态。 ,2、信箱通信,第2章 进程管理,2.3 进程间的相互作用和通信,四、进程通信的类型,存在的问题:,信件的格式如何? 信件的大小如
19、何确定?是可变的吗? 箱体的大小如何确定? 如何保证两个进程间按正常次序发信和收信? 信箱可共享吗?,2、信箱通信,第2章 进程管理,2.3 进程间的相互作用和通信,四、进程通信的类型,第2章 进程管理,中断-中止正在执行的程序,转而处理一些更紧急的事件(即执行另一段程序)的现象。,2.4 中断技术,1、概念,UNIX中的分法!,1、概念,第2章 进程管理,2.4 中断技术,2、中断系统,提供的几项基本功能:,(1)识别中断源的方法 (2)查询中断状态的方法 (3)中断现场保护的能力 (4)中断处理程序寻址能力 (5)中断处理程序入口地址映射表(中断向量表),第2章 进程管理,2.4 中断技术
20、,3、中断逻辑和中断寄存器,4、多级中断和中断屏蔽,系统按中断的重要性和处理的紧迫程度将中断源分成若干级。,第2章 进程管理,2.4 中断技术,4、多级中断和中断屏蔽,是指在提出中断请求之后,CPU不予响应的状态。,是指在可引起中断的事件发生时系统不接受其中断信号。,第2章 进程管理,2.4 中断技术,4、多级中断和中断屏蔽,延迟或禁止对某些中断的响应。 协调中断响应与中断处理的关系。 防止同类中断的相互干扰。,第2章 进程管理,2.4 中断技术,5、中断响应, 处理机何时响应中断, 如何知道提出中断请求的设备或中断源,考虑的问题,第2章 进程管理,2.4 中断技术,保存现场 分析处理 退出中
21、断和恢复现场,解释!,6、中断处理,第2章 进程管理,2.4 中断技术,7、中断在操作系统中的地位,是中央处理机和外部设备并行工作的基础之一 ; 是多道程序并发执行的推动力; 是整个操作系统的推动力。,第2章 进程管理,2.4 中断技术,8、UNIX系统对中断和陷入的处理,第2章 进程管理,2.4 中断技术,(1)中断分类,在UNIX系统中所有中断可分为两类:一类称为中断,是指一切外设的I/O中断;另一类称为陷入,是指使用指令的陷入(自陷),和由于软、硬件故障或错误造成的陷入(例外或捕俘)。,8、UNIX系统对中断和陷入的处理,第2章 进程管理,2.4 中断技术,(2)处理机状态字PS,PS包
22、含了处理机的各种状态信息,如处理机优先级,现在以及先前的处理机运行状态,说明上一条指令执行结果的条件码等。,UNIX系统规定,若处理机优先级高于或等于中断优先级,则屏蔽此中断;若CPU的优先级低于中断的优先级,则中止当前程序的执行,接收该中断,并提升处理机的执行优先级(一般与中断优先级同)。,8、UNIX系统对中断和陷入的处理,第2章 进程管理,2.4 中断技术,(3)中断向量,一般把所有中断的中断向量组成一中断向量表。当系统接到中断后,可以从产生中断的设备中得到一个中断号即在中断向量表中的位移。由此可得到中断向量(即入口地址和CPU状态字)。,8、UNIX系统对中断和陷入的处理,第2章 进程
23、管理,2.4 中断技术,(4)中断处理过程,输入:无 输出:无 保存当前断点现场; 确定中断源; 调用中断处理程序; 恢复现场和退出中断; ,8、UNIX系统对中断和陷入的处理,第2章 进程管理,2.4 中断技术,(5)系统调用处理, 系统调用入口表,其形式为: Struct int count; /*参数个数*/ int (*call)(); /*是函数指针*/ sysent64;,8、UNIX系统对中断和陷入的处理,第2章 进程管理,2.4 中断技术,(5)系统调用处理, 算法,输入:系统调用号 输出:系统调用的结果 查入口表;传递参数;保存当前映像,以便失败时返回;调用程序进行具体处理;if(在执行期间出错) 在寄存器中置出错码; else 在寄存器中置返回值; if (检测到信号)对信号作相应处理;,第2章 进程管理,习题讲解,P62第12题,12假如有一个具有n个缓冲区的环形缓冲器,A进程顺序地把信息写入缓冲区,B进程依次地从缓冲区读出信息,回答下列两问: (1)试说明A、B进程之间的相互制约关系; (2)试用类C语言写出A、B进程之间的同步算法。,第2章 进程管理,习题讲解,P62第13题,13设有6个程序prog1、prog2、prog3、prog4、prog5、prog6,它们在并发系统内执行时有如下图的相互关系: 试用P、V操作实现这些程序间的同步。,