浙江大学操作系统课件,徐宗元2

上传人:新** 文档编号:570633862 上传时间:2024-08-05 格式:PPT 页数:58 大小:596.50KB
返回 下载 相关 举报
浙江大学操作系统课件,徐宗元2_第1页
第1页 / 共58页
浙江大学操作系统课件,徐宗元2_第2页
第2页 / 共58页
浙江大学操作系统课件,徐宗元2_第3页
第3页 / 共58页
浙江大学操作系统课件,徐宗元2_第4页
第4页 / 共58页
浙江大学操作系统课件,徐宗元2_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《浙江大学操作系统课件,徐宗元2》由会员分享,可在线阅读,更多相关《浙江大学操作系统课件,徐宗元2(58页珍藏版)》请在金锄头文库上搜索。

1、第二课第二课 进程的描述和控进程的描述和控制制(Process Description and Control)教学目的:本课为描述程序并发执行引入进程的概念,描述进程的特征、状态、状态的转换、进程控制块等基本概念。描述控制进程状态转换的OS内核和进程控制原语的功能。并发性是OS最重要的特征,进程是OS最基本最重要的概念,进程管理是OS的重点和难点。教学要求:教学要求:熟悉进程引入的必要性;熟练掌握进程的定义和特征,熟练掌握进程的三个基本状态、状态的转换和状态转换的关系,熟练掌握进程存在的唯一实体-进程控制块,熟悉进程上下文。熟悉内核的功能,掌握增加“挂起”、 “激活”操作的五个状态图和状态的

