[工学]操作系统课件-第2章-进程_第1页
[工学]操作系统课件-第2章-进程_第2页
[工学]操作系统课件-第2章-进程_第3页
[工学]操作系统课件-第2章-进程_第4页
[工学]操作系统课件-第2章-进程_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 进程管理 第一节:进程的概念前趋图:是一个有向无循环图。 前趋图用于描述进程之间执行的前后关系。 图中的每个结点可用于描述一个程序段或进程,乃至一条语句; 结点间的有向边则用于表示两个结点之间存在的偏序或前趋关系“”。节点图21(a) 中存在着这样的前趋关系:P1P2, P1P3, P1P4, P2P5, P3P5, P4P6, P4P7, P5P8, P6P8, P7P9, P8P9图 2-1 前趋图 或表示为: P=P1, P2, P3, P4, P5, P6, P7, P8, P9= (P1, P2), (P1, P3), (P1, P4), (P2, P5), (P3, P5)

2、, (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: c=b+1;试想S1、S2、S3三条语句以何顺序执行?1 、程序的顺序执行程序顺序执行时的特征 顺序性:(2) 封闭性(运行时候独占处理机资源,运行结果不受外界影响)程序可再现性: (3) 可再现性(初始条件相同,结果相同)2、程序的并发执行及其特征 2、程序的并发

3、执行及其特征 2.1程序的并发执行 图 2-3 并发执行时的前趋图 在该例中存在下述前趋关系: IiCi,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 请画出前趋关系图。2.2 程序并发执行时的特征 间断性(相互制约性)后面的模块等待前面的模块 传来的结果,然后才执行(如打印模块等待 计算模块完成)。走走停停。 失去封闭性 :多个程序共享系统中的各种资源, 因而这些资源的

4、状态将由多个程序来改变, 致使程序的运行已失去了封闭性。 结果是一个程序运行时会受到另一个程序的 影响。 不可再现性 :程序在并发执行时,由于失去了封 闭性,也将导致失去其可再现性下面看个小例子: 例如,有两个循环程序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在Pr

5、int(N)和N=0之间,此时得到的N值分别为n, n+1, 0。 结论:程序在并发执行时,由于失去了封闭性,其计算结果已经和并发执行速度有关, 从而使程序失去了可再现性,亦即,程序经过多次执行后,虽然他们执行时的环境和初始条件相同,但得到的结果却不相同。 顺序执行: 并发执行:程序具有封闭性 程序失去封闭性独享资源 共享资源(互为存在条件)可再现性 程序与“计算”不再一一对应有相互制约3 、进程(Process)3.1较典型的进程定义有:进程是程序的一次执行。进程是一个程序及其数据在处理机上顺序执行时所发生 的活动。进程是程序在一个数据集合上运行的过程,它是系统进 行资源分配和调度的一个独立

6、单位。进程是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位; 3.2 进程的组成:进程的实体由: 程序段、 数据段、 进程控制块PCB组成。有人把这三部分称为”进程映像”. 通常的程序是不能并发执行的,为使程序能并发执行,应为之配置一进程控制块,即PCB; 所谓创建进程是指创建进程实体中的PCB,撤销亦如此。1)结构化特征:含代码段、数据段和核心段(在地址空间中) 2)动态性:进程的实质是进程实体的一次执行过程,动态性是进程的最基本特征。3)并发性: 指多个进程实体同存于内存中,且能在一段时间内同时运行,它是进程

7、的重要特征,也是操作系统的重要特征。4)独立性: 各进程的地址空间相互独立,除非采用进程间通信手段;5)异步性:这是指进程按各自独立的,不可预知的速度向前推进。导致程序执行的不可再现性3.3进程的特征:1)程序是静态的,进程是动态的;(是根本区别) 程序是有序代码的集合;进程是程序的执行。2)进程和程序不是一一对应的 ; 一个程序可对应多个进程,即多个进程可执行同一程序 ; 一个进程可以执行一个或几个程序 3)进程是暂时的,程序的永久的:进程是一个状态变化的过程,程序可长久保存。4)进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)。5)进程具有创建其他进程的功能,而

8、程序没有。3.4进程与程序的区别 程序与进程的类比 程 序 进 程 唱歌的曲谱或音乐乐器的乐谱 演出或演奏 剧本 演出 火车 列车 1、判断题:进程是一个程序在某数据集上的一次执行,所以不同进程对应不同的程序。分析:进程是程序在某数据集上得一次执行,但是不同进程可以对应同一程序。2、程序顺序执行与并发执行有什么不同?3、用户程序必须在进程中运行。正确4、判断题:两次打开Word字处理程序,编辑同一篇文章,因为程序 一样(Word 2003),数据一样(同一篇文章),所以系统中运行的这两个Word字处理程序是同一个进程。错误,运行的是2个不同的进程3.5处理机调度器(dispatcher)把处理

