




已阅读5页,还剩138页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章进程管理,2.1进程的基本概念2.2进程控制2.3进程同步2.4经典进程的同步问题2.5进程通信2.6线程,2.1进程的基本概念,2.1.1程序的顺序执行及其特征2.1.2前趋图2.1.3程序的并发执行及其特征2.1.4进程的特征与状态2.1.5进程控制块,学习要求,(1)牢固掌握进程的概念(2)深入理解进程最基本的属性是动态性和并发性(3)掌握进程与程序的主要区别(4)掌握进程的基本状态及其转换发生的典型事件(5)理解进程的一般组成,应深入理解进程控制块的作用,2.1进程的基本概念,2.1.1程序的顺序执行及其特征1.程序的顺序执行,例1:如下语句S1:a:=x+y;S2:b:=a-5;S3:c:=b+1;,例2:程序之间执行顺序,2.程序顺序执行时的特征(1)顺序性程序和机器执行它的活动严格一一对应。(2)封闭性只有程序本身的动作才能改变程序的运行环境。(3)可再现性顺序执行的最终结果与程序运行的速度无关,2.1.2前趋图前趋图(PrecedenceGraph)是一个有向无循环图,用于描述进程之间执行的前后关系。,图2-2前趋图,(不是前趋图),2.1.3程序的并发执行及其特征1程序的并发执行,图2-3并发执行时的前趋图,程序并发执行:一组逻辑上相互独立的程序或程序段在执行过程中,其执行时间在客观上相互重叠,即一个程序段的执行,尚未结束,另一个程序段的执行已经开始的这种执行方式。,对于具有下述四条语句的程序段:S1:a:=x+2S2:b:=y+4S3:c:=a+bS4:d:=c+b,图2-4四条语句的前趋关系,程序并发执行时的特征,间断性失去封闭性是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变不可再现性,3)不可再现性例如,有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做n:=n+1操作;程序B每执行一次时,都要执行Print(n)操作,然后再将n置成“0”。程序A和B以不同的速度运行。这样,可能出现下述三种情况(假定某时刻变量n的值为v)。,程序并发执行的描述,程序并发执行过程可以描述为:CobeginP1;P2;PnCoend,1)动态性2)并发性3)独立性进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。没有建立进程的程序,不能作为一个独立的单位参加运行。4)异步性:指进程按各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行。5)结构特性从结构上看,进程由程序段、数据段及PCB三部分组成。,2.1.4进程的特征与状态,1.进程的特征和定义,进程可以定义如下:(1)进程是程序的一次执行。(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。(3)进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。,进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动(程序的一次执行),是系统进行资源分配和调度的一个独立单位。(在这里,程序指一组操作序列,而数据集则是接受程序规定操作的一组存储单元的内容。),从操作系统角度看,可将进程分为系统进程和用户进程两类。系统进程执行操作系统程序,完成操作系统的某些功能。用户进程执行用户程序,直接为用户服务。系统进程的优先级通常高于一般用户进程的优先级。,小补充:进程与程序的联系与区别,进程与程序既有联系又有区别。1)联系程序是构成进程的组成部分之一。一个进程的运行目标是执行它所对应的程序,如果没有程序,进程就失去了其实际存在的意义。从静态的角度看,进程是由程序、数据和进程控制块(PCB)三部分组成。,2)区别(1)程序是静态的,而进程是动态的。进程既然是程序的执行过程,因而进程是有生命期的,有诞生,亦有消亡。因此,程序的存在是永久的,而进程的存在是暂时的,动态地产生和消亡。(2)一个进程可以执行一个或几个程序,一个程序亦可以构成多个进程。例如,一个编译进程在运行时,要执行词法分析、语法分析、代码生成和优化等几个程序。或者,一个编译程序可以同时生成几个编译进程,为几个用户服务。(3)进程具有创建其它进程的功能。被创建的进程称为子进程,创建者称为父进程,从而构成进程家族。,2.进程的三种基本状态进程执行时的间断性决定了进程可能具有多种状态。事实上,运行中的进程可能具有以下三种基本状态。1)就绪(Ready)状态当进程已经分配到除CPU以外的所有必要的资源后,只要能再获得处理机,就可以立即执行2)执行状态指进程已获得处理机而执行的状态。,3)阻塞状态进程因为发生某个事件而暂停执行时的状态(如:请求I/O、申请缓冲空间等)。有时也称“等待”状态或“睡眠”状态。,就绪,结束,执行,阻塞,事件发生,进程调度,等待某事件,完成,时间片用完,创建,图2.5进程状态转换示意图,3创建状态和终止状态1)创建状态创建一个进程一般要通过两个步骤:首先,为一个新进程创建PCB,并填写必要的管理信息;其次,把该进程转入就绪状态并插入就绪队列之中,2)终止状态两步:首先等待操作系统进行善后处理;然后将其PCB清零,并将PCB空间返还系统。,图2-6进程的五种基本状态及转换,图2-7具有创建、终止和挂起状态的进程状态图,2.1.5进程控制块1进程控制块的作用每个进程一个进程控制块PCB(ProcessControlBlock),它是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。,注意:OS是根据PCB来对并发执行的进程进行控制和管理的。在进程的整个生命期中,系统总是通过PCB对进程进行控制的,亦即,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。所以说,PCB是进程存在的惟一标志。,2、进程控制块中的信息,(1)进程标识符信息进程标识符用于唯一的标识一个进程。外部标识符。由创建者提供,通常是由字母、数字组成,往往是用户(进程)访问该进程使用。外部标识符便于记忆,如:计算进程、打印进程、发送进程、接收进程等。内部标识符:为了方便系统使用而设置的。在所有的OS中,都为每一个进程赋予一个唯一的整数,作为内部标识符。,(2)处理机状态信息(现场信息)主要是由处理机各种寄存器中的内容所组成。通用寄存器:又称为用户可视寄存器,可被用户程序访问,用于暂存信息。指令寄存器PC:存放要访问的下一条指令的地址。程序状态字PSW:其中含有状态信息。(条件码、执行方式、中断屏蔽标志等)用户栈指针:每个用户进程有一个或若干个与之相关的用户栈,用于存放过程和系统调用参数及调用地址。栈指针指向该栈的栈顶。,(3)进程调度信息在PCB中还存放了一些与进程调度有关的信息。进程状态:指明进程当前的状态,作为进程调度和对换时的依据。进程优先级:用于描述进程使用处理机的优先级别的一个整数,优先级高的进程优先获得处理机。进程调度所需要的其他信息:(进程已等待CPU的时间总和、进程已执行的时间总和)阻塞原因:这是进程由执行状态转变为阻塞状态所等待发生的事件。,(4)进程控制信息进程控制信息包括:程序和数据的地址,指进程的程序和数据所在的内存或外存地(首)址,以便再调度到该进程执行时,能从PCB中找到其程序和数据;进程同步和通信机制,指实现进程同步和进程通信时必需的机制,如消息队列指针、信号量等,它们可能全部或部分地放在PCB中;资源清单,即一张列出了除CPU以外的、进程所需的全部资源及已经分配到该进程的资源的清单;链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址。,3.进程控制块的组织方式1)链接方式这是把具有同一状态的PCB,用其中的链接字链接成一个队列。这样,可以形成就绪队列、若干个阻塞队列和空白队列等。对其中的就绪队列常按进程优先级的高低排列,把优先级高的进程的PCB排在队列前面。此外,也可根据阻塞原因的不同而把处于阻塞状态的进程的PCB排成等待I/O操作完成的队列和等待分配内存的队列等。图2-8示出了一种链接队列的组织方式。,图2-8PCB链接队列示意图,2)索引方式系统根据所有进程的状态建立几张索引表。例如,就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。图2-9示出了索引方式的PCB组织。,图2-9按索引方式组织PCB,2.2进程控制,由原语实现:一般地,把系统状态下执行的某些具有特定功能的程序段称为原语。和进程控制有关的原语有:创建原语、撤销原语、阻塞原语、唤醒原语,原语(Primitive)是由若干条指令组成的,用于完成一定功能的一个过程。原语与一般过程的区别:它们是“原子操作(ActionOperation)”。所谓原子操作,是指一个操作中的所有动作要么全做,要么全不做。换言之,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。原子操作在管态下执行,常驻内存。,2.2.1进程的创建1进程创建时机(1)系统创建用户登录作业调度请求服务,如申请打印(2)用户自身创建父进程创建子进程,2、进程的创建过程,(1)申请空白的PCB为新进程分配唯一的数字标识符,并从PCB表项中申请一个空白的PCB(2)为新建立的进程分配资源(3)初始化PCB填写PCB相关表项,将进程的状态设置为“就绪”状态(4)将新进程插入就绪队列,入口,查PCB链表,有空PCB?,PCB入就绪队列,将有关参数填入PCB相应项,取空闲PCB块,返回,创建失败,无,图2-10创建原语流程图,有,2.2.2进程的终止1引起进程终止的事件1)正常结束2)异常结束3)外界干预,2进程的终止过程,(1)将该进程所拥有的全部资源,或者归还给它的父进程,或者归还给系统。(2)撤消该进程的PCB表项。,2.2.3进程的阻塞与唤醒1.引起进程阻塞和唤醒的事件有下述几类事件会引起进程阻塞或被唤醒。1)提出资源请求当正在执行的进程请求操作系统分配相应资源时,由于某种原因,操作系统并不立即满足该进程的要求时,该进程只能转变为阻塞状态来等待。2)提出I/O申请,3)等待数据对于相互合作的进程,如果其中一个进程需要先获得另一(合作)进程提供的数据后才能对数据进行处理,则只要其所需数据尚未到达,该进程只有(等待)阻塞。,2进程阻塞过程正在执行的进程,当发现上述某事件时,由于无法继续执行,于是进程便通过调用阻塞原语block把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由“执行”改为“阻塞”,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞(等待)队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程并进行切换,亦即,保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中的处理机状态设置CPU的环境。,3进程唤醒过程唤醒原语执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。应当指出,block原语和wakeup原语是一对作用刚好相反的原语。因此,如果在某进程中调用了阻塞原语,则必须在与之相合作的另一进程中或其他相关的进程中安排唤醒原语,以能唤醒阻塞进程;否则,被阻塞进程将会因不能被唤醒而长久地处于阻塞状态,从而再无机会继续运行。,2.2.4进程的挂起与激活1进程的挂起当出现了引起进程挂起的事件时,比如,用户进程请求将自己挂起,或父进程请求将自己的某个子进程挂起,系统将利用挂起原语suspend()将指定进程或处于阻塞状态的进程挂起。挂起原语的执行过程是:首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪;对于活动阻塞状态的进程,则将之改为静止阻塞。为了方便用户或父进程考查该进程的运行情况而把该进程的PCB复制到某指定的内存区域。最后,若被挂起的进程正在执行,则转向调度程序重新调度。,2进程的激活过程当发生激活进程的事件时,例如,父进程或用户进程请求激活指定进程,若该进程驻留在外存而内存中已有足够的空间时,则可将在外存上处于静止就绪状态的该进程换入内存。这时,系统将利用激活原语active()将指定进程激活。激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞,便将之改为活动阻塞。假如采用的是抢占调度策略,则每当有新进程进入就绪队列时,应检查是否要进行重新调度,即由调度程序将被激活进程与当前进程进行优先级的比较,如果被激活进程的优先级更低,就不必重新调度;否则,立即剥夺当前进程的运行,把处理机分配给刚被激活的进程。,练习1、正在执行的进程由于时间片用完而被暂停执行,此时进程应从执行状态变为状态;处于阻塞状态的进程,在进程等待事件出现后,应转变为状态,若正在执行的进程申请I/O则应转变为(3)状态。A.阻塞B.就绪C.执行D.撤消E.创建2、一个进程状态转换发生,有无另一个转换一定发生,试举例说明,2.3进程同步,2.3.1进程同步的基本概念1两种形式的制约关系(1)间接制约关系(进程互斥)由于共享资源而引起的暂临界区内不允许并发进程交叉执行的现象。由共享公有资源而造成的对并发进程执行速度的间接制约(2)直接制约关系(进程同步)由于并发进程互相共享对方的私有资源所引起的直接制约。,2.临界资源临界资源:一次仅允许一个进程使用的资源。引入原因:解决“与时间有关的错误”。与时间有关的错误:程序并发执行时的不可再现性。,3临界区在每个进程中访问临界资源的那段代码称为临界区(criticalsection)。临界区访问模型:,4同步机制应遵循的规则(1)空闲让进。当无进程处于临界区时,应允许一个请求进入临界区的进程立即进入自己的临界区。(2)忙则等待。当已有进程进入临界区时,其它试图进入临界区的进程必须等待。(3)有限等待。对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。(4)让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。,2.3.2信号量机制1整型信号量最初由Dijkstra把整型信号量定义为一个用于表示资源数目的整型量S,它与一般整型量不同,除初始化外,仅能通过两个标准的原子操作(AtomicOperation)wait(S)和signal(S)来访问。很长时间以来,这两个操作一直被分别称为P、V操作。Wait(S)和signal(S)操作可描述为:wait(S):whileS=0dono-op;S:=S-1;signal(S):S:=S+1;,2记录型信号量解决整型信号量机制中“忙等”现象。,typesemaphore=recordvalue:integer;L:listofprocess;end,相应地,wait(S)和signal(S)操作可描述为:procedurewait(S)varS:semaphore;beginS.value:=S.value-1;ifS.value=1thenfori:=1tondoSi:=Si-1;endforelseplacetheprocessinthewaitingqueueassociatedwiththefirstSifoundwithSi=t1andandSn=tnthenfori:=1tondoSi:=Si-di;endforelsePlacetheexecutingprocessinthewaitingqueueofthefirstSiwithSi1时)或互斥信号量(S=1时)。(3)Swait(S,1,0)。这是一种很特殊且很有用的信号量操作。当S1时,允许多个进程进入某特定区;当S变为0后,将阻止任何进程进入特定区。换言之,它相当于一个可控开关。,2.3.3信号量的应用1利用信号量实现进程互斥,Varmutex:semaphore:=1;beginparbeginprocess1:process2:parend,为临界资源设置一个互斥信号量mutex,其初值为1;在每个进程中将临界区代码置于wait(mutex)和signal(mutex)原语之间,process1、2:beginrepeatwait(mutex);criticalsectionsignal(mutex);remaindersectionuntilfalse;end,互斥模型,用信号量解题的关键,步骤:信号量的设置;给信号量赋初值(常用的互斥和同步信号量值的大小);P、V操作安排的位置(其中,P的顺序不能颠倒,V的顺序任意)注意区分1)公用信号量,互斥时使用的信号量:它仅允许取初值为“”,用作互斥。它联系着一组共行进程,每个进程均可对之施加、操作。2)私用信号量:一般信号量(资源信号量):它联系着一组共行进程,但其初值为,或为某个正整数,表示资源的数目,主要用于进程同步。,信号量的使用要点,信号量的物理含义:S0表示有S个资源可用S=nthennotfull.wait;buffer(in):=nextp;in:=(in+1)modn;count:=count+1;ifnotempty.queuethennotempty.signal;end,procedureentryget(item)beginifcount=0thennotempty.wait;nextc:=buffer(out);out:=(out+1)modn;count:=count-1;ifnotfull.quenethennotfull.signal;endbeginin:=out:=0;count:=0end,在利用管程解决生产者消费者问题时,其中的生产者和消费者可描述为:producer:beginrepeatproduceaniteminnextp;PC.put(item);untilfalse;endconsumer:beginrepeatPC.get(item);consumetheiteminnextc;untilfalse;end,2.5进程通信(Communication),进程通信:指进程间的信息交换。按通信内容可以划分为2种低级通信:进程之间控制信息的交换称为低级通信。一般只传送一个和几个字节的信息,达到控制进程执行速度的作用。(进程的同步和互斥)信号量机制作为同步工具是卓有成效的,但作为通讯工具则不够理想,(效率低。通讯对用户不透明。)高级通信:用户可以直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。,进程的同步与互斥是一种通讯方式,一进程可通过修改变量或信号量告知另一进程,它是否可以继续执行下去,利用生产者消费者算法,生产者进程可以传送一批数据给消费进程,或者说生产者通过缓冲区与消费者进行通讯,但P、V操作只能传递信号,信号本身不包含任何数据,而进程不当还容易导致进程死锁,因此,称这些同步机构为低级通讯机构。,进程通信的类型,高级通讯机制类型1共享存储器系统(Shared-MemorySystem)2消息传递系统(MessagepassingSystem)3管道(Pipe)通信系统,1共享存储器系统,共享存储器系统:相互通讯的进程通过共享数据结构和存储区进行通讯,因而可进一步分为:基于共享数据结构的通讯方式;(低效,只适于传递少量数据)基于共享存储区的通讯方式。为了传送大量数据,在存储区中划出一块共享存储区,诸进程可通过对共享存储区进行读或写数据实现通讯。,向系统申请共享存储区中的一个分区指定该分区的关键字如果已经给其他进程分配了这样的存储区,将使用分区的描述符返回给申请者4申请者将申请到的共享分区挂到本进程上,2消息传递系统,在消息传递系统中,进程间的数据交换是以消息(message,在计算机网络中又称报文)为单位。程序员直接利用系统提供的一组通讯命令(原语)来实现通讯。因其实现方法的不同,又可分为,直接通信方式:发送进程直接将消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。故称为消息缓冲机制。间接通信方式:发送进程将消息发送到某个中间实体(一般称为信箱)中,接收进程从中取得消息,所以称为信箱通讯方式,相应地系统称为电子邮件系统。,一、消息缓冲机制(直接通信),消息缓冲通讯技术由Hansen首先提出的,基本思想是:根据“生产者消费者关系”原理,利用公用消息缓冲区实现进程间的信息交换。发送进程先申请一个消息缓冲区,写入消息后把该消息缓冲区送入接收进程的消息队列中,通知接收进程。接收进程从消息队列中摘下一消息缓冲区,取出所需要的信息。,消息的一般形式,发送消息的进程名接收消息的进程名消息长度消息正文消息缓冲区的数据结构structmsgsender;/消息发送者名size;/消息长度Text;/消息正文Next;/下一个消息的链指针,PCB中增加相关数据项,typedefstructprocess_control_block.mq;/消息队列messagequeuemutex;/消息队列互斥信号量sm;/消息队列资源信号量.,send原语,voidsend(receiver,a)getbuf(a.size,msg);/申请缓冲区,存入msgmsg.sender=a.sender;msg.size=a.size;strcpy(a.text,msg.text);msg.next=0;j=getinternal_name(receiver);P(j.mutext);insert(j.mq,msg);/加入接收者的消息队列V(j.mutext);V(j.sm);/消息个数加1,可能会唤醒接收者,receive原语,voidreceive(b)P(j.sm);/申请取消息,若无则阻塞P(j.mutext);/互斥访问消息队列remove(j.mq,msg);/摘下一个消息V(j.mutext);b.sender=msg.sender;b.size=msg.size;strcpy(msg.text,b.text);putbuf(msg);/释放消息所占空间,消息缓冲通信基本原理,接收者进程Receive(b),发送者进程准备消息aSend(PB,a),OS,消息缓冲区,MSG,a,b,PCB,j,Send(receiver,a),Receive(b),b,MSG,二、邮箱通信(间接通信),信(邮)箱信箱是一种数据结构,逻辑上它分成两部分:信箱头和由若干格子组成的信箱体。信箱中每个格子存放一封信,信箱中格子的数目和每格的大小在创建信箱时确定。进程间的通信要满足如下条件:发送进程发送消息时,邮箱中至少要有一个空格存放该消息。接收进程接收消息时,邮箱中至少要有一个消息存在。,发送进程A,接收进程B,send(mailbox,msg),receive(mailbox,msg),邮箱头:邮箱名称、邮箱大小、拥有该邮箱的进程名,邮箱体:存放消息,使用邮箱的时候应该满足:发送进程发送消息时,邮箱中至少要有一个空格能存放该消息接收进程接收消息时,邮箱中至少有一个消息存在,邮箱通信结构,三、管道(Pipe)通信系统,管道(pipe)通讯由UNIX首创的一种借助文件和文件系统形成的一种通信方式,。由于其有效性,一些系统继UNIX之后相继引入了管道技术,如pc-dos,管道通信将成为进程通讯的一种重要方式。消息缓冲通信机构是以内存缓冲区为基础。管道是以文件系统为基础。管道类型有名管道无名管道,所谓管道,是指用于连接一个读进程和一个写进程的文件,称pipe文件。向管道提供输入的进程(称写进程),以字符流的形式将大量数据送入管道,而接受管道输出的进程(读进程)可从管道中接收数据。,为了协调双方的通信,管道机制必须提供以下三方面的协调能力:(1)互斥,即当一个进程正在对pipe执行读/写操作时,其它(另一)进程必须等待。(2)同步,指当写(输入)进程把一定数量(如4KB)的数据写入pipe,便去睡眠等待,直到读(输出)进程取走数据后,再把它唤醒。当读进程读一空pipe时,也应睡眠等待,直至写进程将数据写入管道后,才将之唤醒。(3)确定对方是否存在,只有确定了对方已存在时,才能进行通信。,管道通信的思想,发送进程可以源源不断的从pipe一端写入数据流,在规定的pipe文件的最大长度(如4096字节)范围内,每次写入的信息长度是可变的接收进程在需要时可以从pipe的另一端读出数据,读出单位长度也是可变的,从操作系统的角度来看,线程是可以被操作系统独立调度和分派的基本单位。线程自己几乎不拥有系统资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一个进程中的多个线程之间可以并发执行。,线程,1.引入:减少系统的时空开销,提高并发性。1)创建进程:创建PCB,分配资源2)撤消进程3)进程切换:CPU运行现场的保护和恢复,2.6线程(Thread),2.6.1线程的概念,2.线程的定义,线程可定义为“进程内的一个执行单位”,或者定义为“进程内的一个可调度的实体”。在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。负责处理机调度的程序称为线程调度程序,它是操作系统内核的重要组成部分,线程调度也是内核的主要功能之一。,3.线程的属性,轻型实体。只拥有运行所必须的资源:PC,寄存器,栈(2)独立调度和分派的基本单位。(3)可并发执行。(4)共享进程资源。(5)同步:互斥锁、条件变量、信号量,线程是系统调度的一个基本单位,在程序中线程是以函数的形式出现的,它的代码是进程代码的一部分,并与进程及其派生的其它线程共享进程的全局变量和文件打开表等公用信息。每个进程都有私有的虚拟地址空间,进程的所有线程共享同一地址空间。,4.进程和线程的关系实例(1)线程是进程的一个组成部分。每个进程在创建时通常只有一个线程,需要时这个线程可以创建其它线程。(2)进程的多线程都在进程的地址空间活动。(3)资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从进程的资源配额中扣除并分配给它。(4)处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程。(5)一个进程可对应多个线程。,1)WindowsNT中的进程,(1)一个可执行的程序,它定义了初始代码和数据。(2)一个私用地址空间,即进程的虚拟地址空间。(3)系统资源,例如信号量、文件等。它们是在程序执行时,由操作系统分配给它的。(4)至少有一个执行进程。,2)WindowsNT中的线程WindowsNT中,线程和进程一样,也用对象来实现。线程由对象管理程序创建或删除。一个线程的基本组成是:(1)一个惟一的标识符,称之为客户ID。(2)描述处理机状态的一组寄存器内容。(3)两个栈,分别用于用户态和核心态下执行。(4)一个私用的存储区。,5.线程基本状态执行状态:表示线程正获得处理机而运行;就绪状态:指线程已具备了各种执行条件,一旦获得CPU便可执行的状态;阻塞状态:指线程在执行中因某事件而受阻,处于暂停执行时的状态。,线程与进程的主要区别,进程是资源管理的基本单位,它拥有自己的地址空间和各种资源;线程只是处理机调度的基本单位,它只和其他线程一起共享进程资源,它自己没有任何资源。以进程为单位进行处理机切换和调度时,处理机切换时间长,资源利用率降低。以线程为单位进行进行处理机切换和调度时,由于不发生资源变化,特别是地址空间的变化,处理机切换时间较短,从而处理机效率较高。,对用户来说,多线程系统比无线程系统可减少用户的等待时间,提高系统的响应速度。线程和进程一样,都有自己的状态,也有相应的同步机制,不过由于线程没有单独的数据和程序空间,因此线程不能像进程的数据与程序那样,交换到外存存储空间,从而线程没有挂起状态。,进程的调度、同步等大多由OS内核完成,而线程的控制既可以由OS内核进行,也可以由用户控制。,2.6.2线程的适用范围,几种典型的应用:1服务器中的文件管理和进程通信控制;2前后台处理;3异步处理;4数据的批处理;5网络系统中信息发送和接收;6其他相关的处理。,2.6.3线程的创建和终止在多线程OS环境下,应用程序在启动时,通常仅有一个线程在执行,该线程被人们称为“初始化线程”。它可根据需要再去创建若干个线程。在创建新线程时,需要利用一个线程创建函数(或系统调用),并提供相应的参数,如指向线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等。在线程创建函数执行完后,将返回一个线程标识符供以后使用。终止线程的方式有两种:一种是在线程完成了自己的工作后自愿退出;另一种是线程在运行中出现错误或由于某种原因而被其它线程强行终止。,线程的创建实例:首先你必须使用构造函数创建一个线程实例,它的参数比较简单,只有一个ThreadStart:publicThread(ThreadStartstart);然后调用Start()启动它.,例:它首先生成了两个线程实例t1和t2,然后分别设置它们的优先级,接着启动两线程(两线程基本一样,只不过它们输出不一样,t1为“1”,t2为“2”,根据它们各自输出字符个数比可大致看出它们占用CPU时间之比,这也反映出了它们各自的优先级)。,Main()Threadt1=newThread(newThreadStart(Thread1);Thre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 票据考试题库及答案
- 网络等级考试题库及答案
- 影像技术考试题库及答案
- 保育员考试分析题及答案
- 医保管理部考试题及答案
- 闸东路小学招聘考试题及答案
- 兽医法规考试题库及答案
- 口腔药剂科考试题库及答案
- 药品购销员实操考试题及答案
- 2025年国家公务员考试试题库及答案解析
- 茶叶加工工(中级)模拟试题与答案
- 高考语文复习【高效课堂精研】打造议论文分论点+课件
- 陶艺制作与技法作业指导书
- 《SAP培训资料》课件
- 《CT增强扫描碘对比剂外渗预防与护理规范》
- 《干部履历表》(1999版电子版)
- 《植物的组织培养》课件
- 统编版(2024)七年级上册道德与法治第一单元《少年有梦》测试卷(含答案)
- 医院超市经营服务方案
- 锂电池安全知识培训课件
- 大疆80分钟在线测评题
评论
0/150
提交评论