第二部分处理器管理.ppt
第2章 处理器管理,第2章 处理器管理,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 进程结构,2.1.1 多道程序设计,1.程序的顺序执行早期的计算机系统基本上都是单处理器系统,每一次只允许一道程序运行,这个程序运行时,它将独占整个计算机系统的资源,而且系统按照程序步骤顺序地执行,在该程序执行完之前,其他程序只能等待,从而不存在共享资源的问题。这种程序的执行方式,称为顺序执行。,S1:a=x+y;S2:b=a-5;S3:c=b+1;,程序顺序执行特点,(1)顺序性(不同程序之间是按一定顺序执行的)。(2)封闭性(程序在运行时独占系统资源,只有程序本身能改变系统资源状态(除初始状态外)。(3)无关性(即确定性,程序执行结果与其执行速度无关)。(4)可再现性(程序运行不受外界因素影响,只要初始条件相同,运行结果也相同)。缺点:资源利用率低。,为增强计算机系统的处理能力和提高各种资源的利用率,现在计算机系统多采用多道程序设计技术,任一时刻,系统中存在许多并行的活动。并发执行:两个程序的执行在时间上是重叠的。,并发执行基于多道程序的概念,即让多个程序在计算机内交替执行,当一道程序不占用CPU时,另一道程序就马上使用,这就是多道程序设计的思想,这样的计算机系统就称为多道程序设计系统。采用多道程序设计,并由操作系统进行管理后,CPU得到了充分的利用。虽然在某一时刻仍然只有一条指令在执行,只有一个程序占用CPU,但在机器的内存中同时存放了多个程序,在某一时间间隔内,这些程序在交替执行。因此,从微观上看,指令是顺序的,但从宏观上看,程序却是并发的,这是理解进程操作的关键。,2.程序的并发执行,并发执行时的前趋图,对于具有下述四条语句的程序段:S1:a=x+2 S2:b=y+4 S3:c=a+b S4:d=c+b,程序的并发执行具有如下特征:,异步性/间断性:走走停停,具有执行-暂停-执行的活动规律。并发程序段竞争同一资源,得到资源的程序段继续执行,得不到的暂停执行。,2.程序并发执行丧失了程序顺序执行所保持的封闭性和可再现性例:有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做N=N+1操作;程序B每执行一次时,都要执行Print(N)操作,然后再将N置成“0”。程序A和B以不同的速度运行。(1)N=N+1在Print(N)和N=0之前,此时得到的N值分别为n+1,n+1,0。(2)N=N+1在Print(N)和N=0之后,此时得到的N值分别为 n,0,1。(3)N=N+1在Print(N)和N=0之间,此时得到的N值分别为 n,n+1,0。,在执行期间并发程序相互制约:多道程序之间存在着资源的竞争与共享,因而产生了相互制约的关系。直接制约,如一个程序段需要另一个程序段的计算结果。间接制约,竞争使用同一资源。程序与机器执行程序的活动(计算)不再一一对应:允许多个用户作业调用一个共享程序段,从而形成多个“计算”。,课前提问,什么是多道程序设计?为什么要采用多道程序设计?程序的并发执行具有哪些特点?,2.1.2 进程的定义,多道程序环境下,程序这个静态概念已不能如实反应程序活动的特性,如独立性、并发性、动态性、制约性等。为了更好地描述系统中的并发活动引入进程的概念。由于并发活动的复杂性,所以各个操作系统中对进程的定义未能统一:(1)进程是程序在处理机上的执行(Dijkstra)。(2)进程是可以与别的计算并发执行的计算(Donovan)。(3)进程是一个程序及其数据在处理机上顺序地执行时所发生的活动(A Lan Show)。(4)进程是系统资源和程序代码的执行位置的集合(Java)。(5)进程是进程映像的执行(Unix)。,归纳为:进程是程序关于某个数据集合的可并发的一次运行活动,是系统进行资源分配和调度的一个独立单位。,进程特性,动态性:进程是一次运行活动结构性:进程实体是程序和数据集合并发性独立性异步性:并发进程相互制约,呈现走走停停的状态,2.1.3 进程的表示,1.进程的组成进程是一个动态的概念,程序及其相关的数据集合是进程存在的实体,那么如何表示一个进程?又如何知道进程的存在呢?在操作系统中,进程通过三个部分被感知,即程序、数据集合和进程控制块。(1)程序(program)。进程运行所对应的执行代码,一个进程可以对应一个程序,也可以只对应一个程序的一部分,多个进程也可同时对应一个程序,即这个程序被多个进程所共享,可共享的程序代码叫纯代码或叫可重入代码,在运行过程中不能被改变。(2)数据(data)。进程运行中必需的数据资源,包括对CPU的占用、存储器、堆栈、缓冲区、I/O通道和I/O设备等的需求信息。,(3)进程控制块(Process Control Block/PCB)。系统为进程定义的一种专门的数据结构,用PCB描述进程的运动变化过程,记忆进程的外部特征和与其他进程的联系。PCB与进程一一对应,系统创建一个进程,在系统区就为进程设置一个PCB,再利用PCB对进程进行管理和控制,进程被撤消时,系统就收回它的PCB,进程随之消亡。所以,PCB是进程存在的惟一标志。三者关系:进程的程序和数据比喻为进程的“躯体”,那么PCB便是进程的“灵魂”。,2.进程控制块中的信息,PCB是进程存在的唯一标志。一般包含以下信息:(1)进程标识符:惟一地标识一个进程。内部标识符。在所有的操作系统中,都为每一个进 程赋予一个惟一的数字标识符,它通常是一个进程的序号。主要是为了方便系统使用。外部标识符。由创建者提供,通常由字母、数字组成,往往是用户(进程)在访问该进程时使用。为了描述进程的家族关系,还应设置父进程标识及子进程标识。此外,还可设置用户标识,以指示拥有该进程的用户。,(2)位置信息:进程的程序和数据部分在内存或外存中的物理位置。(3)状态信息:进程当前的状态(4)进程的优先级。(5)进程现场保护区:进程状态改变时,保存当时的cpu现场到内存中。(6)资源清单:除了内外存,还有其他资源,如I/O设备(7)队列指针或链接字:链接处于同一状态的进程(8)其它。根据os的不同,pcb具有的内容不同,3.进程控制块的组织方式,一个系统通常可有数十个、数百个甚至数千个PCB,为了对他们有效管理,应当用适当的方式将他们组织起来。1)线性表方式:,PCB线性表示意图,2)链接方式,具有同一状态的PCB用链接字连接成一个队列,就绪队列(优先级),若干阻塞队列(阻塞原因不同),空白队列,PCB链接队列示意图,3)索引方式,按索引方式组织PCB,根据进程状态建立索引表,并将索引表在内存的首地址记录在内存的一些专用单元中,每个索引表的表目中,记录相应状态的某个PCB在PCB表中的位置。,2.1.4 进程的状态,代表进程生命周期的三种基本状态:运行/执行(running)、就绪(ready)和等待/阻塞(waited或blocked)状态,此外还有停止(stop)状态、死锁(deadlock)状态等。运行状态:进程的物理运行。就绪和等待状态:进程的逻辑运行。停止状态:进程无需再运行。死锁状态:进程无法执行。,进程在某个时刻总是处于某种状态,随着进程自身的推进和外界条件的变化,进程的状态也随之变化。,进程的三种基本状态及其转换,(1)就绪运行(2)运行就绪(3)运行等待(4)等待就绪,具有挂起状态的进程状态图,2.2 进程控制,2.2.1 创建进程(create)2.2.2 停止进程(halt)2.2.3 挂起进程(suspend)2.2.4 激活进程(activate)2.2.5 阻塞进程(block)2.2.6 唤醒进程(wakeup),进程状态转换原语,进程的控制指操作系统必须提供某种机制,来创建一个新进程、撤消一个已经结束运行的进程、改变进程状态、实现进程之间的通信。通过OS内核中的原语来实现的。所谓“原语”,指由若干条机器指令构成的并用以完成特定功能的一段程序,这段程序在执行期间是不可分割的。,进程:系统进程;用户进程系统进程:系统活动构成的进程,程序实体是在管态下执行的操作系统程序,所有的系统进程构成一个系统进程族。系统初启时,创建一个系统总控进程。由总控进程创建其他系统进程或常驻内存的系统进程。系统进程一旦创建便参与并发运行,直到系统终止,由总控进程撤销所有系统进程。总控进程自行消亡。,2.2.1 创建进程(create),用户进程:一个独立的用户程序活动构成的进程,程序实体是用户程序或在目态下执行的系统程序。一个用户进程族随某个用户活动的开始而动态产生,随用户活动的进行而动态形成,随用户活动的终止而动态消亡。,在分时系统中,合法用户登录时,系统将为该终端用户创建一个进程。在批处理系统中,当作业调度程序按一定的算法调度到某个作业时,系统将该作业调入内存,分配必要的资源,随之为它创建一个进程。运行中的程序提出某种请求,需要系统提供某种服务(如打印服务)时,系统也将为该进程创建一个新进程(如打印进程)。用户进程由于应用的需要,它自己也可以创建一个新进程,以便完成特定的应用任务等等。,引起创建进程的事件,进程家族,一个进程可以创建若干个新进程,新创建的进程又可以创建进程,这个创建过程形成了一种树型结构,显示了进程家族的关系,如图所示。,通常允许一个进程创建和控制另一个进程,前者称为父进程,后者称为子进程。创建父进程的进程称为祖父进程,子进程又可创建孙进程等,形成了一个树型结构的进程家族。左图有1个祖先进程(如进程1)和6个子孙进程(如进程2进程7),祖先进程被撤销后,进程家族随之消亡。,进程创建过程,借助“建立”原语可以创建一个新进程。建立一个新进程的工作包括:(1)申请一个空闲的进程控制块。(2)初始化进程控制块。(3)为新进程分配资源(为新进程的数据集分配内存并初始化;为新进程的程序分配内存并将它装入该程序等)。(4)将新进程插入就绪队列。,思考:一个进程被创建后处于哪种状态?,2.2.2 停止进程(halt),一个进程在正常运行结束时,一般都自动终止,进程由运行状态变成停止状态,这是通过调用“停止”原语实现的。另一方面,进程异常结束时,也会导致进程由运行状态变成停止状态,如:地址越界、保护错误、特权指令错误、运行超时、运算错误、I/O故障或外界进行干预等。,停止一个进程的工作包括:(1)按该进程的标识符,检索PCB队列。(2)终止该进程的运行,设置调度标志以便重新调度。(3)若该进程有子孙进程,则也将它们终止。(4)归还该进程拥有的所有资源。(5)将该进程的进程控制块从PCB队列中移出。,2.2.3 挂起进程(suspend),当发生引起进程挂起的事件(如父进程请求将自己的某个子进程挂起)时,系统将借助“挂起”原语实现,该进程的状态由活动的就绪/等待状态变为静止的就绪/等待状态。挂起一个进程的工作是将该进程的实体(程序和数据集)复制到外存交换区,并释放该进程占用的内存空间。处于挂起状态的进程暂时不能参与CPU的竞争。,2.2.4 激活进程(activate),当发生引起进程激活的事件(如驻留在外存的进程能够获得足够的内存空间)时,系统将借助“激活”原语实现,该进程的状态由静止的就绪/等待状态变为活动的就绪/等待状态。处于激活状态的进程可以参与CPU的竞争。激活一个进程的工作与挂起一个进程的工作相反,在内存需求得到满足后,将该进程的数据集和程序装入内存,如果是静止的就绪进程被装入内存,系统又允许剥夺式进程调度的话,则该静止的就绪进程将成为活动的就绪进程,同时能够与现行进程一起竞争CPU资源。,2.2.5 阻塞进程(block),当发生引起进程阻塞的事件(如正在执行的进程请求系统提供某种服务,并且并未获得满足时。或者进程已经启动了某个I/O设备,并且该操作还未完成时。或者相互合作的进程需要得到另一合作进程的数据资源时),进程无法继续运行,将借助“阻塞”原语,将自身阻塞起来。该进程的状态由运行状态变为等待状态。阻塞一个进程的工作是将该进程插入到等待队列中,再转向进程调度程序重新调度,将CPU分配给另一个就绪进程。,2.2.6 唤醒进程(wakeup),当被阻塞的进程所希望的事件完成(如I/O操作结束或所需要的数据到达),则由相应的进程调用“唤醒”原语唤醒该进程,进程状态由等待状态变为就绪状态。唤醒一个进程的工作与阻塞一个进程的工作刚好相反,首先将该进程从等待队列中移出,将PCB的现行状态变为就绪状态,将该进程送入就绪队列。注意:对于被阻塞的进程应有相应的进程(如相互合作的进程)将其唤醒,否则将有可能长期被阻塞,处于永远的等待状态,无法再运行。,讨论-选择,下列进程状态变化中,()的变化是不可能发生的。A运行-就绪B运行-等待 C等待-运行D等待-就绪,2.3 进程调度,2.3.1 处理器调度级别2.3.2 调度的功能与时机2.3.3 调度方式2.3.4 调度准则,2.3.1 处理器调度级别/层次,在操作系统中,存在许多情况下的调度,如用户提交作业的调度、运行进程的调度、I/O请求的调度、存储空间切换的调度等,调度的方式和原因,以及算法都有不同。通常情况下,处理器调度级别分三级:高级调度、中级调度、低级调度。,处理器三级调度,作业调度,决定哪些位于外存上、处于后备状态的作业调入内存,并为它创建进程,分配必要的资源,准备运行。?接纳多少作业?接纳哪些作业?,进程交换,决定哪些进程可参与竞争CPU。目的:提高内存的利用率和系统的吞吐量操作:换进(唤醒);换出(挂起),进程调度,决定哪个进程可以获得CPU,2.3.2 进程调度的功能与时机,进程调度程序的功能:按照某种调度算法,从就绪进程队列中挑选一个进程,将它移出就绪队列并置成执行态,同时立即启动CPU执行该进程。,启动进程调度的时机,(1)现行进程执行完它的当前CPU时间值(包括现行进程执行完毕而终止。现行进程因等待某个事件而自行阻塞)。此时,CPU将分配给一个新的就绪进程。(2)在采用剥夺调度方式的系统中,发生了某种剥夺事件时(发生了时间片中断。或有比现行进程更高优先级的进程进入了就绪队列)。此时,系统回收现行进程占用的CPU,并重新调度。,2.3.3 调度方式,1.CPU周期的概念一进程在CPU上的一次连续执行过程,被称为该进程的一个CPU周期。通常,当进程需要等待某个事件而进入等待状态时,将终止它的当前CPU周期。当等待事件发生后,进程将开始下一个CPU周期。进程执行完毕进入停止状态时,终止它的最后一个CPU周期。一个进程在它并发运行过程中通常包括若干个离散的、长短不等的CPU周期。例如:P20图2-2中程序1、程序2和程序3并发执行,都有两个CPU周期。当现行进程执行完它的一个CPU周期时,系统应及时把CPU转交给另一个进程去执行它的CPU周期,这样就导致了进程的调度。,2.调度方式,进程调度的方式有两种:剥夺式和非剥夺式。1)剥夺式/抢占式调度当一个进程正在执行,处于它的一个CPU周期期间,系统可基于某种原则,强行剥夺现行进程正占用的CPU,并把CPU分配给另一进程。剥夺式调度的剥夺原则是:(1)优先级原则。(2)短进程优先原则。(3)时间片原则。(4)强制性剥夺。,剥夺式调度通常应用在以下系统中:(1)实时系统。(2)分时系统。(3)需要及时响应的系统。(4)给予优先服务的系统。,2)非剥夺式/非抢占式调度,当一个进程获得CPU后,除非它因某种原因阻塞或者运行完毕,系统不能从该进程夺走CPU控制权。即现行进程完成它的当前CPU周期后,系统才重新调度。例2-1 p29,2.3.4 调度准则,如图2-9所示,一旦高级调度程序(作业调度程序)从后备作业中选择了一个作业来运行,系统就要为作业建立一组进程,这组进程并发执行,都在等待获得CPU资源,进程调度程序合理地把CPU分配给就绪队列中的某个进程,并使该进程投入运行。当正在运行的进程运行完毕,或时间片用完,或具有更高优先级的进程需要CPU时,或进程需要等待某个I/O事件时都必须交出CPU,系统根据一定的调度原则来选择合乎条件的进程投入运行。,进程调度程序根据一定的进程调度算法来调度进程,其调度原则是:(1)尽量提高系统的吞吐量。(2)均衡利用资源,使CPU与外设尽量保持“忙”状态。(3)对所有的作业都应该公平,任何一个作业的完成前都不能被无限延迟。(4)若支持优先级,应对优先级高的进程提供优先服务。,如何衡量一个调度算法的优劣呢?评估标准有:(1)平均周转时间。T完成-T提交或T进入就绪(2)平均带权周转时间。平均周转时间/实际运行时间(3)(进程)平均等待时间。获得cpu时间-T进入就绪,2.4 调度算法,2.4.1 先来先服务算法FCFS2.4.2 最短者优先算法SF2.4.3 最高响应比者优先算法HRRN2.4.4 轮转法RR2.4.5 最高优先级算法HPF2.4.6 多级反馈队列算法RRMF,2.4.1 先来先服务算法(First Come First Service,FCFS),原则是:先来者优先,不考虑其他任何因素(作业长短或优先级等)。按照作业到达系统或进程进入就绪队列的先后顺序来调度,未遇到其他情况时一直运行下去直到完成。FCFS算法本质上是非剥夺式的。优点:简单易行、表面公平。缺点:短作业等待长作业或短进程等待长进程或重要的或紧迫的作业或进程等待不那么重要或紧迫的作业或进程。故FCFS很少用作主调度模式。P31例2,2.4.2 最短者优先算法,最短者优先算法(Shortest process First,SF)原则:作业的估计运行时间的长短、进程的本次CPU周期的长短。优先调度最短者。,提问,1.()进程调度算法最适合分时操作系统采用。A先来先服务B最高优先级 C时间片轮转D随机数2.进程调度程序负责把()分配给进程。A进程控制块B主存空间 C外围设备 D处理器3.CPU的调度方式有哪几种?4.常用的进程调度算法有哪几种?,2.4.4 轮转法(Round Robin,RR),轮转法:属于剥夺式调度算法。原则:公平服务。以时间片S为单位,轮流为各个就绪进程一次分配一个时间片S。RR算法特别适用于分时系统。P34例5关键问题:时间片S的设置。相同时间片和可变时间片,2.4.5 最高优先级算法(Highest Priority First,HPF),原则:高优先级的作业或进程优先获得服务,不管作业或进程的长短等其他因素。广泛采用的一种调度算法。优先级通常用一个整形数来表示,叫做优先数。优先数用于表示作业或进程的重要程度及运行的优先程度等。那么如何设置一个优先级呢?优先级的设置通常分为两种:静态优先级和动态优先级。,静态优先数法在进程创建时就确定了它的优先级(优先数),在进程运行过程中不再动态改变。静态优先级的确定方法:按进程类型确定:系统进程的优先级高于用户进程;进程在核心态下运行的优先级应高于用户态;前台作业的进程优先级应高于后台。按作业的资源要求确定:进程需要资源越多,优先级越低。进程估计运行时间的长短。按作业到达时间确定:FCFS按用户类型和要求确定,动态优先数法,进程创建时根据系统资源的使用情况和进程的当前特性确定一个初始优先数,在进程运行过程中,再根据系统情况的变化动态调整进程的优先级。一般,占用CPU时间越长的进程优先级会变低,等待CPU时间越长的进程优先级会变高,2.4.6 多级反馈队列算法(Round Robin with Multiple-level Feekback,RRMF),多级反馈队列算法是FCFS、RR和HPF三者结合而形成的一种进程调度算法。它的基本思想是:(1)设置多个就绪队列,并为每一个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余队列优先级逐个降低,最后一个队列优先级最低。(2)赋予各个队列中的进程不同的时间片。规定优先级最高的队列中的进程的时间片最短,优先级低的队列中的进程时间片相对较长,通常是前一个队列的时间片的两倍。,(3)第一个队列按RR调度,其余队列按FCFS调度。(4)当第一队列空闲时,进程调度程序才调度第二队列中的进程,其余类推。(5)当正在运行的进程发生时间片中断时,其优先级被降低。(6)当正在运行的进程被优先级高的进程剥夺时,则现行进程进入本级队列的队尾。,例:多队列轮转法,系统中设置三个就绪队列,其时间片长度可分别规定为0.02s,0.2s,2s。在0.02s就绪队列,若一个进程运行了0.02s后尚未结束,则进入0.2s队列的末尾。当0.02s队列中的每一个进程都轮转了一次后,便调度0.2s的第一个进程,接着依次执行,如果分得的0.2s的时间仍未运行结束,则该进程进入2s就绪队列的队尾。对2S的队列则采用循环轮转法。,在上述方法中,只有前一队列中没有进程可以调度时,才选择下一队列中的进程占用处理机。于是,短作业能够较快地占用处理机,长作业一旦占用处理机,就可以使用较长时间,避免了因频繁调度而增加系统开销。,补充:进程和程序的区别:,进程是程序的一次执行,属于一种动态概念,而程序是一组有序的指令,是一种静态概念。但是进程离开了程序也就失去了存在的意义。因此,可以这样说,进程是程序执行的动态过程,而程序是进程运行的静态文本。一个进程可以执行一个或几个程序;反之,同一程序可能由几个进程同时执行。程序可以作为一种软件资源长期保留,而进程是程序的一次执行,是暂时的,也就是说,进程具有生命期。进程由“创建”而产生,因“调度”而运行,因得不到资源而阻塞,因“撤销”而死亡。,进程具有并发性,它能与其它进程并发运行。而一般的程序不具有这种明显的特性。进程是一个独立的运行单位,也是系统进行资源分配和调度的一个独立单位。因此,进程具有其独立性,另一方面进程间又具有相互制约性,这种特性表现在进程之间的同步与互斥。(上面所讲的进程,是在没引进线程的情况下而言)例,2.5 线程概念,2.5.1 线程的引入2.5.2 线程的描述2.5.3 线程的模式,2.5.1 线程的引入,为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么样的系统应该选用多线程?,为使程序能并发执行,系统内必须进行以下的一系列操作。1)创建进程 2)撤消进程 3)进程切换 为此花费不少CPU时间和内存空间,即把进程作为系统调度的基本单位要付出较大的时空开销,从而也限制了系统中进程的数量和进程切换的频率,即限制并发度的提高。为了提高系统的并行能力,把并行粒度进一步减小,在进程内又引入了线程的的概念,时间开销:进程的切换在进程调度中是经常的,保存各自的PWS。空间开销:以UNIX为例当一个进程创建一个子进程时,系统必须把父进程的地址空间的所有内容都拷贝到子进程的地址空间中去。对于大地址空间来说,这样的操作是很费时的,更何况两进程还要建立共享数据。,举例:,采用线程实现并行:共享进程的同一地址空间以及其它资源。在引入线程的OS中,线程是系统调度的基本单位,而不是独立分配资源的基本单位,使之轻装运行,而对拥有资源的基本单位又不频繁地对其切换。这样引入了线程概念后,即减少了系统的时空开销又增强了系统的并行处理能力。,2.5.2 线程的描述,1.线程的定义:线程是进程内的一个执行单位,是CPU调度的基本单位。引进线程的OS负责处理机调度的程序称为线程调度程序。没引进线程的OS负责处理机调度的程序称为进程调度程序,进程被定义为具有一定功能的程序在某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。,线程:,有执行状态(状态转换)不运行时保存上下文有一个执行栈有一些局部变量的静态存储可存取所在进程的内存和其他资源可以创建、撤消另一个线程,2.进程和线程的关系,线程是进程的一个组成部分。每个进程在创建时通常只有一个线程,需要时这个线程再创建其它线程。进程的多线程都在进程的地址空间活动。拥有资源的基本单位是进程,处理机调度的基本单位是线程。真正在处理机上运行的是线程。进程之间可以并发执行,线程之间也可以实现并发执行,有效地提高了系统资源的利用率和系统吞吐量。一个进程可以有多个线程,而且至少有一个可执行线程。,2.5.3 线程的模式,在 Win32 环境中,线程有三种基本模式:单线程、单元线程和自由线程。1.单线程单线程仅包含与应用程序进程对应的线程。进程可以被定义为应用程序的实例,拥有该应用程序的内存空间。大多数 Windows 应用程序都是单线程的,即用一个线程完成所有工作。,2.单元线程单元线程是一种稍微复杂的线程模式。标记用于单元线程的代码可以在其自己的线程中执行,并限制在自己的单元中。线程可以被定义为进程所拥有的实体。在单元线程模式中,所有线程都在主应用程序内存中各自的子段范围内运行。此模式允许多个代码实例同时但独立地运行。例如:在.NET之前,Visual Basic 仅限于创建单元线程组件和应用程序。,3.自由线程自由线程是最复杂的线程模式。在自由线程模式中,多个线程可以同时调用相同的方法和组件。与单元线程不同,自由线程不会被限制在独立的内存空间。当应用程序必须进行大量相似而又独立的数学计算时,可能需要使用自由线程。,2.6 多处理器系统,20世纪70年代出现了多处理器系统(Multi-processor System,MPS),试图从计算机体系结构上来改善系统的性能。前面我们所学习的是单处理器环境下的进程调度。当系统中有多个处理器时,进程的调度就变得复杂多了。多处理器系统有2种类型:对称的多处理器系统和非对称的多处理器系统。每种类型都有不同的特点和优势。,对称式多处理器系统,在对称式多处理器系统中,系统资源,如存储器和磁盘I/O被系统中的所有微处理器共享,工作负载被均匀地分配到所有可用处理器上,从而避免对某些特定任务,一些处理器太忙,而另一些处理器却闲着的情况发生。,非对称式多处理器系统,在非对称式多处理器系统中,任务和系统资源由不同的微处理器进行管理。例如:一个处理器处理I/O,而另一个处理器处理网络操作系统任务。非对称式多处理器系统不进行负载平衡。一个微处理器可能忙碌不堪,而另一个处理器却可能空闲无事。而对称式多处理器系统可以均匀地分配工作负载。,小结,进程是操作系统中独立运行的单位,也是操作系统中最重要的概念之一。进程是程序关于某个数据集合的可并发的一次运行活动。简单地说,进程是“执行中的程序”,它具有动态性、并发性、异步性、独立性和结构性特点。,