清华大学操作系统向勇老师的讲义市公开课一等奖百校联赛获奖课件.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《清华大学操作系统向勇老师的讲义市公开课一等奖百校联赛获奖课件.pptx》由会员分享,可在线阅读,更多相关《清华大学操作系统向勇老师的讲义市公开课一等奖百校联赛获奖课件.pptx(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 进程管理4.1 进程(PROCESS)4.2 进程控制4.3 线程(THREAD)4.4 进程互斥和同时4.5 进程间通信(IPC,INTER-PROCESS COMMUNICATION)4.6 死锁问题(DEADLOCK)4.7 进程其它方面举例为了描述程序在并发执行时对系统资源共享,我们需要一个描述程序执行时动态特征概念,这就是进程。在本章中,我们将讨论进程概念、进程控制和进程间关系。第1页4.1 进程(PROCESS)4.1.1 程序次序执行和并发执行4.1.2 进程定义和描述4.1.3 进程状态转换4.1.4 操作系统代码执行返回第2页4.1.1 程序次序执行和并发执行程序执行
2、有两种方式:次序执行和并发执行。次序执行是单道批处理系统执行方式,也用于简单单片机系统;现在操作系统多为并发执行,含有许多新特征。引入并发执行目标是为了提升资源利用率并适应多任务处理要求。第3页次序执行特征次序性:按照程序结构所指定次序(可能有分支或循环)封闭性:独占全部资源,计算机状态只因为该程序控制逻辑所决定可再现性:初始条件相同则结果相同。如:可经过空指令控制时间关系。并发执行特征间断(异步)性:走走停停,一个程序可能走到中途停下来,失去原有时序关系;失去封闭性:共享资源,受其它程序控制逻辑影响。如:一个程序写到存放器中数据可能被另一个程序修改,失去原有不变特征。失去可再现性:失去封闭性
3、 失去可再现性;外界环境在程序两次执行期间发生改变,失去原有可重复特征。第4页并发执行条件:到达封闭性和可再现性程序 P(i)针对共享变量读集和写集 R(i)和W(i)条件:任意两个程序P(i)和P(j),有:R(i)W(j)=;W(i)R(j)=;W(i)W(j)=;并发执行失去封闭性原因是共享资源影响,去掉这种影响就行了。1966年,由Bernstein给出并发执行条件。(这里没有考虑执行速度影响。)前两条确保一个程序两次读之间数据不改变;最终一条确保写结果不丢掉。现在问题是这个条件不好检验。第5页4.1.2 进程定义和描述它对应虚拟处理机、虚拟存放器和虚拟外设等资源分配和回收;引入多进程
4、,提升了对硬件资源利用率,但又带来额外空间和时间开销,增加了OS 复杂性;1.进程定义一个含有一定独立功效程序在一个数据集合上一次动态执行过程。第6页进程与程序关系类比这时小儿子哭着跑进来,说手被蜜蜂蛰了。教授只好把蛋糕先放在一边。他在食谱上做了个标识,把状态信息统计了起来。然后又去找了一本医疗手册,查到了相关内容,按照上面指令一步步地执行。当伤口处理完之后,又回到厨房继续做蛋糕。有一个计算机科学家,想亲手给女儿做一个生日蛋糕。所以他就找了一本相关做蛋糕食谱,买了一些原料,面粉、鸡蛋、糖、香料等,然后边看边学边做。食谱 程序;科学家 CPU;原料 数据;做蛋糕 =进程;CPU从一个进程(做蛋糕
5、)切换到另一个进程(医疗救护)。第7页2.进程特征动态性:进程含有动态地址空间(数量和内容),地址空间上包含:代码(指令执行和CPU状态改变)数据(变量生成和赋值)系统控制信息(进程控制块生成和删除)独立性:各进程地址空间相互独立,除非采取进程间通信伎俩;并发性、异步性:虚拟结构化:代码段、数据段和关键段(在地址空间中);程序文件中通常也划分了代码段和数据段,而关键段通常就是OS关键(由各个进程共享,包含各进程PCB)第8页四个进程在并发地运行第9页3.进程与程序区分进程是动态,程序是静态:程序是有序代码集合;进程是程序执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和能够复制。
6、进程是暂时,程序永久:进程是一个状态改变过程,程序可长久保留。进程与程序组成不一样:进程组成包含程序、数据和进程控制块(即进程状态信息)。进程与程序对应关系:经过屡次执行,一个程序可对应多个进程;经过调用关系,一个进程可包含多个程序。第10页4.处理机调度器(dispatcher)把处理机从一个进程切换到另一个进程;预防某进程独占处理机;处理机调度器是操作系统中一段代码,它完成以下功效:第11页5.进程控制块(PCB,process control block)每个进程在OS中记录表项(可能有总数目限制),OS据此对进程进行控制和管理(PCB中内容会动态改变),不一样OS则不一样处于关键段,通
7、常不能由应用程序本身代码来直接访问,而要经过系统调用,或经过UNIX中进程文件系统(/proc)直接访问进程映象(image)。文件或目录名为进程标识(如:00316),权限为创建者可读写。进程控制块是由OS维护用来统计进程相关信息一块内存。第12页进程控制块内容进程描述信息:进程标识符(process ID),唯一,通常是一个整数;进程名,通常基于可执行文件名(不唯一);用户标识符(user ID);进程组关系(process group)进程控制信息:当前状态;优先级(priority);代码执行入口地址;程序外存地址;运行统计信息(执行时间、页面调度);进程间同时和通信;阻塞原因资源占用
8、信息:虚拟地址空间现实状况、打开文件列表CPU现场保护结构:存放器值(通用、程序计数器PC、状态PSW,地址包含栈指针)第13页6.PCB组织方式链表:同一状态进程其PCB成一链表,多个状态对应多个不一样链表各状态进程形成不一样链表:就绪链表、阻塞链表索引表:同一状态进程归入一个index表(由index指向PCB),多个状态对应多个不一样index表各状态进行形成不一样索引表:就绪索引表、阻塞索引表第14页7.进程上下文用户级上下文:进程用户地址空间(包含用户栈各层次),包含用户正文段、用户数据段和用户栈;存放器级上下文:程序存放器、处理机状态存放器、栈指针、通用存放器值;系统级上下文:静态
9、部分(PCB和资源表格)动态部分:关键栈(关键过程栈结构,不一样进程在调用相同关键过程时有不一样关键栈)进程上下文是对进程执行活动全过程静态描述。进程上下文由进程用户地址空间内容、硬件存放器内容及与该进程相关关键数据结构组成。第15页关键态和用户态用户态是指进程执行用户应用程序代码时状态。处于用户态进程,不可直接访问受保护OS代码;关键态是指进程经过系统调用来执行操作系统代码时状态。处于关键态进程执行代码是OS代码,能够访问整个进程全部地址空间。第16页4.1.3 进程状态转换4.1.3.1 两状态进程模型4.1.3.2 五状态进程模型4.1.3.3 挂起进程模型第17页4.1.3.1 两状态
10、进程模型第18页1.状态运行状态(Running):占用处理机资源;暂停状态(Not-Running):等候进程调度分配处理机资源;第19页2.转换进程创建(Enter):系统创建进程,形成PCB,分配所需资源,排入暂停进程表(可为一个队列);调度运行(Dispatch):从暂停进程表中选择一个进程(要求已完成I/O操作),进入运行状态;暂停运行(Pause):用完时间片或开启I/O操作后,放弃处理机,进入暂停进程表;进程结束(Exit):进程运行中止;第20页4.1.3.2 五状态进程模型两状态模型无法区分暂停进程表中可运行和阻塞,五状态模型就是对暂停状态细化。五状态进程模型(状态变迁)第2
11、1页五状态进程模型(单队列结构)第22页五状态进程模型(多队列结构)第23页1.状态运行状态(Running):占用处理机资源;处于此状态进程数目小于等于CPU数目。在没有其它进程能够执行时(如全部进程都在阻塞状态),通常会自动执行系统空闲进程(相当于空操作)。就绪状态(Ready):进程已取得除处理机外所需资源,等候分配处理机资源;只要分配CPU就可执行。能够按多个优先级来划分队列,如:时间片用完低优,I/O完成中优,页面调入完成高优阻塞状态(Blocked):因为进程等候某种条件(如I/O操作或进程同时),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行。如:等
12、候I/O操作完成。第24页创建状态(New):进程刚创建,但还不能运行(一个可能原因是OS对并发进程数限制);如:分配和建立PCB表项(可能有数目限制)、建立资源表格(如打开文件表)并分配资源,加载程序并建立地址空间表。结束状态(Exit):进程已结束运行,回收除PCB之外其它资源,并让其它进程从PCB中搜集相关信息(如记帐,将退出码exit code传递给父进程)。第25页2.转换创建新进程:创建一个新进程,以运行一个程序。可能原因为:用户登录、OS创建以提供某项服务、批处理作业。收容(Admit,也称为提交):收容一个新进程,进入就绪状态。因为性能、内存、进程总数等原因,系统会限制并发进程
13、总数。调度运行(Dispatch):从就绪进程表中选择一个进程,进入运行状态;释放(Release):因为进程完成或失败而中止进程运行,进入结束状态;运行到结束:分为正常退出Exit和异常退出abort(执行超时或内存不够,非法指令或地址,I/O失败,被其它进程所终止)就绪或阻塞到结束:可能原因有:父进程可在任何时间中止子进程;第26页超时(Timeout):因为用完时间片或高优先进程就绪(被抢先)等造成进程暂停运行;事件等候(Event Wait):进程要求事件未出现而进入阻塞;可能原因包含:申请系统服务或资源、通信、I/O操作等;事件出现(Event Occurs):进程等候事件出现;如:
14、操作完成、申请成功等;注:对于五状态进程模型,一个主要问题是当一个事件出现时怎样检验阻塞进程表中进程状态。当进程多时,对系统性能影响很大。一个可能作法是按等候事件类型,排成多个队列。第27页4.1.3.3 挂起进程模型这个问题出现是因为进程优先级引入,一些低优先级进程可能等候较长时间,从而被对换至外存。这么做目标是:提升处理机效率:就绪进程表为空时,没有可运行进程。经过提交新进程,可提升处理机效率;为运行进程提供足够内存:资源担心时,暂停一些进程,如:CPU繁忙(或实时任务执行),内存担心用于调试:在调试时,挂起被调试进程(从而对其地址空间进行读写)第28页单挂起进程模型第29页双挂起进程模型
15、第30页1.状态就绪状态(Ready):进程在内存且可马上进入运行状态;阻塞状态(Blocked):进程在内存并等候某事件出现;阻塞挂起状态(Blocked,suspend):进程在外存并等候某事件出现;就绪挂起状态(Ready,suspend):进程在外存,但只要进入内存,即可运行;注:这里只列出了意义有改变或新状态。第31页2.转换挂起(Suspend):把一个进程从内存转到外存;可能有以下几个情况:阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程;就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪)进程和低优先级就绪进程时,系
16、统会选择挂起低优先级就绪进程;运行到就绪挂起:对抢先式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态;第32页激活(Activate):把一个进程从外存转到内存;可能有以下几个情况:就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换;阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等候事件)进程;第33页事件出现(Event Occurs):进程等候事件出现;如:操作完成、申请成功等;可能情况有:阻塞到就绪:针对内存进程事件出现;阻塞挂起到就绪挂起:针对外存进程事件出现;
17、收容(Admit):收容一个新进程,进入就绪状态或就绪挂起状态。进入就绪挂起原因是系统希望保持一个大就绪进程表(挂起和非挂起);第34页4.1.4 操作系统代码执行OS和进程关系:OS不作为进程地址空间一部分:传统方法。OS作为进程地址空间一部分:如UNIXOS功效分别在关键和系统服务进程中,只有OS关键作为进程地址空间一部分:如Windows NT通常,OS关键不是一个进程,其执行不被调度。第35页4.2 进程控制4.2.1 进程控制功效4.2.2 进程创建和退出4.2.3 UNIX进程阻塞和唤醒4.2.4 NT线程挂起和激活4.2.5 UNIX进程管理举例4.2.6 Windows NT进
18、程管理举例返回第36页4.2.1 进程控制功效完成进程状态转换。原语(primitive):由若干条指令组成“原子操作(atomic operation)”过程,作为一个整体而不可分割要么全都完成,要么全都不做。许多系统调用就是原语。注意:系统调用并不都是原语。进程A调用read(),因无数据而阻塞,在read()里未返回。然后进程B调用read(),此时read()被重入。系统调用不一定一次执行完并返回该进程,有可能在特定点暂停,而转入到其它进程。第37页4.2.2 进程创建和退出1.创建继承(inherit):子进程能够从父进程中继承用户标识符、环境变量、打开文件、文件系统当前目录、控制终
19、端、已经连接共享存放区、信号处理例程入口表等不被继承:进程标识符,父进程标识符spawn创建并执行一个新进程;新进程与父进程关系可有各种:覆盖(_P_OVERLAY)、并发(_P_NOWAIT or _P_NOWAITO)、父进程阻塞(_P_WAIT)、后台(_P_DETACH)等。第38页2.退出也称为“终止”或主程序返回:调用exit()可终止进程。释放资源:释放内外存空间关闭全部打开文件释放共享内存段和各种锁定lock第39页4.2.3 UNIX进程阻塞和唤醒阻塞:暂停一段时间(sleep);暂停并等候信号(pause);等候子进程暂停或终止(wait);唤醒:发送信号到某个或一组进程(
20、kill)第40页调用wait挂起本进程以等候子进程结束,子进程结束时返回。父进程创建多个子进程且已经有某子进程退出时,父进程中wait函数在第一个子进程结束时返回。其调用格式为pid_t wait(int*stat_loc);;返回值为子进程ID。waitpid()等候指定进程号子进程返回并修改状态;waitid()等候子进程修改状态;调用pause挂起本进程以等候信号,接收到信号后恢复执行。当接收到中止进程信号时,该调用不再返回。其调用格式为int pause(void);;第41页调用sleep将在指定时间seconds内挂起本进程。其调用格式为:unsigned sleep(unsig
21、ned seconds);;返回值为实际挂起时间。调用kill可发送信号sig到某个或一组进程pid。其调用格式为:int kill(pid_t pid,int sig);。信号定义在文件/usr/include/asm/signal.h中。命令kill可用于向进程发送信号。如:kill-9 100将发送SIGKILL到ID为100进程;该命令将中止该进程执行。第42页实例:UNIX_wait演示子进程与父进程关系和fork、exec、wait使用;程序main.c功效是进行10次循环,创建2个子进程。循环到第3次时,等候子进程结束。#include#include#include#inclu
22、de pid_t wait(int*stat_loc);void perror(const char*s);#include int errno;int global;第43页main()int local,i;pid_t child;if(child=fork()=-1)/创建失败 printf(Fork Error.n);if(child=0)/子进程 printf(Now it is in child process.n);if(execl(/home/xyong/work/ttt,ttt,NULL)=-1)/加载程序失败 perror(Error in child process);g
23、lobal=local+2;exit();第44页/父进程 printf(Now it is in parent process.n);for(i=0;i10;i+)sleep(2);printf(Parent:%dn,i);if(i=2)if(child=fork()=-1)/创建失败 printf(Fork Error.n);if(child=0)/子进程 printf(Now it is in child process.n);if(execl(/home/xyong/work/ttt,ttt,NULL)=-1)/加载程序失败 perror(Error in child process)
24、;global=local+2;exit();第45页if(i=3)pid_t temp;temp=wait(NULL);printf(Child process ID:%dn,temp);global=local+1;exit();第46页程序test.c#include#include pid_t getpid(void);pid_t getppid(void);int global;main()int local;int i;pid_t CurrentProcessID,ParentProcessID;CurrentProcessID=getpid();ParentProcessID=g
25、etppid();printf(Now it is in the program TEST.n);for(i=0;i10;i+)sleep(2);printf(Parent:%d,Current:%d,Nunber:%dn,ParentProcessID,CurrentProcessID,i);global=local+1;exit();功效是进行10次循环。第47页结果Parent:7072,Current:7074,Nunber:4Parent:7072,Current:7073,Nunber:8Parent:7072,Current:7074,Nunber:5Parent:7072,Cu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清华大学 操作系统 老师 讲义 公开 一等奖 联赛 获奖 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内