书签 分享 收藏 举报 版权申诉 / 73
上传文档赚钱

类型[工学]操作系统课件-第2章-进程.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3468731
  • 上传时间:2022-09-02
  • 格式:PPT
  • 页数:73
  • 大小:1,022.54KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《[工学]操作系统课件-第2章-进程.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    工学 操作系统 课件 进程
    资源描述:

    1、第二章 进 程 管 理 第二章第二章 进程管理进程管理 第一节:进程的概念第一节:进程的概念第二章 进 程 管 理 前趋图前趋图:是一个有向无循环图。前趋图前趋图用于描述进程之间执行的前后关系。图中的每个结点结点可用于描述一个程序段或进程,一个程序段或进程,乃至一条语句乃至一条语句;结点间的有向边有向边则用于表示两个结点之间存在的偏序或前趋关系“”。P1P3P8P9P4P2P5P6P7S1S2S3(a)具有九个结点的前趋图(b)具有循环的前趋图节点节点第二章 进 程 管 理 图21(a)中存在着这样的前趋关系:P1P2,P1P3,P1P4,P2P5,P3P5,P4P6,P4P7,P5P8,P6

    2、P8,P7P9,P8P9图 2-1 前趋图 第二章 进 程 管 理 或表示为:P=P1,P2,P3,P4,P5,P6,P7,P8,P9=(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P4,P7),(P5,P8),(P6,P8),(P7,P9),(P8,P9)应当注意,前趋图中必须不存在前趋图中必须不存在循环,循环,但在图2-1(b)中却有着下述的前趋关系:S2S3,S3S2 图 2-1 前趋图 第二章 进 程 管 理 1、程序的顺序执行、程序的顺序执行第二章 进 程 管 理 图 2-2 程序的顺序执行 S1:a=x+y;S2:b=a-5;S3

    3、:c=b+1;试想S1、S2、S3三条语句以何顺序执行?1、程序的顺序执行、程序的顺序执行第二章 进 程 管 理 程序顺序执行时的特征程序顺序执行时的特征(1)顺序性顺序性:(2)封闭性封闭性(运行时候独占处理机资源,运行结果不受外界影响)程序可再现性:(3)可再现性可再现性(初始条件相同,结果相同)第二章 进 程 管 理 2、程序的并发执行及其特征、程序的并发执行及其特征 第二章 进 程 管 理 2、程序的并发执行及其特征、程序的并发执行及其特征 2.1程序的并发执行程序的并发执行 图 2-3 并发执行时的前趋图 P1P2P3P4I1I2I3I4C1C2C3C4在该例中存在下述前趋关系:Ii

    4、Ci,IiIi+1,CiPi,CiCi+1,PiPi+1而Ii+1和Ci及Pi-1是重迭的,亦即在Pi-1和Ci以及Ii+1之间,可以并发执行并发执行。如何实现并如何实现并发执行?发执行?第二章 进 程 管 理 对于具有下述四条语句的程序段:S1:a=x+2 S2:b=y+4 S3:c=a+b S4:d=c+b 请画出前趋关系图。S1S2S3S4第二章 进 程 管 理 2.2 程序并发执行时的特征程序并发执行时的特征 1)间断性间断性(相互制约性相互制约性)后面的模块等待前面的模块 传来的结果,然后才执行(如打印模块等待 计算模块完成)。走走停停。2)失去封闭性失去封闭性:多个程序共享系统中的

    5、各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。结果是结果是一个程序运行时会受到另一个程序的 影响。3)不可再现性不可再现性 :程序在并发执行时,由于失去了封 闭性,也将导致失去其可再现性下面看个小例子:第二章 进 程 管 理 例如,有两个循环程序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值分

    6、别为n,0,1。(3)N=N+1在Print(N)和N=0之间,此时得到的N值分别为n,n+1,0。结论:程序在并发执行时,由于失去了封闭性,其计算结果已经和并发执行速度有关,从而使程序失去了可再现性,亦即,程序经过多次执行后,虽然他们执行时的环境和初始条件相同,但得到的结果却不相同。第二章 进 程 管 理 顺序执行顺序执行:并发执行:并发执行:程序具有封闭性程序具有封闭性 程序失去封闭性程序失去封闭性独享资源独享资源 共享资源共享资源(互为存在条件互为存在条件)可再现性可再现性 程序与程序与“计算计算”不再一一对不再一一对应应有相互制约有相互制约第二章 进 程 管 理 3、进程、进程(Pro

    7、cess)第二章 进 程 管 理 3.1较典型的较典型的进程定义进程定义有:有:进程是程序的一次执行。进程是程序的一次执行。进程是一个程序及其数据在处理机上顺序执行时所发生进程是一个程序及其数据在处理机上顺序执行时所发生 的活动。的活动。进程是程序在一个数据集合上运行的过程,它是系统进进程是程序在一个数据集合上运行的过程,它是系统进 行资源分配和调度的一个独立单位。行资源分配和调度的一个独立单位。进程是一个程序及其数据在处理机上顺序执行时所发生进程是一个程序及其数据在处理机上顺序执行时所发生的活动。的活动。进程是程序在一个数据集合上运行的过程进程是程序在一个数据集合上运行的过程,它是系统进行它

    8、是系统进行资源分配和调度的一个独立单位;资源分配和调度的一个独立单位;第二章 进 程 管 理 3.2 进程的组成:进程的组成:进程的实体进程的实体由由:程序段、程序段、数据段、数据段、进程控制块进程控制块PCB组成。组成。有人把这三部分称为有人把这三部分称为”进程映像进程映像”.通常的程序是不能通常的程序是不能并发执行并发执行的的,为使程序能并发执行为使程序能并发执行,应为之配置一进程控制块应为之配置一进程控制块,即即PCB;所谓所谓创建进程是指创建进程实体中的创建进程是指创建进程实体中的PCB,撤销亦,撤销亦如此。如此。第二章 进 程 管 理 1)结构化特征:结构化特征:含含代码段、数据段和

    9、核心段(在地址空间中)2)动态性:动态性:进程的实质是进程实体的一次执行过程,动态性是进动态性是进程的最基本特征。程的最基本特征。3)并发性并发性:指多个进程实体同存于内存中,且能在一段时间内同指多个进程实体同存于内存中,且能在一段时间内同时运行,它是进程的重要特征,也是操作系统的重要特征。时运行,它是进程的重要特征,也是操作系统的重要特征。4)独立性独立性:各进程的各进程的地址空间相互独立地址空间相互独立,除非采用进程间通信手段;,除非采用进程间通信手段;5)异步性异步性:这是指进程按各自独立的,不可预知的速度向前推进。这是指进程按各自独立的,不可预知的速度向前推进。导致程序执行的不可再现性

    10、导致程序执行的不可再现性3.3进程的特征:进程的特征:第二章 进 程 管 理 1)1)程序是静态的,进程是动态的程序是静态的,进程是动态的;(是根本区别)(是根本区别)程序是有序代码的集合;进程是程序的执行。程序是有序代码的集合;进程是程序的执行。2)2)进程和程序不是一一对应的进程和程序不是一一对应的;一个程序可对应多个进程一个程序可对应多个进程,即多个进程可执行同一程序即多个进程可执行同一程序;一个进程可以执行一个或几个程序一个进程可以执行一个或几个程序 3)3)进程是暂时的,程序的永久的进程是暂时的,程序的永久的:进程是一个状态变化的过程,:进程是一个状态变化的过程,程序可长久保存。程序

    11、可长久保存。4)4)进程与程序的组成不同进程与程序的组成不同:进程的组成包括程序、数据和进程:进程的组成包括程序、数据和进程控制块(即进程状态信息)。控制块(即进程状态信息)。5)5)进程具有创建其他进程的功能,而程序没有进程具有创建其他进程的功能,而程序没有。3.4进程与程序的区别进程与程序的区别第二章 进 程 管 理 程序与进程的类比程序与进程的类比 程程 序序 进进 程程 唱歌的曲谱或音乐乐器的乐谱唱歌的曲谱或音乐乐器的乐谱 演出或演奏演出或演奏 剧本剧本 演出演出 火车火车 列车列车 第二章 进 程 管 理 1、判断题:、判断题:进程是一个程序在某数据集上的一次执进程是一个程序在某数据

    12、集上的一次执行,所以不同进程对应不同的程序行,所以不同进程对应不同的程序。分析分析:进程是程序在某数据集上得一次执行,但是:进程是程序在某数据集上得一次执行,但是不不同进程可以对应同一程序同进程可以对应同一程序。2、程序顺序执行与并发执行有什么不同?、程序顺序执行与并发执行有什么不同?3、用户程序必须在进程中运行。、用户程序必须在进程中运行。正确4、判断题判断题:两次打开:两次打开Word字处理程序,编辑同一篇文章,字处理程序,编辑同一篇文章,因为程序因为程序 一样一样(Word 2003),数据一样,数据一样(同一篇文章同一篇文章),所以,所以系统中运行的这两个系统中运行的这两个Word字处

    13、理程序是同一个进程。字处理程序是同一个进程。错误,运行的是错误,运行的是2个不同的进程个不同的进程第二章 进 程 管 理 3.5处理机调度器(处理机调度器(dispatcher)把处理机从一个进程切换到另一个进程;防止某进程独占处理机;处理机调度器(进程调度进程调度):是操作系统中的一段代码,它完成如下功能:第二章 进 程 管 理 3.6 进程的进程的三种基本状态三种基本状态 1)就绪就绪(Ready)(Ready)状态状态:已分配到除:已分配到除CPU以外的所有必要的资以外的所有必要的资源,源,只要能再获得处理机,便,便可立即执行的状态。多个排成。多个排成一队称为就绪队列。一队称为就绪队列。

    14、2)执行状态执行状态:指进程已获得处理机,其程序指进程已获得处理机,其程序正在执行正在执行;在单处理机系统中,只能有一个进程处于执行状态在单处理机系统中,只能有一个进程处于执行状态;在多处理机系统中,则可能多个进程处于执行状态。在多处理机系统中,则可能多个进程处于执行状态。3)阻塞状态阻塞状态:进程因发生某事件:进程因发生某事件(如请求如请求IO、申请缓冲空、申请缓冲空间等间等)而而暂停执行时的状态,亦即进程的执行受到阻塞,故称,亦即进程的执行受到阻塞,故称这种暂停状态为阻塞状态,有时也称为这种暂停状态为阻塞状态,有时也称为“等待等待”状态或状态或“睡睡眠眠”状态。状态。通常将处于阻塞状态的进

    15、程排成一个队列,称为阻塞队通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。在有的系统中,按阻塞原因的不同而将处于阻塞状态的列。在有的系统中,按阻塞原因的不同而将处于阻塞状态的进程排成多个队列。进程排成多个队列。第二章 进 程 管 理 图 2-5 进程的三种基本状态及其转换(教材讲5种)就绪阻塞执行时间片完进程调度I/O完成I/O请求结束结束新进程新进程接纳完成第二章 进 程 管 理 作业后备队列进程就绪队列作业调度作业调度一些一些阻塞队列阻塞队列第二章 进 程 管 理 3.7五状态五状态进程模型AdmitRunningNewExitReadyBlockedDispatchTimeoutEv

    16、entWaitEventOccursReleaseCreate五状态进程模型(状态变迁)第二章 进 程 管 理 AdmitReady QueueDispatchTime-outEvent WaitReleaseProcessorBlocked QueueEventOccurs五状态进程模型(单队列结构)第二章 进 程 管 理 AdmitReady QueueDispatchTime-outReleaseProcessorEvent 1 WaitEvent 1 QueueEvent 1OccursEvent 2 WaitEvent 2 QueueEvent 2Occurs五状态进程模型(多队列结

    17、构)第二章 进 程 管 理 3.8 进程状态的转换(1)新(New)状态就绪状态。(2)就绪(Ready)状态执行状态。(3)执行状态阻塞状态。(4)阻塞状态就绪状态。(5)执行状态就绪状态第二章 进 程 管 理 3.9挂起进程模型挂起进程模型 这个问题的出现是由于进程优先级的引入,一些低优先级进程可能等待较长时间,从而被对换至外存外存。这样做的目的是:提高处理机效率:就绪进程表为空时,要提交新进程,以提高处理机效率;为运行进程提供足够内存:资源紧张时,暂停某些进程,如:CPU繁忙(或实时任务执行),内存紧张 用于调试:在调试时,挂起被调试进程(从而对其地址空间进行读写)第二章 进 程 管 理

    18、 AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendActivate单挂起单挂起进程模型进程模型第二章 进 程 管 理 AdmitRunningReadySuspendExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendNewEventOccursActivateSuspendActivateAdmitSuspend双挂起双挂起进程模型进程模型内存内存外

    19、存外存第二章 进 程 管 理 3.9.1 状态状态 就绪状态就绪状态(Ready):进程在内存且可立即进入运行状态;阻塞状态阻塞状态(Blocked):进程在内存并等待内存并等待某事件的出现;阻塞挂起状态阻塞挂起状态(Blocked,suspend):进程在外存并外存并等待等待某事件的出现;就绪挂起状态(就绪挂起状态(Ready,suspend):进程在外存,但只要进入内存,即可运行;注:这里只列出了意义有变化或新的状态。第二章 进 程 管 理 3.9.2转换转换 挂起(挂起(Suspend):把一个进程从内存内存转到外存外存;可能有以下几种情况:阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程

    20、要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程;就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程;运行到就绪挂起:对抢占式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把正运行的进程转到就绪挂起状态;激活(激活(Activate):把一个进程从外存外存转到内存内存;可能有以下几种情况:就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换;阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等待的事件)进程变成阻塞状态;第二章

    21、 进 程 管 理 事件出现(事件出现(Event Occurs):进程等待的事件出现;如:操作完成、申请成功等;可能的情况有:阻塞到就绪:针对内存进程的事件出现;阻塞挂起到就绪挂起:针对外存进程的事件出现;收容收容(Admit):收容(提交)一个新进程,进入就绪状态或就绪挂起状态。第二章 进 程 管 理 1、进程由就绪态转为运行态是因为()引起的?A、中断事件、中断事件 b、进程状态转换、进程状态转换c、进程调度的、进程调度的d、为程序创建进程、为程序创建进程C2、分配到必要的资源并获得处理机的进程状态是()。)。运行态运行态3、当(),进程从执行状态转变为就绪状态。a、进程被调度程序选中 b

    22、、时间片到 c、等待某一事件 d、等待的时间发生B4、判断题判断题:两次打开:两次打开Word字处理程序,编辑同一篇文章,字处理程序,编辑同一篇文章,因为程序因为程序 一样一样(Word 2003),数据一样,数据一样(同一篇文章同一篇文章),所以,所以系统中运行的这两个系统中运行的这两个Word字处理程序是同一个进程。字处理程序是同一个进程。第二章 进 程 管 理 第二章 进 程 管 理 3.10、进程控制块、进程控制块 3.10.1.进程控制块的作用进程控制块的作用 或者说:或者说:OS是根据是根据PCB来对并发执行的进程进行控来对并发执行的进程进行控制和管理的。制和管理的。简单题:进程控

    23、制块的作用(要扩展)?简单题:进程控制块的作用(要扩展)?判断题:进程控制块是进程存在的唯一标志。判断题:进程控制块是进程存在的唯一标志。进程控制块是由OS维护的用来记录进程相关信息的一块内存。正确正确第二章 进 程 管 理 3.10.2进程控制块的内容(进程控制块的内容(数据结构很复杂数据结构很复杂)进程标识符进程标识符:内部进程标识符(process ID),唯一,通常是一个整数;进程名(外部标识符),通常基于可执行文件名(不唯一);用户标识符(user ID);进程组关系(process group)进程控制信息进程控制信息:当前状态;优先级(priority);代码执行入口地址;程序的

    24、外存地址;运行统计信息(执行时间、页面调度);进程间同步和通信;阻塞原因 进程调度信息进程调度信息:进程状态、进程优先级、资源信息等 处理机状态处理机状态:寄存器值(通用、程序计数器PC、状态PSW,地址包括栈指针)第二章 进 程 管 理 3.10.3 PCB的组织方式 链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表 各状态的进程形成不同的链表:就绪链表、阻塞链表 索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index表 各状态的进行形成不同的索引表:就绪索引表、阻塞索引表PCB TableReadyBlockedPCB Tab

    25、leIndex TableReadyBlocked把具有相同状态的把具有相同状态的PCB,用其中,用其中的链接字,链接成一个队列。的链接字,链接成一个队列。第二章 进 程 管 理 4、进程控制、进程控制返回第二章 进 程 管 理 4.1 进程控制的功能:进程控制的功能:完成进程状态的转换。原语(primitive):由若干条指令构成的“原子操作(atomic operation)”过程,作为一个整体而不可分割要么全都完成,要么全都不做。许多系统调用就是原语。注意:系统调用并不都是原语。进程A调用read(),因无数据而阻塞,在read()里未返回。然后进程B调用read(),此时read()被

    26、重入。系统调用不一定一次执行完并返回该进程,有可能在特定的点暂停,而转入到其他进程。第二章 进 程 管 理 4.2.1 进程图进程图(Process Graph)图 2-9 进程树 DEFGHBCIJKLMA用于描述进用于描述进程家族关系程家族关系的有向树。的有向树。图中的结图中的结点代表进点代表进程程。父进程父进程:在进程:在进程Pi创创建了进程建了进程Pj后,称后,称Pi是是Pj的父进程。的父进程。子进程子进程:在进程:在进程Pi创创建了进程建了进程Pj后,称后,称Pj是是Pi的子进程。的子进程。4.2 进程的创建进程的创建第二章 进 程 管 理 4.2.2 引起引起创建进程创建进程的事件

    27、的事件(1)用户登录。用户登录。(2)作业调度。作业调度。(3)提供服务。提供服务。(4)应用请求。应用请求。第二章 进 程 管 理 4.2.3 进程的创建进程的创建(Creation of Progress)过程过程 (1)申请空白申请空白PCB。(2)为新进程分配资源。为新进程分配资源。(分配内存空间分配内存空间)(3)初始化进程控制块。初始化进程控制块。(4)将新进程插入就绪队列,如果进程就绪队列能够将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,接纳新进程,便将新进程插入就绪队便将新进程插入就绪队列列。第二章 进 程 管 理 4.3 进程退出进程退出 也称为“终止”或主程序返回:

    28、调用exit()可终止进程。释放资源:释放内外存空间 关闭所有打开文件 释放共享内存段和各种锁定lock第二章 进 程 管 理 4.4 进程的阻塞与唤醒进程的阻塞与唤醒4.4.1 引起进程阻塞和唤醒的事件引起进程阻塞和唤醒的事件1)请求系统服务 2)启动某种操作 3)新数据尚未到达 4)无新工作可做 第二章 进 程 管 理 4.4.2.进程阻塞过程进程阻塞过程 正在执行的进程,当发现上述某事件时,无法继续执行,正在执行的进程,当发现上述某事件时,无法继续执行,于是进程调用阻塞原语于是进程调用阻塞原语block把自己阻塞。可见,把自己阻塞。可见,进程的阻塞进程的阻塞是进程自身的一种主动行为是进程

    29、自身的一种主动行为。进入。进入block过程后,由于此时该过程后,由于此时该进程还处于执行状态,所以应先进程还处于执行状态,所以应先立即停止执行立即停止执行,把进程控制,把进程控制块中的现行状态由块中的现行状态由“执行执行”改为阻塞,并改为阻塞,并将将PCB插入阻塞队插入阻塞队列列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞则应将本进程插入到具有相同事件的阻塞(等待等待)队列。队列。最后,最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行

    30、切换并进行切换。第二章 进 程 管 理 4.4.3 进程唤醒过程进程唤醒过程 当被阻塞进程所期待的事件出现时,如I/O完成或其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒。唤醒原语执行的过程是唤醒原语执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。第二章 进 程 管 理 4.5 进程的挂起与激活进程的挂起与激活 引起进程挂起的事件引起进程挂起的事件:4.5.1.进程的挂起进程的挂起挂起原语的执行过程是挂起原语的执行过程是:首先检

    31、查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪;对于活动阻塞状态的进程,则将之改为静止阻塞。最后,若被挂起的进程正在执行,则转向调度程序重新调度。-或父进程请求将自己的某个子进程挂起,-系统将利用挂起原语suspend()将指定进程或处于阻塞状态的进程挂起。-用户进程请求将自己挂起;第二章 进 程 管 理 4.5.2.进程的激活过程进程的激活过程系统将利用激活原语active()将指定进程激活。激活原语先将进程从外存调入内存先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞便将之改为活动阻塞。第二章 进 程 管 理 例:NT线程的挂起和激活

    32、NT中处理机的分配对象为线程,一个线程可被多次挂起和多次激活。在线程内有一个挂起计数(suspend count),挂起操作使该计数加1,激活操作将该计数减1;当挂起计数为0时,线程恢复执行。(1)挂起:Windows NT中的SuspendThread可挂起指定的线程;DWORD SuspendThread(HANDLE hThread /handle to the thread );(2)激活:Windows NT中的ResumeThread可恢复指定线程的执行;DWORD ResumeThread(HANDLE hThread /identifies thread to restart

    33、);第二章 进 程 管 理 例子NT_thread.cpp#include#include#include#include void SubThread(void)int i;for(i=0;i5;i+)cout SubThread i endl;Sleep(2000);第二章 进 程 管 理 void main(void)cout CreateThread endl;/Create a thread;DWORD IDThread;HANDLE hThread;hThread=CreateThread(NULL,/no security attributes 0,/use default st

    34、ack size (LPTHREAD_START_ROUTINE)SubThread,/thread function NULL,/no thread function argument 0,/use default creation flags&IDThread);/returns thread identifier/Check the return value for success.if(hThread=NULL)cout CreateThread error endl;第二章 进 程 管 理 int i;for(i=0;i5;i+)cout MainThread i endl;if(i

    35、=1)if(SuspendThread(hThread)=0 xFFFFFFFF)cout Suspend thread error.endl;elsecout Suspend thread is ok.endl;if(i=3)if(ResumeThread(hThread)=0 xFFFFFFFF)cout Resume thread error.endl;elsecout Resume thread is ok.endl;Sleep(4000);第二章 进 程 管 理 运行结果CreateThreadMainThread0SubThread0SubThread1MainThread1Sus

    36、pend thread is ok.MainThread2MainThread3Resume thread is ok.SubThread2SubThread3MainThread4SubThread4第二章 进 程 管 理 例子 NT_thread.cpp#include#include#include#include void SubThread(void)int i;for(i=0;i5;i+)cout SubThread i endl;Sleep(2000);/改一下时间,输出顺序会有变化此处是用户自己的函数,完成指定功能第二章 进 程 管 理 void main(void)cout

    37、CreateThread endl;/Create a thread;DWORD IDThread;HANDLE hThread;hThread=CreateThread(NULL,/no security attributes 0,/use default stack size (LPTHREAD_START_ROUTINE)SubThread,/thread function NULL,/no thread function argument 0,/use default creation flags&IDThread);/returns thread identifier/Check t

    38、he return value for success.if(hThread=NULL)cout CreateThread error endl;第二章 进 程 管 理 int i;for(i=0;i5;i+)cout MainThread i endl;if(i=1)if(SuspendThread(hThread)=0 xFFFFFFFF)cout Suspend thread error.endl;elsecout Suspend thread is ok.endl;if(i=3)if(ResumeThread(hThread)=0 xFFFFFFFF)cout Resume threa

    39、d error.endl;elsecout Resume thread is ok.endl;Sleep(4000);/改一下结果会有变化。第二章 进 程 管 理 运行结果CreateThreadMainThread0/输出后。Sleep(4000)SubThread0/输出后,Sleep(2000)SubThread1/输出后,Sleep(2000)MainThread1/输出后。Sleep(4000)Suspend thread is ok.MainThread2MainThread3Resume thread is ok./输出后。Sleep(4000)SubThread2SubThre

    40、ad3MainThread4SubThread4进程创建后只要通过进程调度获得cpu,就自动执行!第二章 进 程 管 理 5 线程(THREAD)返回引入线程的目的是简化进程间的通信简化进程间的通信,以小的开销来提高进程内的并发程度并发程度。第二章 进 程 管 理 5.1 线程的引入线程的引入 进程:进程:资源分配单位(存储器、文件)和CPU调度(分派)单位-未引入线程时。又称为“任务任务(task)“线程:线程:作为CPU调度单位,而引入线程后进程只作为其他资源分配单位。只拥有必不可少的资源,如:线程状态、寄存器上下文和栈 同样具有就绪、阻塞和执行三种基本状态 线程的优点线程的优点:减小并发

    41、执行的时间和空间开销(线程的创建、退出和调度),因此容许在系统中建立更多的线程来提高并并发程度发程度。线程的创建时间比进程短;线程的终止时间比进程短;同进程内的线程切换时间比进程短;由于同进程内线程间共享共享内存和文件资源资源,可直接进行不通过内核的通信;第二章 进 程 管 理 one processone threadmultiple processesone thread per processone processmultiple threadsmultiple processesmultiple threads per process进程与线程的关系第二章 进 程 管 理 5.2 线程

    42、的属性线程的属性 线程具有许多传统进程所具有的特征,故又称为线程具有许多传统进程所具有的特征,故又称为轻型进程轻型进程(1)轻型实体轻型实体。(线程是进程中的一个实体。(线程是进程中的一个实体)(2)独立独立调度调度和和分派分派的基本单位的基本单位。在多线程。在多线程OS中中,线程线程是是能独立运行的基本单位能独立运行的基本单位,因而也是独立因而也是独立调度调度和和分分派派的基本单位。的基本单位。而把进程作为资源拥有的单位而把进程作为资源拥有的单位。由于线程很由于线程很“轻轻,故线程的切换非常迅速且开故线程的切换非常迅速且开销小。销小。(3)可并发执行。可并发执行。(4)共享进程资源。共享进程

    43、资源。第二章 进 程 管 理 5.3 OS对线程的实现方式 内核维护进程和线程的上下文信息;线程切换由内核完成;一个线程发起系统调用而阻塞,不会影响其他线程的运行。时间片分配给线程,所以多线程的进程获得更多CPU时间。依赖于依赖于OS核心核心,由内核的内部需求进行创建和撤销,用来执行一个指定的函数。Windows NT和OS/2支持内核线程;1)内核线程(kernel-level thread)第二章 进 程 管 理 2)用户线程(user-level thread)用户线程的维护由应用进程完成;内核不了解用户线程的存在;用户线程切换不需要内核特权;用户线程调度算法可针对应用优化;不依赖于不依

    44、赖于OS核心核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。如:数据库系统informix,图形处理Aldus PageMaker。调度由应用软件内部进行,通常采用非抢先式和更简单的规则,也无需用户态/核心态切换,所以速度特别快。一个线程发起系统调用而阻塞,则整个进程在等待。时间片分配给进程,多线程则每个线程就慢。第二章 进 程 管 理 例:线程执行时间例:线程执行时间 对于只设置了对于只设置了用户级线程用户级线程的系统,的系统,调度是以进调度是以进程为单位程为单位的,在采用轮转调度算法时,各个进程轮的,在采用轮转调度算法时,各个进程轮流执行一个时间片,这对诸进程而

    45、言,看似公平的,流执行一个时间片,这对诸进程而言,看似公平的,但假如在但假如在A A进程中包含了一个用户级线程,而在另一进程中包含了一个用户级线程,而在另一个进程个进程B B中含有中含有100100个线程,这样,进程个线程,这样,进程A A中线程的运中线程的运行时间,将是进程行时间,将是进程B B中线程运行时间的中线程运行时间的100100倍;相应倍;相应地,速度就快地,速度就快100100倍。倍。假如系统中是设置的假如系统中是设置的内核支持线程内核支持线程,其,其调度是调度是以线程为单位以线程为单位进行的,这样,进程进行的,这样,进程B B可以获得的可以获得的CPUCPU时间是进程时间是进程

    46、A A的的100100倍,进程倍,进程B B可使可使100100个系统调用并个系统调用并发工作。发工作。第二章 进 程 管 理 5.3 Solaris Solaris操作系统中的线程操作系统中的线程同时实现了用户级线程与内核支持线程。同时实现了用户级线程与内核支持线程。SUN Solaris OSSolaris OS在在用户级线程用户级线程和和内核内核级线级线程之间,定义了一种轻型进程程之间,定义了一种轻型进程LWP(LWP(内核内核控制线程,也称为控制线程,也称为轻权进程轻权进程),一个进程中一个进程中至少有一个至少有一个LWPLWP。第二章 进 程 管 理 Solaris支持内核线程(Ke

    47、rnel threads)、轻权进程(Lightweight Processes)和用户线程(User Level Threads)。一个进程可有大量用户线程;大量用户线程复用少量的轻权进程,不同的轻权进程分别对应不同的内核线程。第二章 进 程 管 理 用户级线程用户级线程在使用系统调用时(如文件读写),需要“捆绑(bound)”在一个LWP上,用户级线程用户级线程可通过LWP访问内核,但内核所看到的总是多个LWP,而看不到用户级线程。永久捆绑:一个LWP固定被一个用户级线程占用,该LWP移到LWP池之外 临时捆绑:从LWP池中临时分配一个未被占用的LWP 在使用系统调用时,如果所有LWP已被

    48、其他用户级线程所占用(捆绑),则该线程阻塞直到有可用的LWP例如6个用户级线程,而LWP池中有4个LWP 如果LWP执行系统调用时阻塞(如read()调用),则当前捆绑在LWP上的用户级线程也阻塞。每个要通信通信的用户级线程用户级线程都需要一个需要一个LWP第二章 进 程 管 理 Timesliceor PreemptWakeupStopBlockingSystemCallWakeupDispatchRunnableRunningActiveStoppedContinueStopStopStopSleepDispatchStopWakeupContinuePreemptStoppedRunna

    49、bleActiveSleeping用户级线程轻权进程Solaris用户线程和轻权进程第二章 进 程 管 理 Process 1PermanentlyBoundThreadsProcess 1KTKTKTKTKTKTCPU 1CPU 1LWPUTUTUTUTLWPLWPUnboundThreadsPool of LWPs forUnbound ThreadsKernalUTLWP用户线程、轻权进程LWP和核心线程的关系同时有同时有4个用户级线程发出对文件个用户级线程发出对文件的读写请求,而任务中只有的读写请求,而任务中只有3个个LPW,则,则3个用户级线程可执行读个用户级线程可执行读写请求,余下

    50、的必须等写请求,余下的必须等第二章 进 程 管 理 有关的C库函数/*创建用户级线程*/int thr_create(void*stack_base,size_t stack_size,void*(*start_routine)(void*),void*arg,long flags,thread_t*new_thread_id);其中flags包括:THR_BOUND(永久捆绑),THR_NEW_LWP(创建新LWP放入LWP池),若两者同时指定则创建两个新LWP,一个永久捆绑而另一个放入LWP池 有关的系统调用/*在当前进程中创建LWP*/int _lwp_create(ucontext_t

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:[工学]操作系统课件-第2章-进程.ppt
    链接地址:https://www.163wenku.com/p-3468731.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库