您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统第3章_1.
1第三章、进程管理3.1进程的概念3.2进程的描述3.3进程状态及其转换3.4进程控制3.5进程互斥3.6进程同步3.7进程通信3.8死锁问题3.9线程3.1进程的概念一、程序的并发执行1、程序的顺序执行:具独立功能的程序独占CPU及其它资源,直至得到结果。特点:1)顺序性2)封闭性3)可再现性作业1作业2232、程序的并发执行:一组逻辑上独立的程序在执行过程中,其执行时间在客观上重叠,一个程序执行尚未结束,另一段程序即开始执行。(多道程序之间、一道程序的持续段之间)特点:1)失去封闭性2)不可再现性3)间断性41)并发执行的特点——失去封闭性由于多个程序共享资源,资源的状态可由多个程序改变,一个程序的运行会受到其它程序的影响。例2:Proceduregetaddr(top)beginlocalrr=(top)top=top–1return(r)endProcedurereladdr(top)begintop=top+1(top)=blkend52)并发执行的特点——不可再现性beginintegerN=0;cobeginprogramA:begin。。。N=N+1;①gotoprogramAendprogramB:begin。。。print(N);②N=0;③gotoprogramBendcoendendN=n打印结果N值①②③n+10②①③n0②③①n1结论:程序的执行结果与并发程序的执行速度和顺序有关,即便初始条件相同,也可能得到不同的结果。例3:63)并发执行的特点——间断性由于多个程序共享资源,或为完成一项任务相互合作,使并发程序之间形成相互制约关系,导致其“执行——暂停——执行”这种间断性活动规律。相邻语句可并发执行的Bernstein条件:(P39)例1:以下三个赋值语句哪两个之间可以并发执行:S1:a=x+yR(S1)={x,y}W(S1)={a}S2:b=z+1R(S2)={z}W(S2)={b}S3:c=a+bR(S3)={a,b}W(S3)={c}S1与S2可并发执行:R(S1)∩W(S2)∪W(S1)∩R(S2)∪WR(S1)∩W(S2)={∮}S1与S3不能并发执行:W(S1)∩R(S3)={a}S2与S3不能并发执行:W(S2)∩R(S3)={b}38总结多道程序环境下程序的特征:并发性:外设-主机,外设-外设,程序-程序;制约性:共享资源、相互合作,相互牵制;动态性:走走停停、异步运行。“程序”概念的局限:程序是完成某个功能的指令的集合,静态的概念,无法反映程序运行的动态性运行在CPU上只有一个程序,对于多任务则无法反映并发性思考:今天借书和明天借书有何不同?上午踢球和下午踢球有何不同?张师傅和李师傅炒的回锅肉是否一样美味?9借书的程序:11你的一天1、早餐2、上午上课3、午餐吃小炒4、图书馆借书5、打网球6、晚自习7、洗澡8、睡觉教务处安排时段和教室候时长短取决于时机书是否被借走?有场地?有搭档?冲突时安排顺序四年内的独占资源教室?图书馆?宿舍?食堂早上开门时段12宏观角度:学校各部门有序管理和分配资源共享—争夺资源:目标:公平、安全、高效实施:资源的分配策略管理机制(登记、时限、归还)前提:以个体或班级为管理对象实施动态的分配和管理用一个概念来描述:学生或班级进行某项活动的动态过程——13进程14微观角度:学生按需申请使用资源1、注册登记,分配基本资源;2、活动状态的记录和转换;3、进行一项活动之前:A、是否具备参加的资格?(前提:别人的配合?自己的准备?)B、能否获得需要资源?(申请—等待—分配—使用—归还)4、活动的开展;5、结束后归还资源。进程的描述进程状态及管理进程同步进程互斥进程的执行进程的撤销15二、进程:1、定义:进程是一个具有独立功能的程序对某个数据集在处理机上的执行过程,是系统进行资源分配和调度的基本单位。进程是可并发执行的程序在一个数据集合上的运行过程。162、进程与程序的区别:进程程序动态特征执行过程,有生命期,创建—调度—撤消有序指令的集合,不反映执行过程,静态并发特征多个进程在同一时间内同时运行没有为之建立进程的程序不能并发执行独立特征独立运行、分配资源、调度的基本单位未建进程的程序,不能作为独立单位运行异步特征按各自独立、不可预知的速度向前推进,相互协调独占全机运行,结果确定,不需协调结构特征程序段+数据段+进程控制块PCB不同的进程可对应同一程序,只要对应的数据集不同173、进程与作业的区别:1)作业是用户向计算机提交的任务实体,提交后放在外存等待队列中;进程是完成用户任务的执行实体,是分配资源的基本单位,创建后部分存于内存。2)作业由一个或多个进程组成。3)作业的概念主要用于批处理系统中;进程的概念主要用于多道程序系统中。183.2进程的描述程序部分:描述进程的功能数据结构集:执行时的工作区和操作对象进程控制块:描述进程的情况和控制其运行所需的信息一、进程控制块PCB1、基本内容:描述信息、控制信息、资源信息、CPU现场保护区2、系统根据PCB感知进程的存在,是进程存在的唯一标志,是进程动态特征的集中反映,常驻内存PCB区。3、组织方式:1)链接队列2)索引表19进程控制块PCB主要内容进程标识符家族关系现行状态互斥和同步机构进程通信机构进程优先数链接字程序与数据地址资源清单CPU现场保护区二、进程上下文进程执行活动过程的静态描述,是进程执行所依赖的环境。当系统调度新进程占有处理机时,新老进程的发生上下文切换。11CPU现场四道程序并发执行:上下文切换列车的运行:22列车行进进站上下旅客补给、换班等待调度发车233.3进程状态及其转换1、就绪状态ready:已获得除CPU之外的所有必要资源。2、执行状态excute:占有CPU正在执行。3、等待(阻塞)状态blocked:因某事件(请求I/O)而暂停执行,处于等待执行的状态。24发生阻塞的原因:1、等待外设操作完成;2、对某一资源(系统调用、文件、内存、外设)的访问尚不能进行;3、等待具有合作关系的某一进程执行完毕;注意区分:1、等待外设进行输入或输出操作这一过程的结束2、等待外设准备进行输入或输出操作三个进程状态转换执行就绪阻塞进程B进程A进程C分派程序执行就绪阻塞26PCB队列结构:27PCB索引结构:索引表就绪队列等待队列1等待队列2PCB1PCB2PCB3PCB4PCB5PCB6PCB7…PCBnPCB表2829作业调度与进程调度3.4进程控制进程控制:系统使用一些具有特定功能的程序段来创建、撤消进程,以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。由操作系统的内核实现,通过执行原语操作进行控制。操作系统的内核:包括与硬件紧密相关的模块、运行频率高的公用模块;安排在靠近硬件的层次中,基于硬件的第一次软件扩充,常驻内存;功能多为中断处理、进程管理、对外设的基本操作。原语:在系统态下执行某些特定功能的程序段,是机器指令的延伸,由若干指令组成,在执行期间不可分割、中断,具有原子性。15一、进程创建create()形成进程控制块PCB创建方式:1、系统程序模块统一创建2、父进程创建创建事件:1、用户登录2、作业调度3、提供服务4、应用请求32ProcedureCreate(n,S0,k0,M0,R0)begini:=GetInternalName(n);*进程外部名Id(i):=n;*PCB内部标示号Priority(i):=k0;*进程优先数Cpustate(i):=S0;*CPU初始状态MainStore(i):=M0;*内存初始占有情况Resources(i):=R0;*其它资源初始占有情况Status(i):=‘Readys’;*进程初始状态置为就绪Parent(i):=CALLER;*父进程名Insert(RL,i);*把i插入就绪队列end33相关系统调用1、fork():创建子进程,子进程复制父进程程序数据资源对父进程返回正整数(子进程的进程标识号pid)对子进程返回0创建失败返回-1。2、getpid():获得当前进程的进程标识号pid3、getppid():获得父进程的进程标识号pid34例1:父进程创建一个子进程,在父子进程中分别输出各自的进程标识号。main(){intx,p;if((p=fork())==0){printf(thisischildprocess\n);printf(MyPID(child)is%d\n,getpid());printf(MyparentPIDis%d\n,getppid());}else{printf(Thisisparentprocess\n);printf(MyPID(parent)is%d\n,getpid());printf(MychildPIDis%d\n,p);}}父进程CPU子进程返回0返回子pid例2:父进程创建两个子进程,各自输出一个字符。通过多次运行的结果分析进程并发运行的特点。#includestdio.hmain(){intp1,p2;while((p1=fork())==-1);if(p1==0)putchar(‘b’);//第一个子进程执行else{while((p2=fork())==-1);if(p2==0)putchar(‘c’);//第二个子进程执行elseputchar(‘a’);//父进程执行}}【执行结果】[student@localhost~]$./1bca[student@localhost~]$./1bca[student@localhost~]$./1bca[student@localhost~]$./1ba[student@localhost~]$c./1bca[student@localhost~]$./1bca[student@localhost~]$./1bca[student@localhost~]$./1bca[student@localhost~]$./1bca[student@localhost~]$./1bca[student@localhost~]$./1ca[student@localhost~]$b父子进程PCB关系:37程序……;if(p20)输出'a';……;父进程PCB复制复制程序……;if(p1==0)输出'b';……;子进程P1PCB程序……;if(p2==0)输出'c';……;子进程P2PCB二、进程撤消destroy()释放各种资源撤消原因:1、正常结束2、异常结束3、外界干预39Destroy(n):撤消指定标识符的进程及其所有子进程由父进程或祖先进程发出,不会自己撤消自己,被撤消进程的全部系统资源全部释放出来归还给系统。若其正在运行则调用处理机调度程序。ProcedureDestroy(n)beginSched:=false;i:=SearchInternalName(n);KILL(i);ifSched=truethenScheduler;endSched:标志是否需要调用处理机调度程序。40KILL(i):杀死所有属于i的子进程并释放所有资源ProcedureKILL(i)beginifStatus(i)=‘Running’thenbeginSTOP(i);Sched:=trueendREMOVE(Queue(i),i);//从进程i所在队列移走进程iforallPprogeny(i)doKILL(P);//杀死所有属于i的子进程forallrprogeny(i)doRELEASE(r);//释放进程i占用的所有资源RELEASE(PCB(i));end三、进程等待block()和唤醒wakeup()原因:1、请求操作系统服务2、启动某种操作3、新数据未到4、无新工作可做Procedureblockbegini:=EP;//EP-执行进程的指针stop(i);i.status=“blockdea”;i.sdate:=WQ(r);Insert(WQ®,i);Scheduler;end唤醒原语wakeup
本文标题:操作系统第3章_1.
链接地址:https://www.777doc.com/doc-2381374 .html