操作系统zxj2进程管理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《操作系统zxj2进程管理课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 zxj2 进程 管理 课件
- 资源描述:
-
1、进程管理进程管理I1C1P1I2C2P2进程管理进程管理P1P2P3P4进程管理进程管理I1I2I3I4C1C2C3C4P1P2P3P4t进程管理进程管理进程管理进程管理进程管理进程管理进程管理进程管理进程管理进程管理 程序是静态的,进程是动态的;进程更能真实地描述并发,而程序不能;一个程序可对应多个进程;进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的;程序可作为软件资源长期保存,进程只是一次执行过程,是暂时的;进程是系统分配调度的独立单位,能与其他进程并发执行;进程具有创建其他进程的功能,而程序没有。进程管理进程管理就绪就绪阻塞阻塞执行执行时间片完时间片完进程调度进程调度I/O请求
2、请求I/O完成完成图图25 进程的三种基本状态及其转换进程的三种基本状态及其转换进程管理进程管理进程管理进程管理执行执行活动活动就绪就绪静止静止就绪就绪活动活动阻塞阻塞静止静止阻塞阻塞激活激活挂起挂起激活激活挂起挂起释放释放释放释放挂起挂起请求请求I/O进程管理进程管理1 1如果系统中有如果系统中有N N个进程,运行的进程最多几个,最个进程,运行的进程最多几个,最少几个;就绪进程最多几个最少几个;阻塞进程最少几个;就绪进程最多几个最少几个;阻塞进程最多几个,最少几个?多几个,最少几个?2.2.有没有这样的状态转换,为什么?有没有这样的状态转换,为什么?(1 1)阻塞阻塞运行;运行;(2 2)就
3、绪就绪阻塞阻塞进程管理进程管理进程管理进程管理v写一个程序描述进程状态迁移过程。写一个程序描述进程状态迁移过程。v要求:要求:提供导致进程状态变化的调用接口,包括创建、提供导致进程状态变化的调用接口,包括创建、删除、调度、阻塞、时间到、挂起、激活等。删除、调度、阻塞、时间到、挂起、激活等。实现进程列表显示的接口。实现进程列表显示的接口。注:这里设计的进程是一个假设的对象实体,是注:这里设计的进程是一个假设的对象实体,是由程序自己创建和删除,不是系统维护的进程。由程序自己创建和删除,不是系统维护的进程。进程管理进程管理pid进程状态进程状态现场现场优先级优先级阻塞原因阻塞原因程序地址程序地址同步
4、机制同步机制资源清单资源清单链接指针链接指针进程管理进程管理执行指针执行指针就绪队列指针就绪队列指针阻塞队列指针阻塞队列指针空闲队列指针空闲队列指针PCB14PCB23PCB30PCB48PCB5PCB67PCB79PCB80PCB91进程管理进程管理structstruct wait_queue wait_queue struct task_structstruct task_struct *task;task;structstruct wait_queue wait_queue*next;next;PCBPCBPCB进程管理进程管理PCB1PCB2PCB3PCB4PCB5PCB6PCB7执
5、行指针执行指针就绪表指针就绪表指针阻塞表指针阻塞表指针进程管理进程管理进程管理进程管理v处理机执行状态 系统态 用户态v进程控制机构 内核:中断处理,时钟管理,进程管理,存储器管理,设备管理等。原语(primitive)由若干条指令构成的“原子操作(atomic operation)”过程,作为一个整体而不可分割要么全都完成,要么全都不做。许多系统调用就是原语。进程管理进程管理根ABCGFED祖先进程管理进程管理进程管理进程管理进程管理进程管理Create(s0,m0,pi)p=Get_New_PCB();/分配新的分配新的PCB pid=Get_New_PID();/分配进程的分配进程的PI
6、D pID=pid;/设置进程的设置进程的PID p-CPU_State=s0;/CPU的状态的状态 p-Memory=m0;/内存内存 p-Priority=pi;/优先级优先级 p-Status.Type=Ready;/进程状态进程状态 p-Status.List=RL;/进程队列进程队列 Insert(RL,p);/将进程将进程p插入就绪队列插入就绪队列 Scheduler();/调度程序调度程序 进程管理进程管理进程管理进程管理进程管理进程管理 一个典型进程终止原语如下:Destroy(pid)p=Get_PCB(pid);/获取进程控制块 Kill_Tree(p);/删除整个进程树
7、Scheduler();/调度器进程管理进程管理进程管理进程管理进程管理进程管理Block()/获取当前进程的进程控制块 p=Get_PCB();/保存当前进程的状态 s=p-Status.Type;cpu=p-Processor_ID;/处理机状态/保存处理机现场 p-CPU_State=Interrupt(cpu);/将进程的状态改为阻塞 p-Status.Type=Blocked;Insert(BL,p);/将进程插入等待队列 Scheduler();阻塞原语的实现过程阻塞原语的实现过程进程管理进程管理Wakeup(pid)/获取进程控制P=Get_PCB(pid);/从阻塞队列中移出进
8、程pRemove(p-Status.List,p);/进程的状态改为就p-Status.Type=Ready;/将进程插入到就绪队列Insert(RL,p);/调度程序Scheduler();v唤醒原语的执行过程如下:唤醒原语的执行过程如下:进程管理进程管理进程管理进程管理v实例研究:Linux和Windows系统创建进程 LinuxLinux系统中进程创建系统中进程创建fork fork 在在LinuxLinux系统中,用户或系统可以使用系统调用系统中,用户或系统可以使用系统调用forkfork来创建一个来创建一个新的进程。新的进程。forkfork的函数原形为:的函数原形为:pid_tpi
9、d_t fork()fork()当一个进程调用当一个进程调用forkfork创建一个子进程后,父进程和子进程都在自创建一个子进程后,父进程和子进程都在自己独立的地址空间内执行。它们之间不共享任何地址空间,但是己独立的地址空间内执行。它们之间不共享任何地址空间,但是父子进程具有相同的程序代码、数据和堆栈段,父子进程具有相同的程序代码、数据和堆栈段,因此,为了区因此,为了区别运行中的父子进程,别运行中的父子进程,forkfork系统调用向父子进程返回不同的值。系统调用向父子进程返回不同的值。它向子进程返回它向子进程返回0 0,而向父进程返回子进程的,而向父进程返回子进程的PIDPID。进程管理进程
10、管理.Beforefork()After.forkfork执行前执行前一个控制流进入内核一个控制流进入内核forkfork模块模块。Beforefork()After。Beforefork()Afterforkforkfork执行后执行后调用后,从调用后,从forkfork返回两个控制流返回两个控制流父进程父进程子进程子进程进程管理进程管理/*-The file create.c introduces the use of fork.-*/#include main()int pid;printf(“Before:my pid is%d.n”,getpid();pid=fork();/crea
11、te new process if(pid=-1)/出错处理出错处理 perror(“Can not fork process!”);/error else if(pid=0)/子进程代码子进程代码 printf(“I am the child.My pid is%d.n”,getpid();else /父进程代码父进程代码 printf(“I am the parent.My child is%d.n”,pid);进程管理进程管理vWindows系统中进程的创建CreateProcess 在windows系统,一个进程可以调用win32 API的CreateProcess函数来创建一个新的进
12、程及其主线程,以执行指定的任务。在利用CreateProcess建立进程时,操作系统要为新进程分配新的地址空间和资源,建立新的主线程。一旦新进程建立,父进程仍然使用原来的地址空间继续执行,而新进程则在新的地址空间执行一个新的程序。CreateProcess含有10个参数来指定建立进程的方式,具体参数的含义可参考相关的Win32 API手册。进程管理进程管理#include#include#include STARTUPINFO startInfo;PROCESS_INFORMATION processInfo;strcpy(lpCommandLine,“c:WINNTSYSTEM32NOTEP
13、AD.EXE temp.txt”);ZeroMemory(&startupInfo,sizeof(startInfo);startInfo.cb=sizeof(startInfo);if(!CreateProcess(NULL,lpCommandLine,NULL,NULL,FALSE,HIGH_PRIORTY_CLASS CREATE_NEW_CONSOLE,NULL,NULL,&startInfo,&processInfo)fprintf(stderr,”CreateProcess failed!”);ExitProcess(1);CloseHandle(&processInfo.hThr
14、ead);进程管理进程管理进程管理进程管理进程管理进程管理v 进程同步举例:公共汽车中的司机和售票员进程同步举例:公共汽车中的司机和售票员司机司机 P1 售票员售票员 P2 while(true)while(true)关门;关门;启动车辆;启动车辆;正常运行;正常运行;售票;售票;到站停车;到站停车;开门;开门;进程的同步是指系统中多个进程中发生的事件存在某种时序进程的同步是指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。具体说,一个进关系,需要相互合作,共同完成一项任务。具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获程运行到某一点时要求另一伙
15、伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态。就绪态。进程管理进程管理 例如:例如:系统中只有一台打印机,进程系统中只有一台打印机,进程p1p1,p2p2都需要都需要使用打印机。使用打印机。临界资源(临界资源(Critical ResourceCritical Resource)一次只能被一个进程使用一次只能被一个进程使用 形式:硬件,软件:变量、数据、队列等形式:硬件,软件:变量、数据、队列等 当临界资源由一个进程占用后,其它进程如果要使用它,必须等待占用进程使用完毕并把它释放后,才能由另一个进程使用
16、。多个进程在共享临界资源时的这种制约关系称为进程的互斥。进程管理进程管理进程管理进程管理producer:repeat produce an item in nextp;while counter=n do no-op;bufferin:=nextp;in:=(in+1)mod n;counter:=counter+1;until false;consumer:repeatwhile counter=0 do no-op;nextc:=bufferout;out:=(out+1)mod n;counter:=counter-1;consumer the item in nextc;until
17、false;进程管理进程管理进程管理进程管理进程管理进程管理v一次至多允许一个进程进入临界区内v一个进程不能不限地停留在临界区内v一个进程不能无限地等待进入临界区 有空让进 无空等待 择一而入 算法可行进程管理进程管理进程管理进程管理进程管理进程管理v 使用LOCK和UNLOCK原语v 系统为每一个临界资源设置一把锁,当一个进程欲进入临界区时,首先关锁,推出临界区时,把锁打开。v Lock原语:Lock(W)begin L:if W=1 then goto L else W:=1;end;UNLOCK原语:UNlock(W)begin W:=0;end用变量W代表某种资源的状态,w称为锁,锁位
18、值 为0;表示资源可用,而用1表示资源已被占用。进程管理进程管理 互斥的各个进程在各自单独执行时都可以得到正确的运行结果,但是当它们在临界区内交叉执行时就可能出现问题。而同步的各个进程,如果各自单独执行将不会完成作业的特定任务,只要当它们互相配合、共同协调推进时才能得到正确的运行结果。互斥的进程只要求它们不能同时进入临界区,而至于哪个进程先进入则不会产生运行的错误。但同步的进程的协调关系是建立在它们之间执行时序的基础上,所以,各个进程必须按照严格的先后次序执行。一般情况下,互斥的进程并不知道对方的存在,而同步的进程不仅知道其它进程的存在,还要通过与其它进程的通信来达到相互的协调。进程管理进程管
19、理进程互斥的软件方法进程互斥的软件方法 通过平等协商方式实现进程互斥的最初方法是软件方法 其基本思路是在进入区检查和设置一些标志,如果已有进程在临界区,则在进入区通过循环检查进行等待;在退出区修改标志 其中的主要问题是设置什么标志和如何检查标志软件解法的缺点:1.忙等待 2.实现过于复杂 3.需要高的编程技巧进程管理进程管理 “测试并设置”指令“交换”指令“开关中断”指令进入临界区前执行:进入临界区前执行:执行执行“关中断关中断”指令指令离开临界区后执行:离开临界区后执行:执行执行“开中断开中断”指令指令 能够实现进程互斥,但不能满足“让权等待”,造成处理机资源浪费进程管理进程管理进程管理进程
20、管理进程管理进程管理进程管理进程管理进程管理进程管理在信号量的实现中,在信号量的实现中,S.value的初值表示系统某类资源的数的初值表示系统某类资源的数目,因而又称为资源信号量,对它的每次目,因而又称为资源信号量,对它的每次wait操作,意味着操作,意味着进程请求一个单位的该类资源。进程请求一个单位的该类资源。当当S.value0时,表示该类资源已分配完毕,因而进程调用时,表示该类资源已分配完毕,因而进程调用block原语,进行自我阻塞,放弃处理机,并插入到信号量原语,进行自我阻塞,放弃处理机,并插入到信号量链表链表S.L中。此时,中。此时,S.value的绝对值表示在该信号量链表中的绝对值
21、表示在该信号量链表中已阻塞进程的个数、亦即恰好等于对信号量已阻塞进程的个数、亦即恰好等于对信号量S实施实施wait操作操作而被封锁起来并进入信号量而被封锁起来并进入信号量S队列的进程数。队列的进程数。对信号量的每次对信号量的每次signal操作,表示执行进程释放一个单位资操作,表示执行进程释放一个单位资源。源。进程管理进程管理进程管理进程管理v问题的引入问题的引入 假定有两个进程假定有两个进程A A和和B B,它们都要求访问共享数据,它们都要求访问共享数据D D和和E E。当然,共。当然,共享数据都应作为临界资源。为此,可为这两个数据分别设置用于互斥的享数据都应作为临界资源。为此,可为这两个数
22、据分别设置用于互斥的信号量信号量DmutexDmutex和和EmutexEmutex,并令它们的初值都是,并令它们的初值都是1 1。相应地,在两个进程。相应地,在两个进程中都要包含两个对中都要包含两个对DmutexDmutex和和EmutexEmutex的操作,即的操作,即 process A:process B:process A:process B:wait(Dmutex);wait(Emutex wait(Dmutex);wait(Emutex););wait(Emutex);wait(Dmutex wait(Emutex);wait(Dmutex););若进程若进程A A和和B B按下
23、述次序交替执行按下述次序交替执行waitwait操作:操作:process A:wait(Dmutexprocess A:wait(Dmutex););于是于是DmutexDmutex=0=0 process B:wait(Emutex process B:wait(Emutex););于是于是EmutexEmutex=0=0 process A:wait(Emutex process A:wait(Emutex););于是于是EmutexEmutex=-1,A=-1,A阻塞阻塞 process B:wait(Dmutexprocess B:wait(Dmutex););于是于是DmutexD
24、mutex=-1,B=-1,B阻塞阻塞进程管理进程管理v出现死锁的原因主要在于进程运行时需要多个资源,出现死锁的原因主要在于进程运行时需要多个资源,在为每个进程分配所需的全部资源时,不能保证原在为每个进程分配所需的全部资源时,不能保证原子操作,从而导致进程之间相互等待对方释放所占子操作,从而导致进程之间相互等待对方释放所占资源的死锁状态。为了解决进程同时需要多种资源资源的死锁状态。为了解决进程同时需要多种资源且每种资源要占用一段时间的问题,人们提出了且每种资源要占用一段时间的问题,人们提出了ANDAND型信号量同步机制。型信号量同步机制。进程管理进程管理 将进程在整个运行过程中需要的所有资源,
25、一次性全将进程在整个运行过程中需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放。只要部地分配给进程,待进程使用完后再一起释放。只要尚有一个资源未能分配给进程,其他所有可能为之分尚有一个资源未能分配给进程,其他所有可能为之分配的资源,也不分配给它。亦即,对若干个临界资源配的资源,也不分配给它。亦即,对若干个临界资源的分配,采取了原子操作方式:要么全部分配给进程,的分配,采取了原子操作方式:要么全部分配给进程,要么一个也不分配。要么一个也不分配。进程管理进程管理Swait(s1,s2,sn)if s11 and and sn 1 then for i:=1 to n do si:=
展开阅读全文