9、机从一个进程切换到另一个进程;防止某进程独占处理机;处理机调度器(进程调度):是操作系统中的一段代码,它完成如下功能:3.6 进程的三种基本状态 1)就绪(Ready)状态:已分配到除CPU以外的所有必要的资源,只要能再获得处理机,便可立即执行的状态。多个排成一队称为就绪队列。 2) 执行状态:指进程已获得处理机,其程序正在执行; 在单处理机系统中,只能有一个进程处于执行状态; 在多处理机系统中,则可能多个进程处于执行状态。 3) 阻塞状态 :进程因发生某事件(如请求IO、申请缓冲空间等)而暂停执行时的状态,亦即进程的执行受到阻塞,故称这种暂停状态为阻塞状态,有时也称为“等待”状态或“睡眠”状

10、态。 通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。在有的系统中,按阻塞原因的不同而将处于阻塞状态的进程排成多个队列。图 2-5 进程的三种基本状态及其转换(教材讲5种) 结束新进程接纳完成作业后备队列进程就绪队列 外存 内存 作业调度一些处理器(CPU)阻塞队列阻塞队列3.7五状态进程模型五状态进程模型(状态变迁)五状态进程模型(单队列结构)五状态进程模型(多队列结构)3.8 进程状态的转换 新(New)状态就绪状态。 (2)就绪(Ready)状态执行状态。 (3)执行状态阻塞状态。 (4)阻塞状态就绪状态。(5)执行状态就绪状态3.9挂起进程模型这个问题的出现是由于进程优先级的引入,

11、一些低优先级进程可能等待较长时间,从而被对换至外存。这样做的目的是:提高处理机效率:就绪进程表为空时,要提交新进程,以提高处理机效率;为运行进程提供足够内存:资源紧张时,暂停某些进程,如:CPU繁忙(或实时任务执行),内存紧张用于调试:在调试时,挂起被调试进程(从而对其地址空间进行读写)单挂起进程模型双挂起进程模型内存外存3.9.1 状态就绪状态(Ready):进程在内存且可立即进入运行状态;阻塞状态(Blocked):进程在内存并等待某事件的出现;阻塞挂起状态(Blocked, suspend):进程在外存并等待某事件的出现;就绪挂起状态(Ready, suspend):进程在外存,但只要进

12、入内存,即可运行;注:这里只列出了意义有变化或新的状态。3.9.2转换挂起(Suspend):把一个进程从内存转到外存;可能有以下几种情况:阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程;就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程;运行到就绪挂起:对抢占式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把正运行的进程转到就绪挂起状态;激活(Activate):把一个进程从外存转到内存;可能有以下几种情况:就绪挂起到就绪:没有就绪进程或挂起就

13、绪进程优先级高于就绪进程时,会进行这种转换;阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等待的事件)进程变成阻塞状态;事件出现(Event Occurs):进程等待的事件出现;如:操作完成、申请成功等;可能的情况有:阻塞到就绪:针对内存进程的事件出现;阻塞挂起到就绪挂起:针对外存进程的事件出现;收容(Admit):收容(提交)一个新进程,进入就绪状态或就绪挂起状态。1、进程由就绪态转为运行态是因为()引起的?A、中断事件 b、进程状态转换c、进程调度的d、为程序创建进程C2、分配到必要的资源并获得处理机的进程状态是( )。 运行态3、当( ),进

14、程从执行状态转变为就绪状态。 a、进程被调度程序选中 b、时间片到 c、等待某一事件 d、等待的时间发生B4、判断题:两次打开Word字处理程序,编辑同一篇文章,因为程序 一样(Word 2003),数据一样(同一篇文章),所以系统中运行的这两个Word字处理程序是同一个进程。3.10、进程控制块 3.10.1. 进程控制块的作用 或者说:OS是根据PCB来对并发执行的进程进行控制和管理的。简单题:进程控制块的作用(要扩展)?判断题:进程控制块是进程存在的唯一标志。进程控制块是由OS维护的用来记录进程相关信息的一块内存。正确3.10.2进程控制块的内容(数据结构很复杂)进程标识符:内部进程标识

15、符(process ID),唯一,通常是一个整数;进程名(外部标识符),通常基于可执行文件名(不唯一);用户标识符(user ID);进程组关系(process group)进程控制信息:当前状态;优先级(priority);代码执行入口地址;程序的外存地址;运行统计信息(执行时间、页面调度);进程间同步和通信;阻塞原因进程调度信息:进程状态、进程优先级、资源信息等处理机状态:寄存器值(通用、程序计数器PC、状态PSW,地址包括栈指针)3.10.3 PCB的组织方式链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表各状态的进程形成不同的链表:就绪链表、阻塞链表索引表:同一状态的进