2、转换,熟悉创建、撤消、阻塞、唤醒、挂起和激活进程控制原语的功能,了解线程的概念、引入线程的好处和线程的应用 。了解模块接口法、层次结构法和客户服务器结构三种操作系统结构, WindowsNT框架图 。(一)(一)进程的引入进程的引入(1)程序顺序执行程序顺序执行( (Sequential ExecutionSequential Execution) )与特征与特征 一个较大的程序通常都由若干个程序段组成,程序在执行时,各程序段必须按照先后次序逐个执行。程序各程序段先后执行次序关系可用前趋图表示。前趋图(前趋图(Predecessor Graph)是一个有向无循环图,图由结点和结点间有向边组成,

3、结点代表各程序段操作,而结点间的有向边表示两程序段操作之间存在的前趋关系(“”)。两程序段Pi和Pj的前趋关系表示成Pi Pj,Pi是Pj的前趋,Pj是Pi的后继。 P1C1I1 I2C2P2进程的引入进程的引入-1程序顺序执行特征程序顺序执行特征: 顺序性顺序性:程序各程序段严格按照规定的顺序执行。 封闭性封闭性:程序运行时机内各资源只受该程序控制而改变,执行结果不受外界因素影响。 可再现性可再现性:只要程序执行环境和初始条件相同,程序多次执行,可获得相同结果。(2)程序并发执行程序并发执行( (Concurrent ExecutionConcurrent Execution) )与特征与特

4、征 在计算机系统支持并行操作时,如采用多道程序设计技术,则内存中多道程序处于并发执行状态。如上述有三个程序段的作业类,虽然每个作业有前趋关系的各程序段不能在系统CPU和输入输出各部件并行执行,但一个作业没有前趋关系的程序段或不同作业的程序段可以分别在CPU和各输入输出部件上并行执行。进程的引入进程的引入-2 四个上述三个程序段类的作业并发执行的前趋图如下图所示:C3I1I2I3I4C1C2C4P1P2P3P4进程的引入进程的引入-3程序并发执行特征程序并发执行特征:间断性间断性:程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,使在并发程序之间形成了相互制约的关系。相互制约将导致

5、并发程序具有“执行-暂仃-执行”这种间断性活动规律。失去封闭性失去封闭性:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。不可再现性不可再现性:程序在并发执行时,由于失去了封闭性,也将导致失去结果的可再现性。即程序经过多次运行,虽然其各次的环境和初始条件相同,但得到的结果却各不相同。例:例:观察者/报告者进程的引入进程的引入-4观察者: 报告者:begin begin repeat repeat wait a car go through delay a time N=N+1; Print N ; N=0 ; until u

6、ntilend end初始N=n时不同执行序列: N=N+1; Print N; Print N ; Print N ; N=0 ; N=N+1 ; N=0 ; N=N+1 ; N=0 ;结果各不相同: 打印n+1,N=0; 打印n,N=1; 打印n,N=0;(3)进程的引入进程的引入 由于程序在并发执行时,各次执行的结果不同,所以用“程序”这个概念已无法描述程序的并发执行,所以必须引入新的概念-进程来描述程序的并发执行。进程这一术语最早由麻省理工学院著名的操作系统MULTICS中提出。 进程进程( (Process)定义:定义:“可并发执行的程序在一个数可并发执行的程序在一个数据集合上的运行

7、过程据集合上的运行过程”。进程的特征进程的特征:动态性动态性:动态性是进程的最基本特征,它是程序执行过程,它是有一定的生命期。它由创建而产生、由调度而执行,因得不到资源而暂仃,并由撤消而死亡。而程序是静态的,它是存放在介质上一组有序指令的集合,无运动的含义。进程的引入进程的引入-1-1并发性并发性:并发性是进程的重要特征,同时也是OS的重要特征。并发性指多个进程实体同存于内存中,能在一段时间内同时运行。而程序是不能并发执行。独立性独立性:进程是一个能独立运行的基本单位,即是一个独立获得资源和独立调度的单位,而程序不作为独立单位参加运行。异步性异步性:进程按各自独立的不可预知的速度向前推进,即进

8、程按异步方式进行,正是这一特征,将导致程序执行的不可再现性,因此OS必须采用某种措施来限制各进程推进序列以保证各程序间正常协调运行。结构特征结构特征:从结构上,进程实体由程序段、数据段和进程控制块三部分组成,UNIX中称为“进程映象”。(练习)(二)(二)进程的描述进程的描述(1)进程状态及其转换进程状态及其转换 ( (Process State and Transition) )1. 进程的三个基本状态进程的三个基本状态运行态(运行态(RunningRunning):):当一个进程在处理机上运行时,则称该进程处于运行状态。就绪态(就绪态(ReadyReady):):一个进程获得了除处理机外的

9、一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。阻塞态(阻塞态(BlockedBlocked):):(又称挂起状态、等待状态):一个进程正在等待某一事件发生(例如请求IO而等待IO完成等)而暂时仃止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。进程的描述进程的描述-1 运 行 态 就 绪 态 阻 塞 态进程调度时间片已用完等待某一事件发生等待事件已发生2.2.进程状态的转换进程状态的转换三个基本状态之间可能转换和转换原因如下:l就绪态就绪态运行态运行态:当处理机空闲时,进程调度程序必将处理机分配给一个处于就绪态的进程 ,该进程便由就绪态转换为运行态。l运行态

10、运行态阻塞态阻塞态:处于运行态的进程在运行过程中需要等待某一事件发生后(例如因IO请求等待IO完成后),才能继续运行,则该进程放弃处理机,从运行态转换为阻塞态。l阻塞态阻塞态就绪态就绪态:处于阻塞态的进程,若其等待的事件已经发生,于是进程由阻塞态转换为就绪态。l运行态运行态就绪态就绪态:处于运行状态的进程在其运行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,于是进程由运行态转换为就绪态。而阻塞态运行态和就绪态阻塞态这二种状态转换不可能发生。3.3.系统中各进程状态的分布和管理系统中各进程状态的分布和管理处于运行态进程:如系统有一个处理机,则在任何一时刻,最多只有一个进程处

11、于运行态。处于就绪态进程:一般处于就绪态的进程按照一定的算法(如先来的进程排在前面,或采用优先权高的进程排在前面)排成一个就绪队列。处于阻塞态进程:处于阻塞态的进程排在阻塞队列中。由于等待事件原因不同,阻塞队列也按事件分成几个队列。系统中各进程状态的分布和管理系统中各进程状态的分布和管理-1-1系统中各进程状态的分布:系统中各进程状态的分布:(例:一个只有一个处理机的系统中,OS的进程有运行、就绪、阻塞三个基本状态。假如某时刻该系统中有10个进程并发执行,在略去调度程序所占用时间情况下试问:这时刻系统中处于运行态的进程数最多有几个?最少有几个?这时刻系统中处于就绪态的进程数最多有几个?最少有几

12、个?这时刻系统中处于阻塞态的进程数最多有几个?最少有几个?解:因为系统中只有一个处理机,所以某时刻处于运行态的进程数最多只有一个。而最少可能为0,此时其它10个进程一定全部排在各阻塞队列中,在就绪队列中没有进程。而某时刻处于就绪态的进程数最多只有9个,不可能出现10个情况,因为一旦CPU有空,调度程序马上调度,当然这是在略去调度程序调度时间时考虑。处于阻塞态的进程数最少是0个。 (练习)4。系统中各进程状态转换影响系统中各进程状态转换影响运行 运行 阻塞就绪阻塞就绪A进程B进程运行 运行 阻塞就绪阻塞就绪C进程D进程系统中各进程状态转换影响系统中各进程状态转换影响-1-1在一个多道程序设计的系

13、统中,各进程状态转换会互相影响。例如系统中一个运行态的进程A发生I/O请求后要等待I/O完成,它的状态也由运行态转换为阻塞态,此时进程调度程序就会按照一定的算法,在就绪队列中选一个进程B,将处理机分给它,该B进程的状态也由就绪态转换为运行态。如一个进程C等待的事件完成,则它的状态由阻塞态转换为就绪态,它也从阻塞队列中抽出插入就绪队列中。如进程 C从阻塞态转换为就绪态时,有一个进程D在CPU上运行。而系统采用抢占式调度算法,进程C的优先级又高于正在CPU上运行的进程D的优先级,则要发行抢占调度。即接下去的操作时由进程调度程序将正在运行的进程D由运行态转换为就绪态,插入就绪队列。 (练习)Fig.

14、2.5 Five-State Process ModelFig.2.5 Five-State Process ModelReleaseNewReadyRunningExitBlockedAdmitEventOccursDispatchTime-outEventWait(2)进程控制模块进程控制模块 PCB(Process Control Block)1进程控制块的作用进程控制块的作用进程存在的唯一实体进程存在的唯一实体 由于进程控制块中记录进程存在和特性信息;PCB与进程同生死,创建一个进程就是为其建立一个PCB,当进程被撤消时,系统就回收它的PCB;OS对进程的控制要是根据PCB来进行,对进

15、程管理也通过对PCB管理来实现,所以进程控制块是进程存在的唯一实体。2. PCBPCB的信息的信息进程标识符:它用于唯一地标识一个进程。它有外部标识符(由字母组成,供用户使用)和内部标识符(由整数组成,为方便系统管理而设置)二种。(进程调度信息:它包括进程状态(running、ready、blacked)、队列(就绪、阻塞队列)、队列指针,调度参数:进程优先级、进程已执行时间和已等待时间等。进程控制模块(进程控制模块(PCB)-1(处理机状态信息:它由处理机各种寄存器(通用寄存器、指令计数器、程序状态字PSW、用户栈指针等)的内容所组成,该类信息使进程被中断后重新执行时能恢复现场从断点处继续运

16、行。(进程控制信息:它包括程序和数据的地址、IO资源清单,保证进程正常运行的同步和通信机制等。(家族信息:它包括该进程的父、子进程标识符、进程的用户主等。UNIX的PCB由Proc和user两个结构组成,proc常驻主存的系统区,是PCB中最基本和常用信息,而user可根据需要换进换出。(练习)(3 3)进程上下文进程上下文( (Process ContextProcess Context) ) 进程是由程序、数据和进程控制块组成。进程上下文实际上是执行活动全过程的静态描述。具体说,进程上下文包括系统中与执行该进程有关的各种寄存器(例如:通用寄存器、程序计数器PC、程序状态寄存器PS等)的值,

17、程序段在经编译之后形成的机器指令代码集(或称正文段)、数据集及各种堆栈值和PCB结构,如下图所示。 P C B 各种控制表指针 各种寄存器正文集数据集栈区(4)UNIX进程结构进程结构进程上下文:指进程的用户地址空间内容、寄存器内容及与进程相关的核心数据结构;包括三部分上下文:用户级、寄存器级、系统级用户级上下文:正文段即代码(text);数据段(data);栈段(user stack):用户态执行时的过程调用;共享存储区(shared memory)把地址空间的段称为区(region):进程区表和系统区表(前者索引指向后者)系统上下文:proc结构:总在内存,内容包括阻塞原因;user结构:

18、可以调出到外存,进程处于执行状态时才用得着,各种资源表格;进程区表:从虚拟地址到物理地址的映射;核心栈:核心态执行时的过程调用的栈结构;(5)UNIX进程进程状态转换状态转换注意:状态“被抢先”与“内存就绪”的地位相同,要等到下一次进程调度时,才能回到“用户态执行”。(三)进程控制(三)进程控制 (Process Control )(1)内核内核(Kernel)1. CPUCPU对对OSOS保护模式支持保护模式支持 Intel公司的80386及更高级的CPU可以提供程序代码4层不同等级的权力,包括有Ring0-3。Ring0拥有最高的运行优先权,它访问所有系统内存和所有的CPU指令,而Ring

19、1-3访问权限受到不同限制。Windows 98/NT为了与基于RISC的结构上兼容只使用两个特权级别:Ring0和Ring3。2. 核心态和用户态核心态和用户态 为了防止用户应用程序访问和或更改重要的操作系统数据,Windows98/NT、UNIX使用两种处理器访问模式:核心态和用户态。操作系统代码在核心态下运行,即在X86处理器Ring0运行,它有着最高的特权。而用户应用程序代码在用户态下运行,即在X86处理器Ring3中运行。Protection on the PentiumLevel内核内核-1 用户应用程序(在Windows98/NT中以用户线程方式出现)运行用户程序一般代码时,它是

20、在用户态下执行。但当程序要调用系统服务,例如要调用OS中负责从磁盘文件中读取数据的NT执行体例程时,它就要通过一条专门的指令(系统调用)来完成从用户态切换到核心态,OS根据该指令及有关参数,执行用户的请求服务。在服务完成后将处理器模式切换回用户态,并将控制返回用户线程。因此用户线程有时在核心态下执行,在核心态下执行的是调用操作系统有关功能模块的代码。3. 原语(原语(PrimitivePrimitive) 原语是一种特殊的广义指令,它的功能是由系统通过一段不可分割的指令操作来完成,它又称原子操作,原语在核心态下完成。进程控制操作(创建、撤消、阻塞)大都为原语操作。内核内核4. 4. 内核功能内

21、核功能 内核是计算机硬件上的第一层扩充软件,它是OS中关键部分,它是管理控制中心。内核在核心态下运行,常驻内存,内核通过执行各种原语操作来实现各种控制和管理功能。 内核为OS其它模块提供最基本的支撑功能,对中断进行“必要和有限的”处理,时钟管理和原语操作。同时完成进程(处理器)、存储器和设备各种资源基本管理功能。5. 5. 内核和裸机构成虚拟机的属性内核和裸机构成虚拟机的属性l虚拟机没有中断,即进程无需响应中断。l虚拟机为每个进程提供一台虚拟机。虚拟机为每个进程和用户提供功能强大的指令系统,它包括机器指令和原语。操作系统代码的执行OS和进程的关系:OS不作为进程地址空间的一部分:传统方法。OS

22、作为进程地址空间的一部分:如UNIXOS功能分别在核心和系统服务进程中,只有OS核心作为进程地址空间的一部分:如Windows NT通常,OS核心不是一个进程,其执行不被调度。(2)(2)进程状态的细化进程状态的细化1. “挂起挂起”、 “ “激活激活”操作的引入操作的引入 系统管理员有时需要暂仃某个进程,以便排除系统故障或暂时减轻系统负荷,用户有时也希望暂仃自己的进程以便检查自己作业的中间结果。这就希望系统提供“挂起”操作,暂仃进程运行,同是也要提供“激活”的操作,恢复被挂起的进程。由于被挂起前进程的状态有三种,挂起后的进程就分为二种状态:静止就绪态和静止阻塞态(有的称挂起就绪态和挂起阻塞态

23、)。挂起前的进程就绪态和阻塞态也改为活动就绪态和活动阻塞态。当进程处于运行态和活动就绪态时,执行挂起操作,进程状态转换为静止就绪态。当进程处于活动阻塞态时,执行挂起操作,进程状态转换为静止阻塞态。对被挂起的进程施加“激活”操作,则处于静止就绪的进程转换为活动就绪态,处于静止阻塞态的进程转换为活动阻塞态。被挂起的处于静止阻塞态的进程当它等待的事件发生后,它就由静止阻塞态转换为静止就绪态。具有以上五个状态和新增“挂起”、“激活”两个操作的进程状态图见下图所示。2. 2. 五个状态进程状态图五个状态进程状态图撤消活动就绪静止就绪活动阻塞 运行静止阻塞创建阻塞唤醒挂起激活撤消撤消撤消进程调度时间片到(

24、3)(3)进程控制原语进程控制原语创建原语创建原语( (Create)Create) 一个进程可借助创建原语来创建一个新进程,该新进程是它的子进程,创建一个进程主要是为新进程创建一个PCB。创建原语首先从系统的PCB表中索取一个空白的PCB表目,并获得其内部标识,然后将调用进程提供的参数:如外部名、正文段、数据段的首址、大小、所需资源、优先级等填入这张空白PCB表目中。并设置新进程状态为活动静止就绪态,并把该PCB插入到就绪队列RQ中,就可进入系统并发执行。撤消原语(撤消原语(DestroyDestroy)/ / 终止(终止(TerminationTermination) 对于树型层次结构的进

25、程系统撤消原语采用的策略是由父进程发出,撤消它的一个子进程及该子进程所有的子孙进程,被撤消进程的所有资源(主存、I/O资源、PCB表目)全部释放出来归还系统,并将它们从所有的队列中移去。如撤消的进程正在运行,则要调用进程调度程序将处理器分给其它进程。进程控制原语进程控制原语-1-1阻塞原语(阻塞原语(blockblock) 当前进程因请求某事件而不能执行时(例如请求IO而等待IO完成时),该进程将调用阻塞原语阻塞自己,暂时放弃处理机。进程阻塞是进程自身的主动行为。阻塞过程首先立即仃止原来程序的执行,把PCB中的现行状态由运行态改为活动阻塞态,并将PCB插入到等待某事件的阻塞队列中,最后调用进程

26、调度程序进行处理机的重新分配。唤醒原语(唤醒原语(wakeupwakeup) 当被阻塞的进程所期待的事件发生时(例如IO完成时),则有关进程和过程(例如IO设备处理程序或释放资源的进程等)调用wakeup原语,将阻塞的进程唤醒,将等待该事件的进程从阻塞队列移出,插入到就绪队列中,将该进程的PCB中现行状态,如是活动阻塞态改为活动就绪态,如是静止阻塞态改为静止就绪态。进程控制原语进程控制原语-2-2挂起原语(挂起原语(suspendsuspend) 调用挂起原语的进程只能挂起它自己或它的子孙,而不能挂起别的族系的进程。挂起原语的执行过程是:检查要挂起进程PCB的现行状态,若正处于活动就绪态,便将

27、它改为静止就绪态;如是活动阻塞态则改为静止阻塞态。如是运行态,则将它改为静止就绪态,并调用进程调度程序重新分配处理机。为了方便用户或父进程考察该进程的运行情况,需把该进程的PCB复制到内存指定区域。激活原语(激活原语(activeactive) 用户进程或父进程通过调用激活原语将被挂起的进程激活。激活原语执行过程是:检查被挂起进程PCB中的现行状态,若处于静止就绪态,则将它改为活动就绪态,若处于静止阻塞态,则将它改为活动阻塞态。 (解)(4)讨论讨论1. 执行原语的进程和原语操作的进程间的关系原语 执行原语的进程 原语操作的进程创建 父 子撤消 父 子、孙阻塞 自己 自己唤醒 其它 它挂起 父

28、 自己或子、孙激活 父 子、孙2. 抢占式调度 假如采用抢占式调度策略,则每当有新进程进入就绪队列时,例如执行唤醒原语,被唤醒进程从活动阻塞态转为活动就绪态时,或者执行激活原语,被激活进程从静止就绪态转为活动就绪态时,应检查是否要进行重新调度。即由调度程序将激活的进程(或唤醒的进程)与当前运行进程进行优先级比较,如果被激活的进程的优先级更高,则剥夺当前进程的运行,把处理机分配给刚激活的进程,否则就不必重新调度。 (四)(四)线程线程(Threaded)概念概念(1 1)线程的引入)线程的引入 作为并发执行的进程具有二个基本的属性:进程既是一个拥有资源的独立单位,它可独立分配虚地址空间、主存和其

29、它,又是一个可独立调度和分派的基本单位。这二个基本属性使进程成为并发执行的基本单位。在一些OS中,象大多数UNIX系统等,进程同时具有这二个属性。而另一些OS中,象WindowsNT、Solaris、OS2、Mac OS等,这二个属性由OS独立处理。为了区分二个属性 ,资源拥有单元称为进程(或任务),调度的单位称为线程、又称轻进程(light weight process)。线程只拥有一点在运行中必不可省的资源(程序计数器、一组寄存器和栈),但它可与同属一个进程的其它线程共享进程拥有的全部资源。线程定义为进程内一个执行单元或一个可调度实体。(2 2)多线程)多线程( (Multithreadi

30、ng) )多线程是OS在一个进程内支持多个线程的能力。 进程控制块PCB用户地址空间线程控制块TCB用户栈核心栈线程控制块TCB用户栈核心栈线程控制块TCB用户栈核心栈 多线程进程模块 线程A 线程B 线程C(2 2)多线程)多线程( (Multithreading) )多线程是OS在一个进程内支持多个线程的能力。 多线程进程模块 线程A 线程B 线程C进程控制块PCB用户地址空间线程控制块TCB用户栈核心栈线程控制块TCB用户栈核心栈线程控制块TCB用户栈核心栈Single Threaded and Multithreaded Process ModelsUserStackKernelSta

31、ckUserAddressSpaceProcessControlBlockSingle-ThreadedProcess ModelUserStackThreadControlBlockKernelStackThreadMultithreaded Process ModelUserAddressSpaceProcessControlBlockThreadControlBlockUserStackKernelStackThreadThreadControlBlockUserStackKernelStackThread多线程多线程-1-1一个进程定义为保护的单元和资源分配的单元,与一个进程有关的是:

32、保存进程映象的虚地址空间;对处理器、其它进程、(如进程通信)、文件和IO资源受保护的存取。在一个进程内有多个线程,与一个线程有关的是: 一个线程的执行状态(运行、就绪);当不运行时保存一个线程的内容:一个独立的程序计数器;一个执行的栈;每个线程的一些局部变量的静态存贮;和这个进程的其它线程共享对这个进程的存贮器和资源的存取。(3)线程和进程间关系线程和进程间关系(Relationship Relationship Between Threads and ProcessesBetween Threads and Processes)(4)线程的分类线程的分类内核维护进程和线程的上下文信息;线程切

33、换由内核完成;一个线程发起系统调用而阻塞,不会影响其他线程的运行。时间片分配给线程,所以多线程的进程获得更多CPU时间。依赖于OS核心,由内核的内部需求进行创建和撤销,用来执行一个指定的函数。Windows NT和OS/2支持内核线程;1.核心级(系统级)线程(kernel-level thread)2.用户级线程(user-level thread)用户线程的维护由应用进程完成;内核不了解用户线程的存在;用户线程切换不需要内核特权;用户线程调度算法可针对应用优化;不依赖于OS核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。如:数据库系统informix,图形处理A

34、ldus PageMaker。调度由应用软件内部进行,通常采用非抢先式和更简单的规则,也无需用户态/核心态切换,所以速度特别快。一个线程发起系统调用而阻塞,则整个进程在等待。时间片分配给进程,多线程则每个线程就慢。(5)多线程模型Multithreading Models1.多对一多对一Many-to-One Examples : Green threads - a thread library available for Solaris 2 2.一对一一对一One-to-OneExamples: Windows 95/98/NT/2000, OS/23.多对多多对多Many-to-ManyE

35、xamples:Solaris 2 ,Windows NT/2000 with the ThreadFiber package,IRIX,HP-UX,Tru64 UNIX多对一模型一对一模型多对多模型(6 6) WindowsNTWindowsNT/2000/2000的基元成分的基元成分对象对象( (object)object)、进程进程( (process)process)、线程线程( (Thread)Thread) 对象、进程、线程是WindowsNT三个基元成份,它们之间有互相交叉的关系。对象对象是一个抽象的数据结构,在WindowsNT中用以表示广义的所有资源。它是构成OS的三个基元成

36、份中非活动的成份,对象是数据和有关操作的封装体,它包装数据、数据的属性以及可以施加于数据的操作等三个成份。事物抽取其共性可以划分为类。实际上具有相同特性的对象也可归为一个对象类,在软件设计中定义了对象类(称为类Class),而对象则是对象类一个具体实现的示例。对象作为抽象数据而封装在其内部的操作函数所提供的操作也给人活动成份的感觉,但是从操作系统这一角度来认识,对象是构成操作系统的非活动成份。而进程和线程则是构成OS的两个活动成份。WindowsNTWindowsNT/2000/2000的基元成分的基元成分 对象、进程、线程对象、进程、线程-1-1WindowsNTWindowsNT中进程进程

37、被定义为表示OS所要做的工作,是OS用于组织其必须完成诸工作的一种手段。NT中的进程由一个可执行的程序、一个私用的虚地址空间、系统资源和至少一个执行线程等四部分组成NT的进程概念与传统OS进程概念有所不同,NTNT进程是作为对进程是作为对象来实现象来实现,因此从广义角度来说,进程也是共享的资源(多个用户进程可共享服务器进程提供的服务)。NT定义了一个进程对象类,进程的对象类的对象体和所包含的属性定义了进程对象的数据及其属性和施加其上的操作(服务)(进程对象体属性见下页),但描述进程组成的两个主要部分进程地址空间和局限于进程的对象表,不包含在属性表中,因为它是附属的、不可见的。NT进程要求一个独

38、特的组成成分至少一个执行线程,这在传统OS中是没有的。NT进程的组成中没有进程控制块,有关进程的信息在进程对象的对象体中以及局限于进程的对象表中。Windows NT Process Object AttributesProcess IDSecurity DescriptorBase priorityDefault processor affinity(亲合关系亲合关系亲合关系亲合关系) )Quota limits(配额配额)Execution timeI/O countersVM operation countersException/debugging portsExit status N

39、T进程结构WindowsNTWindowsNT/2000/2000的基元成分的基元成分 对象、进程、线程对象、进程、线程-2-2NTNT的线程线程是进程内的一个执行单元,是进程内的一个可调度实体。一个线程是由唯一的标识符客户ID、描述处理器状态的一组状态寄存器的内容、用户栈和核心栈、一个私用存贮器等四部分组成,线程也是作为对象来实现,线程对象体属性见下页。每个进程创建时只有一个线程,需要时这个线程创建其它线程。线性是进程的一个组成部分,一个NT进程可以有多个线程在其地址空间内执行。资源分配的单位是进程,调度和执行的基本单位是线程。Windows NT Thread Object Attribu

40、tesThread IDThread contextDynamic priorityBase priorityThread processor affinityThread execution timeAlert statusSuspension countImpersonation tokenTermination portThread exit status就绪状态(Ready):进程已获得除处理机外的所需资源,等待执行。备用状态(Standby):特定处理器的执行对象,系统中每个处理器上只能有一个处于备用状态的线程。运行状态(Running):完成描述表切换,线程进入运行状态,直到内核抢

41、先、时间片用完、线程终止或进行等待状态。等待状态(Waiting):线程等待对象句柄,以同步它的执行。等待结束时,根据优先级进入运行、就绪状态。转换状态(Transition):线程在准备执行而其内核堆栈处于外存时,线程进入转换状态;当其内核堆栈调回内存,线程进入就绪状态。终止状态(Terminated):线程执行完就进入终止状态;如执行体有一指向线程对象的指针,可将线程对象重新初始化,并再次使用。初始化状态(Initialized):线程创建过程中的线程状态;Windows NT线程线程Windows NT的线程状态Windows 2000线程状态Windows NT的线程状态NT线程的有关

42、APICreateThread()函数在调用进程的地址空间上创建一个线程,以执行指定的函数;返回值为所创建线程的句柄。ExitThread()函数用于结束本线程。SuspendThread()函数用于挂起指定的线程。ResumeThread()函数递减指定线程的挂起计数,挂起计数为0时,线程恢复执行。(7 7)引入线程的好处()引入线程的好处(Benefits of Benefits of ThreadsThreads) 线程的关键好处是从性能应用中得到的,在一个存在的进程中产生(或终止)一个线程比产生(或终止)一个进程化费少得多的时间。类似地,在同一进程内二个线程间切换时间也要比二个进程切换时间小得多。因此假如一个应用或函数作为一组相关执行单元的应用,那末采用一组线程的集合比采用分开进程的集合要有效得多。 线程应用的例子是线程作为局部网上文件服务器。不同用户的文件请求使用的环境资源相同。当一个新的文件请求进入时,文件管理程序产生一个新的线程。因为一个服务器将处理许多文件请求,许多线程将在短时间内产生和撤消。假如服务器是多处理器,那末在同样进程内多个线程能在不同处理机上同时执行,在单处理机上线程结构同样有效,它使逻辑上不同函数级的程序结构简单化。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号