操作系统zxj-2进程管理

上传人:xiao****1972 文档编号:71631310 上传时间:2019-01-21 格式:PPT 页数:137 大小:2.03MB
返回 下载 相关 举报
操作系统zxj-2进程管理_第1页
第1页 / 共137页
操作系统zxj-2进程管理_第2页
第2页 / 共137页
操作系统zxj-2进程管理_第3页
第3页 / 共137页
操作系统zxj-2进程管理_第4页
第4页 / 共137页
操作系统zxj-2进程管理_第5页
第5页 / 共137页
点击查看更多>>
资源描述

《操作系统zxj-2进程管理》由会员分享,可在线阅读,更多相关《操作系统zxj-2进程管理(137页珍藏版)》请在金锄头文库上搜索。

1、第二章,进程管理,2.1.1 程序的顺序执行及特征 一、程序执行有固定的时序。 二、特征: 顺序性:处理机的操作必须严格按照程序所规定的顺序执行 封闭性:程序一旦开始执行,其计算结果不受外界影响 可再现性:只要初始条件相同,一个程序多次重复执行,将得到相同的结果。,2.1进程的基本概念,I1,C1,P1,I2,C2,P2,2.1.2前趋图定义,有向无循环图(DAG):描述进程间执行的前后关系 表示方式: (1)p1-p2 (2)-=(p1,p2)| p1 必须在p2开始前完成 节点表示:一条语句,一个程序段,一进程。,P1,P2,P3,P4,2.1.3 程序的并发执行,一、多个程序的并发执行(

2、可能性分析),I1,I2,I3,I4,C1,C2,C3,C4,P1,P2,P3,P4,t,程序的并发执行(2),二、特征 间断性:程序之间相互制约的关系,将导致程序具有间断性 失去封闭性:主要由共享资源引起 不可再现性:设N的初值为n。 举例:有2个循环程序A和B,它们共享一个变量N,程序A每执行一次时,都要做N:=N+1; B则每次要执行Print(N), 然后再做N:=0. 若程序A,B以不同的速度运行有以下三种不同的结果,程序的并发执行(3),N:=N+1在print(N)和N:=0之前,则N值分别为n+1,n+1,0. N:=N+1在print(N)和N:=0之后,则N值分别为n,0,

3、1. N:=N+1在print(N)和N:=0之间,则N值分别为n,n+1,0.,2.1.4进程的特征和状态,1. 进程的特征和定义 一、定义: 程序在并发环境下的一次执行过程 1.结构特征 进程:由程序段、数据段及进程控制块三部分构成,总称“进程映像”。 2.动态性 由“创建”而产生,由“调度”而执行;由得不到资源而阻塞;由撤消而消亡。(而程序是静态的)。,2.1.4进程的特征和状态(2),3.并发性 只有建立了进程,才能并发执行。 4.独立性。 独立运行,独立获得资源。 5.异步性:(间断性),进程与程序区别,程序是静态的,进程是动态的; 进程更能真实地描述并发,而程序不能; 一个程序可对

4、应多个进程; 进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的;程序可作为软件资源长期保存,进程只是一次执行过程,是暂时的; 进程是系统分配调度的独立单位,能与其他进程并发执行; 进程具有创建其他进程的功能,而程序没有。,2.1.4进程的特征和状态(3),2. 进程的三种基本状态 就绪状态: 执行状态 阻塞状态,就绪,阻塞,执行,时间片完,进程调度,I/O请求,I/O完成,图25 进程的三种基本状态及其转换,2.1.4进程的特征和状态(4),3. 挂起状态(被换出内存的状态) 引入原因 终端用户请求 父进程请求 负荷调节需要(实时系统) 操作系统需要 进程状态的转换(图2-6) 活动就

5、绪 静止就绪 活动阻塞 静止阻塞 静止就绪 活动就绪 静止阻塞 活动阻塞,图26 具有挂起状态的进程状态图,执行,活动 就绪,静止 就绪,活动 阻塞,静止 阻塞,激活,挂起,激活,挂起,释放,释放,挂起,请求I/O,思考题,1如果系统中有N个进程,运行的进程最多几个,最少几个;就绪进程最多几个最少几个;阻塞进程最多几个,最少几个? 2. 有没有这样的状态转换,为什么? (1) 阻塞运行; (2) 就绪阻塞,实验,写一个程序描述进程状态迁移过程。 要求: 提供导致进程状态变化的调用接口,包括创建、删除、调度、阻塞、时间到、挂起、激活等。 实现进程列表显示的接口。 注:这里设计的进程是一个假设的对

