《《操作系统》第3章-进程管理》由会员分享,可在线阅读,更多相关《《操作系统》第3章-进程管理(84页珍藏版)》请在金锄头文库上搜索。
1、第第3 3章章 进程管理进程管理 主讲:房道伟主讲:房道伟Daowei计算机操作系统计算机操作系统主要内容主要内容n进程的概念进程的概念n进程的状态和进程控制块进程的状态和进程控制块n进程队列进程队列n进程控制进程控制n线程与多线程线程与多线程3.1 3.1 进程概念进程概念进程概念进程概念一、进程的引入一、进程的引入 进程的概念是操作系统中最基本、最重要的概念。它是在多道程序系统出现后,为了刻划系统内部出现的情况,描述系统内部各作业的活动规律而引进的一个新的概念。1. 多道程序系统的特点多道程序系统的特点 并行性,主存中存放多道作业,并同时处于运行多道作业; 制约性:各程序因资源竞争或并行程
2、序间需要相互协同而引起的相互关系; 动态性:各程序在系统中所处的状态不断变化的。2. 程序概念不确切程序概念不确切 由于在多道程序系统带来的更为复由于在多道程序系统带来的更为复杂的环境中,使程序具有了杂的环境中,使程序具有了并行、制约和动态并行、制约和动态的特征,的特征,使得原有的程序概念已难以刻划和反映系统中的情况使得原有的程序概念已难以刻划和反映系统中的情况了。了。(1) 程序本身完全是一个静态的概念 (程序是完成某个功能的指令的集合),而系统中各程序实际上处于不断变化的状态中程序概念反映不了这种动态性 (有时要等待某种共享资源,或某些信息而暂时运行不下去,而当使之暂停的因素消失后,程序又
3、可恢复“ 执行暂停执行 ”)。(2) 程序概念已不能反映了系统中的并行特性例:二个C 源程序由一个C 编译程序完成,若用程序概念理解,就会以为 主存中只有一个编译程序运行 (二个源程序只是编译程序加工的数据),而无法说清主存中运行着二个任务。也就是说程序概念刻划不清这种这种并行情况,反映不了它们的活动规律和状态变化。二、进程的定义二、进程的定义 进程是一个具有一定独立功能的程序关于某个数据集合的一次可以并发执行的运行活动。(一)进程同程序的差别:1. 进程是程序的执行,属于动态,程序是静态的2.进程的存在是暂时的,程序的存在是永久的。 “ 一次运行活动 ” 生命周期、诞生(建立)、死亡(撤消)
4、。3. 进程程序数据PCB (进程控制块,process control block),即进程是一个程序及其数据在处理机上顺序地执行时所发生的活动。4. 一个程序可以对应多个进程5. 一个进程可以包含多个程序例:主程序执行过程中可调用其它程序 (子程序)共同组成“ 一个运行活动 ”。主程序子程序1子程序2组成一次活动1. 进程是一个能独立运行的单位,能与其它进程并行地活动。2. 进程是竞争计算机系统有限资源的基本单位,是一个可调度的实体。也是进行处理机调度的基本单位。(二)进程的特征:3.2 3.2 进程的状态和进程控制块进程的状态和进程控制块进程的状态和进程控制块进程的状态和进程控制块一、进
5、程的状态及变化一、进程的状态及变化 进程有着“ 执行暂停执行 ” 的活动规律,一般说来一个进程不是自始至终一口气运行到底的。 各进程相互制约,当使它暂停的原因消失后,它又可准备运行。因此进程有多种状态。1. 三种基本状态:三种基本状态:(1) 运行状态运行状态 (Running) 当一个进程正在处理机上运行时,称为运行状态。(2) 就绪状态就绪状态 (Ready) 一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,称此进程处于就绪状态。(3) 等待状态等待状态 (Blocked) 一个进程正在等待某一事件发生而暂时停止运行,即使这时把处理机分配给此进程也无法运行。又称为阻塞状态。
6、RunningReadyBlocked等待事件 (系统服务请求,如请求I/O) 被调度或分派 时间片用完 事件发生注:处理机的数目一般总是少于进程数,在单处理机系统中,只有一个进程可真正获得处理。进程在系统中,其状态可以变化,各状态间变化如下图所示:说明:说明: 就绪状态的进程被进程调度程序选中后,就分配到处理机来运行,进入运行状态。 运行状态的进程时间片用完不得不让出处理机,变为就绪状态。 运行状态的进程需等待某一事件发生后,才能继续运行,变为等待状态。 等待状态的进程:若其等待的事件已发生,变为就绪状态。注:必先由等待状态变为就绪状态,再重新由调度程序来调度。例:AB就绪运行等待I/O1I
7、/O2 上面我们讲了进程的三个基本状态及其转换,对于进程是如何产生的,这需要和作业调度、作业状态联系起来考虑。作业调度程序负责对作业一级的处理。 当系统调度到一个作业时,必然要为作业分配必需的资源和创建相应的进程,这时作业进入执行阶段。2. 进程与作业的关系进程与作业的关系 在此状态下作业是以进程面貌参与活动的,其状态变迁如图下: 当进程完成了自己的使命进入完成状态时,它将被撤消,当一个作业的相应进程全部进入完成状态时,该作业也就完成,进入完成状态,进行撤消等善后处理工作。提交后备完成RunningReadyBlocked二、进程的描述二、进程的描述 进程由三部分组成:程序、数据和进程由三部分
8、组成:程序、数据和进程控制块(进程控制块(PCB)。 进程是程序的一次执行过程,那么,如何描述一个进程活动?进程由哪几个部分组成的呢?1. 进程控制块进程控制块 为了描述一个进程和其它进程以及系统资源的关系;为了刻画一个进程在各个不同时期所处的状态,人们采用了一个与进程相联系的数据块,称为进程控制块PCB。PCB:是用以记录进程的有关信息的一块主存,它是由系统为每个进程分别建立的。 当系统创建一个进程时,必须为它设置一个 PCB,然后根据PCB的信息对进程实施控制管理,进程任务完成时,系统收回它的PCB,进程也随之消亡。PCB包括三类信息:n进程标识信息:PID, PPIDn处理器状态信息:P
9、C, PSW, 堆栈指针、寄存器n进程控制信息:调度状态信息、链接指针、通信信息IPC、资源使用信息 为了对进程作充分的描述,PCB通常应具有的信息如下:(对不同OS所使用的PCB结构也不同)PCB-ADDRNAMESTATUSNEXTALL-Q-NEXTSTART-ADDRPRIORITYCPUSTATUSCommunication-informationPROCESS-familyOWN-resource对于简单系统,PCB结构较小;而在一些较复杂的系统中,PCB所含的内容就比较多,比如,还可能有I/O、文件传输、控制信息。PCB结构说明:说明:(1) 进程标识符NAME:每个进程都必须有
10、唯一的标识符,可以用字符或编号表示。在创建一个进程时,由创建者给出进程的标识符。(2) 进程当前状态status:说明本课程目前处于何种状态(运行、就绪、等待),作为进程调度时分配处理机的主要依据。(只有当进程处于就绪状态时,才有可能获得处理机)(3) 当前队列指针NEXT:该项登记了处于同一状态下的下一个PCB的地址,以此将处于同一状态的所有进程勾链起来。而头指针为队列第一元素的地址,由OS掌握。PCB1PCB2PCBnReady-Q-Start就绪头指针就绪头指针 (4) ALL-Q-NEXT 总链指针:所有进程的总链,进程PCB中的该项内容是指向总链中的下一个PCB地址。当建立新进程时,
11、查询是否重名时方便。(5) 程序开始地址START-ADDR:该进程的程序将从此地址开始执行。(6) 进程优先级PRIORIYT:反映了进程要求CPU的紧迫程度,它通常由用户预先提出或由系统指定。进程将以其优先级的高低去争夺CPU的权利。(7) CPU现场保护区CPUSTATUS:当进程由于某种原因释放处理机后,CPU现场信息被保存在PCB的该区域中,以便在该进程重新获得处理机后,继续执行,通常被保护的信息有:工作寄存器,指令计数器以及PSW。(8) 通 信 信 息 : Communication-information:每个进程在运行过程中与别的进程进行通信时所记录的有关信息。(9) 家庭联
12、系PROCESS-FAMILY:有的系统允许一个进程创建自己的子进程,这样,会组成一个进程家庭(如它的子进程和父进程的标识符)。(10) 占有资源清单OWN-resource2. 进程的组成进程的组成(1) 从结构上讲,每个进程都由程序、数据和一 个进程控制块PCB组成。即进程程序数据PCB 进程的程序部分描述了进程所要完成的功能,数据集合是程序在执行时所需要的数据和工作区,这两部分是进程存在的物质基础。PCB是进程存在的唯一标志 为什么? 因为PCB1)包含了进程的描述信息和控制信息,2)是进程的动态特征的集中反映,3)系统根据PCB而感知某一进程的存在,所以PCB是进程存在的唯一标志。(只
13、有在多任务即多道批处理系统中,才可能建立PCB结构,该系统才具有进程活动) PCB在不同语言中可用不同的数据结构表示。在PASCAL中可用“ 记录 ” 来表示。为了系统管理和控制进程方便,系统常将所有进程的PCB存放在主存中系统表格区,并按照进程的内部标号由小到大的顺序存放。而整个系统中的各进程的PCB的集合可用数组来表示。这时进程内部标号可与数组元素的下标变量一致起来。各系统预留的PCB空间往往是固定的,如UNIX系统中规定进程数不超过50个。(2) 进程的物理表征:进程的概念虽然抽象,但可以用下图物理地表征一个进程。PCB程序数据(a)PCB数据程序(b)(a) 表示与进程相关联的程序和数
14、据集中放在一个内存区中;(b) 表示与进程相关联的程序和数据放在不同的内存区中。PCB1共享程序程序(c)PCB2数据程序数据(c) 共享程序时的进程结构 (若干进程同时执行一个共享程序),每个PCB均间接包含该共享程序的存储位置信息。3.3 3.3 进程队列进程队列进程队列进程队列 系统中有许多进程,它们有的处于就绪状态,有的处于阻塞状态,而且阻塞的原因各不相同。因此为了调度和管理进程方便起见,常将各进程控制块PCB用适当方法组织起来。一般来说,大致有以下几种组织方法:1. 把所有不同状态的进程的PCB组织在一个表格中,这种方法最为简单,适用于系统中进程数目不多的类型,如UNIX系统,其缺点
15、是:调度进程时,往往需查找整个PCB表。2. 分别把有着相同状态的进程PCB组织在同一个表格中,于是分别有就绪进程表、运行进程表(多机系统中)、各种等待事件的等待进程表。系统中的一些固定单元分别指出各表的起始地址:PCB1ReadyPCB2BlockedPCB3ReadyPCB4BlockedPCB5Ready就绪表就绪表起始地址某阻塞表的起始地址某阻塞表进程PCB集合3. 分别把具有相同状态的所有进程PCB按优生数排成一个或多个(每个优先级一个)队列,这就分别形成了就绪队列;等待在不同事件上的各等待队列(等待队列一般不按优先级组织,通常按其到达的先后次序排列),如等待打印机的进程队列,等待主
16、存的进程队列等,采用队列形式时,每个进程的PCB 中要增加一链指针的表目项,以指向队列中的下一个进程的PCB起始地址。同表格形式一样,系统要设置固定单元以指出各队列的头 队列中第一个进程PCB的起址。链指针PCBPCBPCBPCB的队列结构就绪队列头3.4 3.4 进程控制进程控制进程控制进程控制 进程从创建到消灭的整个自下而上期中有三个基本状态,称为进程调度状态:执行、就绪、等待(阻塞)。一、一、实际上,为了更好地管理和调度进程及适应系实际上,为了更好地管理和调度进程及适应系统的功能目标,许多系统中都有统的功能目标,许多系统中都有“挂起挂起” 和和“解除挂起解除挂起 ” (即解挂即解挂)进程
17、的功能:进程的功能:1. 系统有时可能出故障或某些功能受到破坏,这时需要暂时将系统中的进程挂起,以便系统把故障消除后,再恢复原来状态。2. 用户检查自己作业的中间执行情况和中间结果时,因同预期想法不符而产生怀疑,这时用户要求挂起他的进程,以便进行某些检查和改正。3. 系统中有时负荷过重 (进程数过多),资源数相对不足,从而造成系统效率下降,此时需挂起一部分进程以调整系统负荷,等系统中负荷减轻后再将挂起进程恢复运行。表示具有挂起和解挂功能的系统中进程的状态,新增加了新的状态挂起就绪 (readys) 挂起等待 (Blockeds)活动就绪 (readya) 活动等待 (Blockeda)Read
18、yaRunningBlockedaBlockedsReadyswakeup (唤醒)事件发生挂起suspend时间片完被调度schoduler解挂active挂起suspend解挂active挂起suspend等待事件sleep事件发生wakeup (唤醒)图图:具具有有挂挂起起功功能能的的进进程程 状状 态态 变变 化化注:挂起命令可由进程自己或其它进程发出;而解挂命令只能由其它进程发出。二、进程的原语二、进程的原语1. OS的内核的内核 为了对进程控制,系统中必须设置一个机构,它具有创建撤消以及进程通讯和资源管理等功能,这样结构称为OS的内核 (kernel)。 内核本身并非一个进程,而是
19、硬件的首次延伸,即它是加到硬件上的第一层软件。 内核是通过执行各种原语操作来实现各种控制和管理功能的。2. 原语原语 (primitive) 原语是机器指令的延伸,是用若干条机器指令构成的,用以完成特定功能的一段程序。为保证操作的正确性,原语在执行期间是不可分割的。 在许多机器中为了实现上的方便,规定在执行原语操作的要屏蔽中断,以保证原语操作的不可分割性。用于进程控制的原语有:(1) 创建进程原语 (2) 撤消进程原语 (3) 挂起进程原语 (4) 解挂进程原语(5) 阻塞进程原语(6) 唤醒进程原语(7) 调度进程运行原语(8) 改变优先级原语 为了对系统中的进程进行有效的管理,通常系统都提
20、供了若干基本的操作,这些操作通常被称为原语。(1) 建立进程原语建立进程原语 一个进程如果需要时,它可以建立一个新的进程。被建立的进程称为子进程,而建立者进程称为父进程。所有的进程只能由父进程建立,不是自生自灭的。 各系统的建立进程原语就是供进程调用的用以建立子进程使用的。该原语的主要工作是为被建立进程建立起一个进程控制块PCB,并填入相应的初始值。其主要操作过程是先向系统的PCB空间申请分给一个空闲的PCB,而后根据父进程所提供的参数,将子进程的PCB表目初始化,最后返回一个进程内部名。参数为:进程名(外部标识符)n;处理机的初始状态(或进程运行现场的初始值,主要指名寄存器和程序状态字初始值
21、)S0;优先数k0;父进程分给子进程的初始主存区M0和其它资源清单(多种资源表)R0等。建立进程原语的工作大致描述为:procedure Create (n, S0, k0, M0, R0)begin/ 请求分配PCB空间i : = Get Internal Name(n);/ 初始化PCB Id(i) : =n;Priority(i) : = k0;Cpustate(i) : = S0;Main Store(i) : = M0;Resources(i) : = R0;Status(i) : = ReadysParent(i) : = CALLER / 插入就绪队列Insert(RL,i);e
22、nd 程序中的第语句是调用查找进程名过程“ Get Internal Name ”,参数为进程外部名n。该过程查找PCB集合,如已有此同样外部名进程则返回出错消息,否则返回一个空闲的PCB内部标识号i。第语句是把进程外部名n登记到第i个PCB的相应外部名表目中。语句是往PCB中登记优先数。语句登记现场状态初始值 S0到相应的现场保留区中或Cpustate中。,分别记入主存和资源的初始占有情况,这是由父进程将自己的一部分资源分给子进程的。是把进程初始状态置为“ 挂起就绪 ”。语句中CALLER代表调用本过程的父进程之内部标识号,将它记入子进程PCB的父进程名这一栏。语句也是调用插入过程Inser
23、t,其中RL表示就绪队列,即把进程i插入就绪队列。 在挂起原语的作用下,进程的状态由活动转为静止,而激活原语则处于静止状态的进程变为活动,即把“ 静止就绪 ” 变为“ 活动就绪 ”,将“ 静止阻塞 ” 变为“ 活动阻塞 ”。如激活具有指定标识符的进程的操作可描述为:(2) 挂起与解挂原语挂起与解挂原语procedureactivate (n:)begini : = get internal name (n):if status(i) : = “ readys” then status(i) : = “ readya” else status(i) : = “ blockeda”; if sta
24、tus(i) : = “ Readya” then Schedulerend说明:1. 首先根据进程外部名n,找出其内部名i;2. 看其状态是“ readys” 还是“ blockeds”;3. 假若状态是“ Readya”则由于此进程挂起了很长时间才解挂,其优先数可能改变,所以调用处理机调度程序 (scheduler) 来为高优先级进程抢占由一个低优先级进程占用的处理机。 进程的优先级是表示进程的重要性及运行的优先性,供进程调度程序调度进程运行时使用。为了防止一些进程因优先级较低,而长期得不到运行的情况。许多系统采用动态优先级,即进程的优先级不是固定不变的,而是按一定原则变化的。(3) 改变
25、进程优先级原语改变进程优先级原语通常进程的优先级与以下因素有关:通常进程的优先级与以下因素有关:(1) 作业开始时的静态优先数。作业的优先数取决于作业的重要程度;用户为作业运行所付出的价格和费用大小;作业的类型等因素;(2) 进程的类型。一般系统进程的优先级大于用户进程的优先数;输入输出型进程的优先级大于CPU型的进程,这是为了充分发挥系统输入输出设备的效能;(3) 进程所使用的资源量。随着使用CPU时间愈多,其优先级愈来愈低。对其它资源使用的情况的考虑也类似。(4) 进程在系统中等待时间。等待时间愈长,优先级就愈高。 各系统出于不同考虑,有不同的优先数计算公式。这些公式主要来自于实践经验。以
26、UNIX系统为例,其优先数的最小值为-100,最大值为127。其值越小,优先级越高。用户进程的优先数总是大于等于100。对优先数大于等于100的进程,系统为其每秒重算一次优先数。计算公式如下: PCPU,对当前运行进程每20毫秒加1,直至255为止。对其它进程每秒减10,直到小于10为止。所以这是一个与进程运行时间和等待时间有关的量; Pnice,这是一个与进程本身情况有关的参数,通常为正。用户是通过系统调用nice设置的。 由公式可以看出,一个进程占用CPU时间增加,它的优先级下降。而长期不被理睬的进程,其优先级将会相对提高。改变某进程n的优先数的原语大致可描述如下:procedure Ch
27、ange Priority(n) ; begin i : = Search Internal Name (n) ; Pri(i) : = Calculate Priority(i) ; if Status (i) = Readya then begin Insert (RL, i, Pri) ; for all PRunning Process Queue do if Pri(P)管态-目态常见引起打断进程的执行,把控制转给O.S.的事件机制。(1) 时钟中断时钟中断时钟中断处理程序如果是当前运行进程时间片到,或定时钟唤醒实时进程或延迟处理进程。这时中断处理程序将调用进程调度程序调度其他进程来
28、执行。(2) I/O设备中断设备中断如果中断处理程序发现I/O正常完成,并有一个或多个进程正被阻塞,等待该I/O中断。那么中断程序要把这些阻塞进程的进程状态改为就绪,并把它们从阻塞队列移到就绪队列中去,最后调用进程调度程序决定是由原来进程还是由其他进程来运行。(3) 存储访问故障中断存储访问故障中断如果进程要访问的地址不在主存中(如缺页等),则需要把它们调入主存,这涉及等待时间较长的I/O操作。于是中断管理程序通过进程调度程序调度其他就绪进程运行,即引起了处理器在进程间切换。(4) 访问管理程序中断访问管理程序中断当处理器发现用户程序中的指令是访管指令,则自动触发本中断。中断管理程序调用相应管
29、理程序为用户进程服务,如启动I/O,打开文件,分配主机等,通常会导致现行进程被阻塞。处理器执行模式的开关:处理器执行模式的开关:用户进程被中断或调用操作系统功能(访问管理程序)均引起处理器执行模式开关,即由用户模式(目态) 内核模式(管态)。模式开关会引起系统开销,但开销很小。因为处理器执行模式的标志位,有些系统是在程序状态字中,通过存、取PSW就执行了模式开关。进程之间的开关进程之间的开关操作系统执行过程中引起进程之间的开关。从上面关于中断驱动,使操作系统处理中断后,很多情况下,引起CPU在进程之间切换。进程间开关开销是比较大的。首先原来的运行进程的状态要改变为就绪或阻塞,那么它的PCB中的
30、有关信息均应作相应变化,包括现场信息的保存。它的PCB将移到相应了列中去。其次需要为新选出的就绪进程的PCB改为运行状态,移出就绪队列,修改存储管理的有关表格,把新选出进程PCB中的寄存器和PSW中的值装入系统处理器的各寄存器和PSW中去。2. 操作系统的执行方式操作系统的执行方式(1) 非进程的内核方式如图a所示,操作系统整个处于内核模式,执行于所有进程的外部,并与它们分离的。每当运行的用户进程被中断,或者要求访问管理程序时,进程的现场信息保存起来,控制转给操作系统,并执行内核模式。这种方式是多数的老操作系统采用的方式,当时进程的概念只用于用户程序。进程A进程N操 作 系 统 图a(2) 在
31、用户进程内部执行这种方式多用于小型和微型操作系统中。由于每个进程都要使用操作系统服务功能,于是与虚拟技术类似的假想每个进程都有一个操作系统,认为操作系统与用户进程是上下文相关,操作系统的地址空间被包含在每个进程的地址空间之内。每当进程被中断和调用管理程序功能时,操作系统均在该用户进程的地址空间内执行,但处理器的执行模式仍然由用户模式改为内核模式。这种方式的最大优点是,用户进程被中断或调用管理程序时,操作系统仍然在该进程地址空间内执行,没有进程之间开关发生(仅有处理器执行模式的开关)。UNIX操作系统就属于这种方式,而图a的方式中,进程被中断和调用管理程序,当控制转给操作系统,就已经从原来的进程
32、转出来了。进程A进程N进程开关功能 OS功能OS功能图b(3) 操作系统进程方式操作系统的各种功能作为系统进程运行,操作系统的实现,是这些系统进程的集合运行的结果,这些进程也称之为服务器或服务器进程,与用户进程的关系构成客户/服务器模式。这种方式的优点是便于应用软件工程中原则,设计操作系统的有关成分,使之具有高度模块独立性,高内聚,低耦合的模块。另外这种方式非常适合于多机系统和分布式环境。Windows NT可认为属于这种方式。进程A进程N进程开关功能(微内核) 图cOS进程1OS进程i3.5 3.5 线程与多线程线程与多线程线程与多线程线程与多线程 在单用户多任务的计算机中,如同在Windo
33、ws NT 中那样,除进程外,引入了 一个新概念 线程 (thread)。对象、线程和进程三者构成Windows NT 操作系统基本元成分。线程概念在微型机多任务系统中十分重要。进程在运行中要提出访问管理程序(系统调用)的要求,例如提出I/O要求,也可能由于时钟而打断了当前进程的运行,而调度其他就绪进程运行,也就是经常会有进程开关问题。另外还有两次模式开关(用户模式内核模式用户模式)的开销。所有这些开销的总和,在一定程度上降低了并发进程所带来的利益。(1) 进程是拥有自己资源的单元体。(2) 进程是被调度分派在处理器上运行的单元体。传统的进程概念有两个严重的局限性。首先许多应用想并发执行彼此间
34、独立的任务,但又必须要共享一个公共的地址空间和其他资源。但传统的进程概念对它们以上的要求难以支持,往往把这些应用中的独立的任务串行化,效率很低。其次传统的进程不能很好地利用多处理器系统。因为一个进程在某个时刻只能使用一个处理器。一个应用固然可以创建多个进程,并把它们分到多个处理器上执行,但如何做到使用相同的地址空间和资源?这些促使人们引起线程机制。线程的概念线程的概念线程是进程内一个相对独立的、可调度的执行单元。根据线程定义可知线程有以下性质:根据线程定义可知线程有以下性质:(1) 线程是进程内的一个相对独立的可执行单元。(2) 线程是操作系统中的基本调度单元,因此线程中应包含有调度所需的必要
35、信息。(3) 由于线程是被调度的基本单元,而进程不是调度的单元。所以每个进程在创建时,至少需要同时为该进程创建一个线程。也就是说进程中至少要有一个或一个以上线程,否则该进程无法被调度执行。(4) 需要时,线程可以创建其他线程。(5) 进程是被分给并拥有资源的基本单元,同一进程内的多个线程共享该进程的资源。但线程并不拥有资源,只是使用它们。(6) 由于共享资源(包括数据和文件),所以线程间需要通信和同步机制。(7) 线程有生命期,有诞生和死亡。在生命期中有状态的变化。现在有些语言和开发环境(如Java)支持多线程机制。用户用这些语言编制基于线程的应用 程 序 时 , 线 程 虽 然 类 似 程
36、序 , 有 开 始(begin)、结束(end)和线程体 一个语句序列。但线程本身一般不是完整程序,它不能运行自己,只能在程序中运行。采用线程机制有些什么好处呢?对于多线程机制而言,一个进程可以有多个线程,这些线程共享该进程资源。这些线程驻留在相同的地址空间,共享数据和文件。如果一个线程修改了一个数据项,其他线程可以了解和使用此结果数据。一个线程打开并读一个文件时,同一进程中的其他线程也可以同时读此文件。总而言之,这些线程运行在同一进程的相同的地址空间内。(1) 创建和撤销的系统开销创建和撤销的系统开销小小(2) CPU在线程之间开关的开销小在线程之间开关的开销小(3) 增加了通讯的有效性增加了通讯的有效性(4) 方便和简化了用户的程序结构工作方便和简化了用户的程序结构工作采用多线程机制的优点:采用多线程机制的优点:作业:作业:P57 3.3 3.8 P78 4.11. 为什么说PCB是进程存在的惟一标志?2. 下述哪些情况是对的?(1) 进程由自己创建;(2) 进程由于自己阻塞;(3) 进程由于自己挂起;(4) 进程由于自己解除挂起;(5) 进程由于自己唤醒;(6) 进程由自己撤消。3. 为什么要引入线程的概念,有什么利和弊?