资源预览内容
第1页 / 共81页
第2页 / 共81页
第3页 / 共81页
第4页 / 共81页
第5页 / 共81页
第6页 / 共81页
第7页 / 共81页
第8页 / 共81页
第9页 / 共81页
第10页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 进程管理,本章学习目标 本章主要介绍进程的概念、状态、构成以及Linux进程的相关知识。 掌握进程的概念 掌握进程的描述、状态及转换 理解进程的特征 了解Linux进程的描述及进程通信 掌握进程的同步与互斥,并能灵活运用 理解线程的概念及特征,第2章 进程管理,1,教学内容 2.1 进程的基本概念 2.2 进程的描述 2.3 进程控制 2.4 进程的同步与互斥 2.5 进程同步问题举例 2.6 进程通信 2.7 线程本章小结,2,2.1 进程的基本概念,2.1.1 程序的顺序执行及其特征 1程序的顺序执行程序是人们要计算机完成的一些指令序列,是一个按严格次序、顺序执行的操作序列,是一个静态的概念。我们把一个具有独立功能的程序独占处理机,直到最后结束的过程称为程序的顺序执行。 2程序顺序执行时的特征 (1)顺序性。 (2)封闭性。 (3)可再现性。,第2章 进程管理,3,2.1.2 程序的并发执行及其特征,1并发执行的概念所谓程序的并发性,是指多道程序在同一时间间隔内同时发生。程序的并发执行可总结为:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的一种执行方式。,第2章 进程管理,4,2程序并发执行时的特征,(1)间断性程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使这些并发执行的程序之间,形成了相互制约的关系。相互制约将导致并发程序具有“执行暂停执行”这种间断性的活动规律。 (2)失去封闭性某程序在执行时,必然会受到其它程序的影响。 (3)不可再现性在并发环境下,同一个程序执行多次,执行的过程可能不同。用程序作为描述其执行过程以及共享资源的基本单位是不合适的。因此引入了进程作为描述程序的执行过程、共享资源的基本单位。,第2章 进程管理,5,2.1.3 进程的定义与特征,1进程的定义 人们对进程下过许多定义。现列举其中的几种: (1)进程是程序的一次执行。 (2)进程是可以和别的进程并发执行的计算。 (3)进程就是一个程序在给定活动空间和初始条件下,在一个处理机上的执行过程。 (4)进程是程序在一个数据集合上的运行过程,它是系统进行资源分配和调度的一个独立单位 (5)进程是动态的,有生命周期的活动。内核可以创建一个进程,最终将由内核终止该进程使其消亡。,第2章 进程管理,6,进程和程序之间的关系,进程和程序是两个完全不同的概念,但又有密切的联系。它们之间的主要区别是: (1)程序是静态的概念,;而进程则是程序的一次执行过程。它是动态的概念。 (2)进程是一个能独立运行的单位,能与其它进程并发执行;而程序是不能作为一个独立运行的单位而并发执行的。 (3)程序和进程无一一对应的关系。 (4)各个进程在并发执行过程中会产生相互制约关系,而程序本身是静态的,不存在这种异步特征。,第2章 进程管理,7,2进程的特征,从进程与程序的区别可以看出,进程具有如下特征: (1)动态性动态性是进程最基本的特性。进程由创建而产生,由调度而执行,因得不到资源而暂停执行,以及因撤消而消亡。 (2)并发性这是指多个进程实体,同存于内存中,能在一段时间段内同时执行。并发性是进程的重要特征,同时也是操作系统的重要特征。提高并发性,可以提高系统的效率。 (3)独立性进程是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。 (4)异步性这是指进程按各自独立的、不可预知的速度向前推进;或者说,进程按异步方式运行。 (5)结构特征从结构上看,进程实体是由程序段、数据段及进程控制块三部分组成,也称这三部分为进程映像。,第2章 进程管理,8,2.1.4 进程的基本状态及转换,1进程的三个基本状态进程通常至少有三种基本状态: (1)就绪状态(ready)进程运行所需的外部条件满足,但因为其它进程已占用CPU,所以暂时不能运行。 (2)执行状态(running)外部条件满足,进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态。 (3)阻塞状态(blocked)进程因等待某种事件发生,而暂时不能运行的状态,称为阻塞状态,也称为等待状态。系统中处于这种状态的进程可能有多个,通常将它们排成一个队列,也有的系统则根据阻塞原因的不同将这些进程排成多个队列。,第2章 进程管理,9,2进程状态的转换,对于一个系统中处于就绪状态的进程,在调度程序为之分配了处理机之后,该进程便可执行,相应地,它由就绪态转变为执行状态。正在执行的进程也称为当前进程,如果因分配给它的时间片已用完而被暂停执行时,该进程便由执行状态又回到就绪状态;一个处在执行状态的进程,如果因发生某事件而使进程的执行受阻,使之无法继续执行,该进程将由执行状态转变为阻塞状态。一个处于阻塞状态的进程,当它所需的外部事件满足,它应由阻塞状态变为就绪状态。,第2章 进程管理,10,第2章 进程管理,11,3引入挂起状态时的进程状态,所谓挂起状态,实际上就是一种静止的状态。一个进程被挂起后,不管它是否在就绪状态,系统都不分配给它处理机。在引入挂起状态后,进程之间的状态转换除了四种基本状态转换以外,又增加了以下几种: (1)活动就绪静止就绪。 (2)活动阻塞静止阻塞。 (3)静止就绪活动就绪。 (4)静止阻塞活动阻塞。,第2章 进程管理,12,第2章 进程管理,13,2.1.5 Linux进程的状态,Linux系统的一个任务总体上有以下几种状态: (1)运行状态(running) 该状态对应state取值为TASK_RUNNING。 (2)等待状态(waiting) (3)中断处理状态(interrupt routine) 此状态对应state取值TASK_RUNNING。 (4)系统调用期间(system call) 此状态对应state取值TASK_RUNNING。 (5)从系统调用返回(return from system call),第2章 进程管理,14,(6)就绪态(ready),处于此状态的进程正在竞争处理机,但此刻处理机正在为另一个进程服务。此状态对应state取值TASK_RUNNING。Linux系统内核在进程控制块中用state成员描述进程当前的状态,并明确定义了5种进程状态。它们分别是: (1)TASK-RUNNING状态,Linux系统中的运行状态实际包含了上述基本状态中的执行和就绪两种状态。 (2)TASK-INTERRUPTIBLE状态,可中断的等待态。进程正在等待某些事件。 (3)TASK-UNINTERRUPTIBLE状态,等待态,不可中断。 (4)TASK-ZOMBIE状态,僵死态。 (5)TASK-STOPPED状态,暂停态。,第2章 进程管理,15,Linux任务状态转换图,2.2 进程的描述,进程实体通常是由程序、数据集合和PCB这三部分构成,也称为“进程映象”。,第2章 进程管理,17,图2-4 进程的一般组成模型,2.2.1 进程控制块PCB,PCB集中反映一个进程的动态特征,当系统创建了一个新进程时,就为它建立一个PCB;当进程终止后,系统回收其PCB,该进程在系统中就不存在了。所以,PCB是进程存在的惟一标志。可以按照功能将PCB分成四个组成部分:进程标识符、处理机状态、进程调度信息、进程控制信息。,第2章 进程管理,18,1进程标识符 进程标识符用于惟一地标识一个进程。一个进程通常有两种标识符: (1)进程内部标识符。 (2)进程外部标识符。 2处理机状态:由各种寄存器中的内容组成。 3进程调度信息 (1)进程状态。 (2)进程优先级。 (3)进程调度所需要的其它信息。 (4)事件,或阻塞原因。 4进程控制信息,包括: (1)程序和数据的地址; (2)进程同步和通信机制; (3)资源清单; (4)链接指针。,第2章 进程管理,19,2.2.2 进程控制块的组织方式,各进程的PCB有如下几种组织方式:线性方式、链接方式和索引方式。1线性方式 将各进程的PCB依次放入一个表中,结构如下图所示。,第2章 进程管理,20,图2-5 PCB的线性组织方式,2链接方式,链接方式是经常采用的方式。其原理是:按照进程的不同状态分别将其放在不同的队列。Linux操作系统就是应用这种进程控制块组织方式。,第2章 进程管理,21,3索引方式,系统根据所有进程的状态建立几张索引表。,第2章 进程管理,22,2.2.3 Linux进程的PCB,Linux系统中的进程称为任务。该系统的进程控制块PCB用一个称为task-struct的结构体来描述, Linux系统PCB包含以下信息: 1 进程描述信息 (1)进程标识号(pid, process identifier) (2)用户和组标识(user and group identifier) (3) 连接信息(Links) 2进程控制信息 (1) 进程当前状态 (2)调度信息 (3)记时信息 (4) 通信信息,第2章 进程管理,23,Linux支持典型的UNIX进程间通信机制信号、管道,也支持System 通信机制共享内存、信号量和消息队列。 3 进程资源信息记录了与该进程有关的存储器的各种地址和资料、文件系统以及打开文件的信息等等。 4 CPU现场信息,第2章 进程管理,24,2.3 进程控制,所谓进程控制,就是系统使用一引起具有特定功能的程序段来创建、撤消进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。原语:把系统态下执行的某些具有特定功能并且不可被中断的程序段称为原语。原语的特点是:系统程序、不可被中断。系统在创建、撤消一个进程以及要改变进程的状态时,都要调用相应的程序段来完成这些功能。用于进程控制的原语有:创建原语、撤消原语、阻塞原语、唤醒原语等。,第2章 进程管理,25,2.3.1 进程的创建与终止,1进程的创建导致进程创建的事件有:用户登录、作业调度、为用户提供服务等。 创建原语Creat( ),通过下述步骤创建一个进程。 (1)申请空白PCB。 (2)为新进程分配资源。 (3)初始化进程控制块。 (4)将新建进程插入就绪态队列。 2进程的终止过程在进程中,操作系统调用进程终止原语,终止本进程。过程如下: (1)根据被终止进程的标识符,从PCB队列中检索出该进程的PCB,从中读出该进程的状态。 。 (2)若被终止进程正处于执行状态,应立即终止该进程的执行,该进程被终止后应重新进程调度。 (3)检查该进程有无子孙进程,若有,则应将其所有子孙进程终止。 (4)释放终止的进程所占有的资源,将其归还它的父进程或者系统。 (5)将被终止的进程从它的PCB队列中移出。,第2章 进程管理,26,3进程阻塞与进程唤醒,进程状态的转换需要通过进程之间的同步或通信机构来实现,也可直接使用“阻塞原语”和“唤醒原语”来实现。 (1)进程的阻塞当一个进程所等待的某一事件尚未发生时,该进程调用阻塞原语block( )将自己阻塞,转换为等待状态。 (2)进程的唤醒 处于等待状态的进程,只有当该进程所等待的外部事件发生时,才由发生该事件的进程调用唤醒原语wakeup( )将它唤醒。,第2章 进程管理,27,2.3.2 几个相关的Linux系统调用,在Linux系统中,系统向用户提供了一些对进程进行控制的系统调用。常用的有: 1fork( )系统调用 Linux利用fork( ) 系统调用创建一个新进程。 2Exec系统调用利用exec系统调用执行另一个程序。 3exit( )系统调用父进程在创建子进程时,应在进程的末尾写一条exit,使子进程自我终止。 4wait系统调用将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。,第2章 进程管理,28,2.3.3 进程的阻塞与唤醒,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号