6、象实体,是由程序自己创建和删除,不是系统维护的进程。,2.1.5进程控制块,1.进程控制块的作用 是进程存在的唯一标志; PCB(process control block)常驻内存 2.进程控制块中的信息 标识、处理机状态,进程调度信息,进程控制信息,2.1.5进程控制块(2),3.PCB的组织 链接 索引,执行指针,就绪队列指针,阻塞队列指针,空闲队列指针,等待队列示例,struct wait_queue struct task_struct * task; struct wait_queue * next; ;,PCB,PCB,PCB,2.1.5进程控制块(3),3.PCB的组织 索引(

7、p34图2-8),执行指针,就绪表指针,阻塞表指针,补充,PCB和进程的代码数据放在一起吗? 系统态和用户态 系统空间和用户空间 系统调用和普通调用的区别? 系统调用会引起从用户态进入核心态,进程-进程控制,处理机执行状态 系统态 用户态 进程控制机构 内核:中断处理,时钟管理,进程管理,存储器管理,设备管理等。 原语(primitive) 由若干条指令构成的“原子操作(atomic operation)”过程,作为一个整体而不可分割要么全都完成,要么全都不做。 许多系统调用就是原语。,2.2 进程控制,2.2.1 进程的创建 一、进程图: 描述了进程的家族关系:(P34 图2-9) 子进程可

8、继承父的资源,撤消时应归还给父进程,父的撤消会撤消全部子进程。,二、引起创建进程的事件: 1.用户登录: 为终端用户建立一进程 2.作业调度:(不是进程调度) 为被调度的作业建立进程 3.提供服务: 如要打印时建立打印进程 4.应用请求: 由应用程序建立多个进程,2.2.1 进程的创建(2),三、进程的创建:(creat原语) 1.申请空白PCB(一个系统的PCB是有限的) 2.为新进程分配资源(不同于一般的分配,PCB-LIST在一个特殊区域) 3.初始化PCB 4.将新进程插入就绪队列。,一个典型的进程创建原语,Create (s0,m0,pi) p=Get_New_PCB(); /分配新

9、的PCB pid=Get_New_PID(); /分配进程的PID 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(); /调度程序 ,2.2.2 进程的终止,一、引起进程终止的事件 1.正常结束:进程运行完成而推出 2.异常结束:进程因异常而强行结束 越界错误;保护错;非法指令;特权指令错;运行超时;等

10、待超时;算术运算错;I/O故障 3.外界干预: a.系统员kill进程; b.父进程终止; c.父进程请求。,2.2.2 进程的终止(2),二、进程的终止过程(终止进程的实质就是回收PCB) (1)检查进程状态; (2)执行态中止,且置调度标志为真。 (3)有无子孙需终止。 (4)归还资源给其父进程或系统。 (5)从PCB队列中移出PCB.(并回收PCB),进程-进程控制,一个典型进程终止原语如下: Destroy ( pid ) p=Get_PCB(pid); /获取进程控制块 Kill_Tree(p); /删除整个进程树 Scheduler(); /调度器 ,2.2.3 进程的阻塞与唤醒,

11、一、引起进程阻塞和唤醒的事件 1.请求系统服务而得不到满足时,如问系统请求打印。 2.启动某种操作而需同步时:如该操作和请求该操作的进程需同步运行(即非异步操作)。 3.新数据尚未到达:如进程A写,进程B读,则A未写,完B不能读。 4.无新工作可做。,2.2.3 进程的阻塞与唤醒(2),二、进程阻塞过程: 是进程自身的一种主动行为 a.调block原语 b.停止执行,修改PCB入阻塞队列(一个或多个),并转调度。 三、唤醒过程 其它相关进程完成。 a.wakeup原语 b.修改PCB,入就绪队列 可见,有block原语,在其它进程中就应有wakeup原语。,Block( ) /获取当前进程的进

12、程控制块 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); /从阻塞队列中移出进程p Remove(p-Status.List,p); /进程的状态改为就 p-Status.Type=Ready;

13、 /将进程插入到就绪队列 Insert (RL,p); /调度程序 Scheduler (); ,唤醒原语的执行过程如下:,2.2.4 进程的挂起与激活,一、进程的挂起过程 由进程自己或其父进程调suspend原语完成,将该进程PCB移到指定区域,注意状态的改变,有可能要重新调度。 二、进程的激活过程。 active原语(如在外存,调入内存,改变状态,根据情况看是否调度,如抢先或非抢先)。 阻塞、唤醒一般由OS实现,而挂起与激活可由用户干预。,进程-进程控制,实例研究:Linux和Windows系统创建进程 Linux系统中进程创建fork 在Linux系统中,用户或系统可以使用系统调用for

14、k来创建一个新的进程。fork的函数原形为: pid_t fork() 当一个进程调用fork创建一个子进程后,父进程和子进程都在自己独立的地址空间内执行。它们之间不共享任何地址空间,但是父子进程具有相同的程序代码、数据和堆栈段, 因此,为了区别运行中的父子进程,fork系统调用向父子进程返回不同的值。它向子进程返回0,而向父进程返回子进程的PID。,/* - The file create.c introduces the use of fork. -*/ #include main() int pid; printf(“Before: my pid is %d .n”,getpid();

15、pid=fork(); /create 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); ,进程-进程控制,Windows系统中进程的创建CreateProcess 在windows系统,一个进程可以调用win32 API的CreateProcess函数来创建一个新的进程及其主线程,以执行指定的任务。在利用CreateProcess建立进程时,操作系统要为新进程分配新的地址空间和资源,建立新的主线程。一旦新进程建立,父进程仍然使用原来的地址空间继续执行,而新进程则在新的地址空间执行一个新的程序

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

最新文档


当前位置:首页 > 高等教育 > 大学课件

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