16、程归入一个index表(由index指向PCB),多个状态对应多个不同的index表各状态的进行形成不同的索引表:就绪索引表、阻塞索引表把具有相同状态的PCB,用其中的链接字,链接成一个队列。4、进程控制返回4.1 进程控制的功能:完成进程状态的转换。原语(primitive):由若干条指令构成的“原子操作(atomic operation)”过程,作为一个整体而不可分割要么全都完成,要么全都不做。许多系统调用就是原语。注意:系统调用并不都是原语。进程A调用read(),因无数据而阻塞,在read()里未返回。然后进程B调用read(),此时read()被重入。系统调用不一定一次执行完并返回该

17、进程,有可能在特定的点暂停,而转入到其他进程。4.2.1 进程图(Process Graph) 图 2-9 进程树 用于描述进程家族关系的有向树。图中的结点代表进程 。父进程 :在进程Pi创建了进程Pj后,称Pi是Pj的父进程。子进程:在进程Pi创建了进程Pj后,称Pj是Pi的子进程。4.2 进程的创建4.2.2 引起创建进程的事件 用户登录。 (2) 作业调度。 (3) 提供服务。 (4) 应用请求。 4.2.3 进程的创建(Creation of Progress)过程 (1)申请空白PCB。 (2) 为新进程分配资源。 (分配内存空间) (3) 初始化进程控制块。 (4) 将新进程插入就

18、绪队列,如果进程就绪队列能够接纳新进程, 便将新进程插入就绪队列。 4.3 进程退出也称为“终止”或主程序返回:调用exit()可终止进程。释放资源:释放内外存空间关闭所有打开文件释放共享内存段和各种锁定lock4.4 进程的阻塞与唤醒4.4.1 引起进程阻塞和唤醒的事件请求系统服务 2) 启动某种操作 3) 新数据尚未到达 4) 无新工作可做 4.4.2. 进程阻塞过程 正在执行的进程,当发现上述某事件时,无法继续执行,于是进程调用阻塞原语block把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的

19、现行状态由“执行”改为阻塞,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞(等待)队列。 最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换。 4.4.3 进程唤醒过程 当被阻塞进程所期待的事件出现时,如I/O完成或其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语wakeup( ),将等待该事件的进程唤醒。唤醒原语执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。 4.5 进程的挂起与激活 引

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

21、T中处理机的分配对象为线程,一个线程可被多次挂起和多次激活。在线程内有一个挂起计数(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

22、restart ); 例子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 stac

23、k 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;i

24、f (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 thread error. endl;elsecout Resume thread is ok. endl;Sleep(4000);运行结果CreateThreadMainThread0SubThread0SubThread1MainThread1Sus

25、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 CreateThread endl;/

26、 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

27、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=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 thre

28、ad 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)SubThread2SubThread3M

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

30、程的终止时间比进程短;同进程内的线程切换时间比进程短;由于同进程内线程间共享内存和文件资源,可直接进行不通过内核的通信;进程与线程的关系5.2 线程的属性 线程具有许多传统进程所具有的特征,故又称为轻型进程(1)轻型实体。(线程是进程中的一个实体 )(2) 独立调度和分派的基本单位。在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。而把进程作为资源拥有的单位。由于线程很“轻,故线程的切换非常迅速且开销小。(3) 可并发执行。 (4) 共享进程资源。5.3 OS对线程的实现方式内核维护进程和线程的上下文信息;线程切换由内核完成;一个线程发起系统调用而阻塞,不会影响其他

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

32、式和更简单的规则,也无需用户态/核心态切换,所以速度特别快。一个线程发起系统调用而阻塞,则整个进程在等待。时间片分配给进程,多线程则每个线程就慢。 例:线程执行时间 对于只设置了用户级线程的系统,调度是以进程为单位的,在采用轮转调度算法时,各个进程轮流执行一个时间片,这对诸进程而言,看似公平的,但假如在A进程中包含了一个用户级线程,而在另一个进程B中含有100个线程,这样,进程A中线程的运行时间,将是进程B中线程运行时间的100倍;相应地,速度就快100倍。 假如系统中是设置的内核支持线程,其调度是以线程为单位进行的,这样,进程B可以获得的CPU时间是进程A的100倍,进程B可使100个系统调用并发工作。5.3 Solaris操作系统中的线程同时实现了用户级线程与内核支持线程。 SUN Solaris OS在用户级线程和内核级线程之间,定义了一种轻型进程LWP(内核控制线程,也称为轻权进程),一个进程中至少有一个LWP。Solaris支持内核线程(Kernel threads)、轻权进程(Lightweight Processes)和用户线程(User Level Threads)。一个进程可有大量用户线程;大量用户线程复用少量的轻权进程,不同的轻权进程分别对应不同的内核线程。用户级线程在使用系统调用时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论