




已阅读5页,还剩132页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 进程管理进程管理 进程管理 .1 程序的顺序执行及特征程序的顺序执行及特征 一、程序执行有固定的时序。一、程序执行有固定的时序。 二、特征:二、特征: 顺序性顺序性: :处理机的操作必须严格按照程序所规定的处理机的操作必须严格按照程序所规定的 顺序执行顺序执行 封闭性:封闭性:程序一旦开始执行,其计算结果不受外界程序一旦开始执行,其计算结果不受外界 影响影响 可再现性:可再现性:只要初始条件相同,一个程序多次重复只要初始条件相同,一个程序多次重复 执行,将得到相同的结果。执行,将得到相同的结果。 2.1进程的基本概念 I1C1P1I2C2P2 进程管理 2.1.2前趋图定义 有向无循环图(有向无循环图(DAGDAG): :描述进程间执行的前后关系描述进程间执行的前后关系 表示方式:表示方式: ( (1 1)p1-p2p1-p2 ( (2 2)-=(p1,p2)| p1 -=(p1,p2)| p1 必须在必须在p2p2开始前完成开始前完成 节点表示:一条语句,一个程序段,一进程。节点表示:一条语句,一个程序段,一进程。 P1 P2 P3 P4 进程管理 2.1.3 程序的并发执行 一、多个程序的并发执行(可能性分析)一、多个程序的并发执行(可能性分析) I1I2I3I4 C1C2C3C4 P1P2P3P4 t 进程管理 程序的并发执行(2) 二、特征二、特征 间断性:间断性:程序之间相互制约的关系,将导致程序具有间程序之间相互制约的关系,将导致程序具有间 断性断性 失去封闭性:失去封闭性:主要由共享资源引起主要由共享资源引起 不可再现性:不可再现性:设设N N的初值为的初值为n n。 举例:有举例:有2 2个循环程序个循环程序A A和和B B,它们共享一个变量,它们共享一个变量N N,程序,程序 A A每执行一次时,都要做每执行一次时,都要做N:=N+1; BN:=N+1; B则每次要执行则每次要执行 Print(NPrint(N), ), 然后再做然后再做N:=0. N:=0. 若程序若程序A,BA,B以不同的速度运以不同的速度运 行有以下三种不同的结果行有以下三种不同的结果 进程管理 程序的并发执行(3) N:=N+1N:=N+1在在print(Nprint(N) )和和N:=0N:=0之前,则之前,则N N值分别为值分别为 n+1,n+1,0.n+1,n+1,0. N:=N+1N:=N+1在在print(Nprint(N) )和和N:=0N:=0之后,则之后,则N N值分别为值分别为n,0n,0 ,1.1. N:=N+1N:=N+1在在print(Nprint(N) )和和N:=0N:=0之间,则之间,则N N值分别为值分别为 n,n+1,0.n,n+1,0. 进程管理 2.1.4进程的特征和状态 1. 1. 进程的特征和定义进程的特征和定义 一、定义:一、定义: 程序在并发环境下的一次执行过程程序在并发环境下的一次执行过程 .1 1.结构特征结构特征 进程:由程序段、数据段及进程控制块三部分构成进程:由程序段、数据段及进程控制块三部分构成 ,总称,总称“进程映像进程映像”。 .2 2.动态性动态性 由由“创建创建”而产生,由而产生,由“调度调度”而执行;由得不到而执行;由得不到 资源而资源而阻塞阻塞;由撤消而消亡。(而程序是静态的);由撤消而消亡。(而程序是静态的) 。 进程管理 2.1.4进程的特征和状态(2) .3 3.并发性并发性 只有建立了进程,才能并发执行。只有建立了进程,才能并发执行。 .4 4.独立性。独立性。 独立运行,独立获得资源。独立运行,独立获得资源。 .5 5.异步性:(间断性)异步性:(间断性) 进程管理 进程与程序区别 程序是静态的,进程是动态的; 进程更能真实地描述并发,而程序不能; 一个程序可对应多个进程; 进程有生命周期,有诞生有消亡,短暂的;而程 序是相对长久的;程序可作为软件资源长期保存 ,进程只是一次执行过程,是暂时的; 进程是系统分配调度的独立单位,能与其他进程 并发执行; 进程具有创建其他进程的功能,而程序没有。 进程管理 2.1.4进程的特征和状态(3) 2. 2. 进程的三种基本状态进程的三种基本状态 就绪状态:就绪状态: 执行状态执行状态 阻塞状态阻塞状态 就绪 阻塞执行 时间片完 进程调度 I/O请求 I/O完成 图25 进程的三种基本状态及其转换 进程管理 2.1.4进程的特征和状态(4) 3. 3. 挂起状态(被换出内存的状态)挂起状态(被换出内存的状态) 引入原因引入原因 终端用户请求终端用户请求 父进程请求父进程请求 负荷调节需要(实时系统)负荷调节需要(实时系统) 操作系统需要操作系统需要 进程状态的转换进程状态的转换( (图图2-6)2-6) 活动就绪活动就绪 静止就绪静止就绪 活动阻塞活动阻塞 静止阻塞静止阻塞 静止就绪静止就绪 活动就绪活动就绪 静止阻塞静止阻塞 活动阻塞活动阻塞 进程管理 图26 具有挂起状态的进程状态图 执行 活动 就绪 静止 就绪 活动 阻塞 静止 阻塞 激活 挂起 激活 挂起 释放 释放 挂起 请求I/O 进程管理 思考题 1如果系统中有N个进程,运行的进程最多几个,最 少几个;就绪进程最多几个最少几个;阻塞进程最 多几个,最少几个? 2. 有没有这样的状态转换,为什么? (1) 阻塞运行; (2) 就绪阻塞 进程管理 进程管理 实验 写一个程序描述进程状态迁移过程。 要求: 提供导致进程状态变化的调用接口,包括创建、 删除、调度、阻塞、时间到、挂起、激活等。 实现进程列表显示的接口。 注:这里设计的进程是一个假设的对象实体,是 由程序自己创建和删除,不是系统维护的进程。 进程管理 2.1.5进程控制块 1.1.进程控制块的作用进程控制块的作用 是进程存在的唯一标是进程存在的唯一标 志;志; PCB(PCB(p processrocess c control ontrol b block)lock)常驻内存常驻内存 2.2.进程控制块中的信息进程控制块中的信息 标识、处理机状态,标识、处理机状态, 进程调度信息,进程进程调度信息,进程 控制信息控制信息 pid 进进程状态态 现场现场 优优先级级 阻塞原因 程序地址 同步机制 资资源清单单 链链接指针针 进程管理 2.1.5进程控制块(2) 3.PCB3.PCB的组织的组织 链接链接 索引索引 执行指针 就绪队列指针 阻塞队列指针 空闲队列指针 PCB14 PCB23 PCB30 PCB48 PCB5 PCB67 PCB79 PCB80 PCB91 进程管理 等待队列示例 struct wait_queue struct task_struct * task; struct wait_queue * next; ; PCBPCB PCB 进程管理 2.1.5进程控制块(3) 3.PCB3.PCB的组织的组织 索引索引(p34(p34图图2-8)2-8) PCB1 PCB2 PCB3 PCB4 PCB5 PCB6 PCB7 执行指针 就绪表指针 阻塞表指针 进程管理 补充 PCBPCB和进程的代码数据放在一起吗?和进程的代码数据放在一起吗? 系统态和用户态系统态和用户态 系统空间和用户空间系统空间和用户空间 系统调用和普通调用的区别?系统调用和普通调用的区别? 系统调用会引起从用户态进入核心态系统调用会引起从用户态进入核心态 进程管理 进程-进程控制 处理机执行状态 系统态 用户态 进程控制机构 内核:中断处理,时钟管理,进程管理,存储器 管理,设备管理等。 原语(primitive) 由若干条指令构成的“原子操作(atomic operation)” 过程,作为一个整体而不可分割要么全都完成, 要么全都不做。 许多系统调用就是原语。 进程管理 2.2 进程控制 2.2.1 2.2.1 进程的创建进程的创建 一、进程图:一、进程图: 描述了进程的家族关系:(描述了进程的家族关系:(P34 P34 图图2-92-9) 子进程可继承父的资源,撤消时应归还给父进子进程可继承父的资源,撤消时应归还给父进 程,父的撤消会撤消全部子进程。程,父的撤消会撤消全部子进程。 根 A BC GF E D 祖先 进程管理 二、引起创建进程的事件:二、引起创建进程的事件: .1 1.用户登录:用户登录: 为终端用户建立一进程为终端用户建立一进程 .2 2.作业调度:(不是进程调度)作业调度:(不是进程调度) 为被调度的作业建立进程为被调度的作业建立进程 .3 3.提供服务:提供服务: 如要打印时建立打印进程如要打印时建立打印进程 .4 4.应用请求:应用请求: 由应用程序建立多个进程由应用程序建立多个进程 进程管理 2.2.1 进程的创建(2) 三、进程的创建:(三、进程的创建:(creatcreat原语)原语) .1 1.申请空白申请空白PCBPCB(一个系统的(一个系统的PCBPCB是有限的)是有限的) .2 2.为新进程分配资源(不同于一般的分配,为新进程分配资源(不同于一般的分配,PCB-PCB- LISTLIST在一个特殊区域)在一个特殊区域) .3 3.初始化初始化PCBPCB .4 4.将新进程插入就绪队列。将新进程插入就绪队列。 进程管理 一个典型的进程创建原语 Create (s0,m0,pi) p=Get_New_PCB(); /分配新的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 1.正常结束:进程运行完成而推出正常结束:进程运行完成而推出 .2 2.异常结束:进程因异常而强行结束异常结束:进程因异常而强行结束 越界错误;保护错;非法指令;特权指令错;运行越界错误;保护错;非法指令;特权指令错;运行 超时;等待超时;算术运算错;超时;等待超时;算术运算错;I/OI/O故障故障 .3 3.外界干预:外界干预: a.a.系统员系统员killkill进程;进程; b.b.父进程终止;父进程终止; c.c.父进程请求。父进程请求。 进程管理 2.2.2 进程的终止(2) 二、进程的终止过程(终止进程的实质就是回收二、进程的终止过程(终止进程的实质就是回收PCBPCB) ( (1 1)检查进程状态;)检查进程状态; ( (2 2)执行态)执行态中止,且置调度标志为真。中止,且置调度标志为真。 ( (3 3)有无子孙需终止。)有无子孙需终止。 ( (4 4)归还资源给其父进程或系统。)归还资源给其父进程或系统。 ( (5 5)从)从PCBPCB队列中移出队列中移出PCB.(PCB.(并回收并回收PCB)PCB) 进程管理 进程-进程控制 一个典型进程终止原语如下: Destroy ( pid ) p=Get_PCB(pid); /获取进程控制 块 Kill_Tree(p); /删除整个进程 树 Scheduler(); /调度器 进程管理 2.2.3 进程的阻塞与唤醒 一、引起进程阻塞和唤醒的事件一、引起进程阻塞和唤醒的事件 .1 1.请求系统服务而得不到满足时,如问系统请请求系统服务而得不到满足时,如问系统请 求打印。求打印。 .2 2.启动某种操作而需同步时:如该操作和请求启动某种操作而需同步时:如该操作和请求 该操作的进程需同步运行(即非异步操作)。该操作的进程需同步运行(即非异步操作)。 .3 3.新数据尚未到达:如进程新数据尚未到达:如进程A A写,进程写,进程B B读,则读,则 A A未写,完未写,完B B不能读。不能读。 .4 4.无新工作可做。无新工作可做。 进程管理 2.2.3 进程的阻塞与唤醒(2) 二、进程阻塞过程:二、进程阻塞过程: 是进程自身的一种主动行为是进程自身的一种主动行为 a.a.调调blockblock原语原语 b.b.停止执行,修改停止执行,修改PCBPCB入阻塞队列(一个或多入阻塞队列(一个或多 个),并转调度。个),并转调度。 三、唤醒过程三、唤醒过程 其它相关进程完成。其它相关进程完成。 a.wakeupa.wakeup原语原语 b.b.修改修改PCBPCB,入就绪队列,入就绪队列 可见,有可见,有blockblock原语,在其它进程中就应有原语,在其它进程中就应有 wakeupwakeup原语。原语。 进程管理 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); /从阻塞队列中移出进程p Remove(p-Status.List,p); /进程的状态改为就 p-Status.Type=Ready; /将进程插入到就绪队列 Insert (RL,p); /调度程序 Scheduler (); 唤醒原语的执行过程如下: 进程管理 2.2.4 进程的挂起与激活 一、进程的挂起过程一、进程的挂起过程 由进程自己或其父进程调由进程自己或其父进程调suspendsuspend原语完成,将该原语完成,将该 进程进程PCBPCB移到指定区域,注意状态的改变,有可能移到指定区域,注意状态的改变,有可能 要重新调度。要重新调度。 二、进程的激活过程。二、进程的激活过程。 activeactive原语(如在外存,调入内存,改变状态,根原语(如在外存,调入内存,改变状态,根 据情况看是否调度,如抢先或非抢先)。据情况看是否调度,如抢先或非抢先)。 阻塞、唤醒一般由阻塞、唤醒一般由OSOS实现,而挂起与激活可由用户干实现,而挂起与激活可由用户干 预。预。 进程管理 进程-进程控制 实例研究:Linux和Windows系统创建进程 Linux系统中进程创建fork 在Linux系统中,用户或系统可以使用系统调用fork来创建一个 新的进程。fork的函数原形为: pid_t fork() 当一个进程调用fork创建一个子进程后,父进程和子进程都在自 己独立的地址空间内执行。它们之间不共享任何地址空间,但是 父子进程具有相同的程序代码、数据和堆栈段, 因此,为了区 别运行中的父子进程,fork系统调用向父子进程返回不同的值。 它向子进程返回0,而向父进程返回子进程的PID。 进程管理 Before fork() After fork fork执行前 一个控制流进入内核fork模块 。 Before fork() After 。 Before fork() After fork fork执行后 调用后,从fork返回两个控制流 父进程子进程 进程管理 /* - The file create.c introduces the use of fork. -*/ #include main() int pid; printf(“Before: my pid is %d .n”,getpid(); 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建立进程时,操 作系统要为新进程分配新的地址空间和资源,建立新的 主线程。一旦新进程建立,父进程仍然使用原来的地址 空间继续执行,而新进程则在新的地址空间执行一个新 的程序。 CreateProcess含有10个参数来指定建立进程的方式,具 体参数的含义可参考相关的Win32 API手册。 进程管理 #include #include #include STARTUPINFO startInfo; PROCESS_INFORMATION processInfo; strcpy(lpCommandLine, “c:WINNTSYSTEM32NOTEPAD.EXE temp.txt”); ZeroMemory( startInfo.cb=sizeof(startInfo); if (! CreateProcess(NULL,lpCommandLine,NULL,NULL,FALSE, HIGH_PRIORTY_CLASS CREATE_NEW_CONSOLE, NULL, NULL, ExitProcess(1); CloseHandle( 进程管理 2.3进程同步 同步:并发执行的诸进程之间能同步:并发执行的诸进程之间能 有效地共享资源和相互合作,从有效地共享资源和相互合作,从 而使程序的执行具有可再现性。而使程序的执行具有可再现性。 进程管理 2.3.1 进程同步的基本概念 1.1.两种形式的制约关系两种形式的制约关系 资源共享关系:(进程间接制约)资源共享关系:(进程间接制约) 需互斥地访问临界资源。需互斥地访问临界资源。 相互合作关系:(进程直接制约)相互合作关系:(进程直接制约) 2. 2. 临界资源:(一次仅允许一个进程访问的资源)临界资源:(一次仅允许一个进程访问的资源) 引起不可再现性是因为临界资源没有互斥访问。引起不可再现性是因为临界资源没有互斥访问。 进程管理 进程的同步 进程同步举例:公共汽车中的司机和售票员 司机 P1 售票员 P2 while (true) while (true) 关门; 启动车辆; 正常运行; 售票; 到站停车; 开门; 进程的同步是指系统中多个进程中发生的事件存在某种时序 关系,需要相互合作,共同完成一项任务。具体说,一个进 程运行到某一点时要求另一伙伴进程为它提供消息,在未获 得消息之前,该进程处于等待状态,获得消息后被唤醒进入 就绪态。 进程管理 进程的互斥 例如:系统中只有一台打印机,进程p1,p2都需要 使用打印机。 临界资源(Critical Resource) 一次只能被一个进程使用 形式:硬件,软件:变量、数据、队列等 当临界资源由一个进程占用后,其它进程如果要使 用它,必须等待占用进程使用完毕并把它释放后, 才能由另一个进程使用。多个进程在共享临界资源 时的这种制约关系称为进程的互斥。 进程管理 生产者消费者问题 VarVar n, integer; n, integer; Type item=;Type item=; varvar buffer:array0,1,n-1 of item; buffer:array0,1,n-1 of item; in, out: 0,1, , n-1;in, out: 0,1, , n-1; counter: 0,1,n;counter: 0,1,n; 进程管理 生产者消费者问题 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: repeat while counter=0 do no-op; nextc:=bufferout; out:=(out+1) mod n; counter:=counter-1; consumer the item in nextc; until false; 进程管理 生产者消费者问题(2) 设设countercounter的初值为的初值为5 5 register1:=counter; register2:=counter;register1:=counter; register2:=counter; register1 :=register1+1; register2:=register2-register1 :=register1+1; register2:=register2- 1;1; counter :=register1; counter :=register2;counter :=register1; counter :=register2; register1:=counter; register1:=counter; (register1:=5)(register1:=5) register1 :=register1+1; register1 :=register1+1; (register1:=6)(register1:=6) register2:=counter; register2:=counter; (register2:=5)(register2:=5) register2 :=register2-1; register2 :=register2-1; (register2:=4)(register2:=4) counter :=register1;counter :=register1;(counter:=6)(counter:=6) counter :=register2; counter :=register2; (counter:=4)(counter:=4) 进程管理 定义:进程访问临界资源的那段代码。定义:进程访问临界资源的那段代码。 由于临界区的出现,需要对进入临界区的进程加以由于临界区的出现,需要对进入临界区的进程加以 管理。管理。 管理方法为管理方法为互斥互斥和同步和同步 在操作系统中,当某一进程正在访问某一存储区域在操作系统中,当某一进程正在访问某一存储区域 时,就不允许其他进程来读出或者修改存储区的内时,就不允许其他进程来读出或者修改存储区的内 容,否则,就会发生后果无法估计的错误。进程间容,否则,就会发生后果无法估计的错误。进程间 的这种相互制约关系称为的这种相互制约关系称为互斥。互斥。 3. 临界区 进程管理 临界区的调度原则 一次至多允许一个进程进入临界区内 一个进程不能不限地停留在临界区内 一个进程不能无限地等待进入临界区 有空让进 无空等待 择一而入 算法可行 进程管理 访问临界资源的描述:访问临界资源的描述: 进入区:检查有无进程进入进入区:检查有无进程进入 临界区:临界区: 退出区:将访问标志复位退出区:将访问标志复位 RepeatRepeat Entry sectionEntry section Critical sectionCritical section Exit sectionExit section Until falseUntil false 进程管理 进程管理 使用LOCK和UNLOCK原语 系统为每一个临界资源设置一把锁,当一个进程欲进入临界 区时,首先关锁,推出临界区时,把锁打开。 Lock原语:Lock(W) begin L:if W=1 then goto L else W:=1; end; UNLOCK原语:UNlock(W) begin W:=0; end 用变量W代表某种资源的 状态,w称为锁,锁位值 为0;表示资源可用,而 用1表示资源已被占用。 进程管理 进程同步和互斥的区别 互斥的各个进程在各自单独执行时都可以得到正确的运 行结果,但是当它们在临界区内交叉执行时就可能出现 问题。而同步的各个进程,如果各自单独执行将不会完 成作业的特定任务,只要当它们互相配合、共同协调推 进时才能得到正确的运行结果。 互斥的进程只要求它们不能同时进入临界区,而至于哪 个进程先进入则不会产生运行的错误。但同步的进程的 协调关系是建立在它们之间执行时序的基础上,所以, 各个进程必须按照严格的先后次序执行。 一般情况下,互斥的进程并不知道对方的存在,而同步 的进程不仅知道其它进程的存在,还要通过与其它进程 的通信来达到相互的协调。 进程管理 进程互斥的软件方法 通过平等协商方式实现进程互斥的最初方法是软 件方法 其基本思路是在进入区检查和设置一些标志,如 果已有进程在临界区,则在进入区通过循环检查 进行等待;在退出区修改标志 其中的主要问题是设置什么标志和如何检查标志 软件解法的缺点: 1. 忙等待 2. 实现过于复杂 3. 需要高的编程技巧 进程管理 进程互斥的硬件方法 “测试并设置”指令 “ 交换”指令 “ 开关中断”指令 进入临界区前执行: 执行“关中断”指令 离开临界区后执行: 执行“开中断”指令 能够实现进程互斥,但不能满足“让权等待”, 造成处理机资源浪费 进程管理 4.同步机制应遵循的准则 1.1.空闲让进空闲让进 2.2.忙则等待忙则等待 3.3.有限等待:应保证为有限等待,不会产生有限等待:应保证为有限等待,不会产生 死等。死等。 4.4.让权等待:不能进入临界区的执行进程应让权等待:不能进入临界区的执行进程应 放弃放弃CPUCPU执行权。执行权。 进程管理 2.3.2 信号量机制 1 1 整型信号量整型信号量 是一个整型量,通过是一个整型量,通过2 2个原子操作个原子操作wait(swait(s) )和和signal(ssignal(s) ) 来访问。来访问。 Wait(sWait(s): while s1S1,记录型信号量。,记录型信号量。 S=1S=1时,互斥型信号量。时,互斥型信号量。 (3 3)Swait(s,1,0)Swait(s,1,0),可控开关,当时,允许进,可控开关,当时,允许进 入,入,S - 同步的实现。同步的实现。 receivereceive(sender,messagesender,message) send(receiver,messagesend(receiver,message) ) 进程管理 三、管道通信三、管道通信 管道:连接一个读进程和一个写进程之间通信的共享文件。管道:连接一个读进程和一个写进程之间通信的共享文件。 功能:功能: (以字符流的形式)大量的数据发收。(以字符流的形式)大量的数据发收。 注意:注意: (1 1)互斥)互斥 当一个进程正在对当一个进程正在对pipepipe执行读执行读/ /写操作时,其它(另一写操作时,其它(另一 )进程必须等待)进程必须等待 (2 2)同步)同步 当输入进程把一定数量的数据写入当输入进程把一定数量的数据写入pipepipe,便去睡眠等,便去睡眠等 待,直到输出进程取走数据后,再把它唤醒。待,直到输出进程取走数据后,再把它唤醒。 (3 3)对方是否存在)对方是否存在 为了协调双方通信,管道通信机制必须对发送进程和为了协调双方通信,管道通信机制必须对发送进程和 接收进程在利用管道进行通信时实施同步和互斥,并接收进程在利用管道进行通信时实施同步和互斥,并 只有在确定了对方存在时才能进行通信只有在确定了对方存在时才能进行通信 进程通信的类型 进程管理 直接/间接通信方式(消息通信的2种方式) 一、直接一、直接 send(Receiversend(Receiver, message), message) receive(Senderreceive(Sender, message), message) 例:解决生产例:解决生产消费问题。消费问题。 repeatrepeat produce an item in produce an item in nextpnextp; ; send(consumersend(consumer, , nextpnextp); ); until false; until false; repeat repeat receive( producer, receive( producer, nextcnextc); ); consumer the item in consumer the item in nextcnextc; ; until false; until false; 进程管理 直接/间接通信方式(消息通信的2种方式) 二、间接(可以实现非实时通信)二、间接(可以实现非实时通信) 优点:在读优点:在读/ /写时间上的随机性写时间上的随机性 写进程写进程 信箱(中间实体)信箱(中间实体)读进程读进程 原语原语 ( (1 1)信息的创建与撤消:)信息的创建与撤消: 信箱名信箱名 属性(公用、私用、共享)(共享属性(公用、私用、共享)(共享 者名字)者名字) ( (2 2)消息的发送和接收)消息的发送和接收 Send (mailbox, message)Send (mailbox, message) Receive (mailbox, message)Receive (mailbox, message) 进程管理 直接/间接通信方式(消息通信的2种方式) 二、间接(可以实现非实时通信)二、间接(可以实现非实时通信) 信箱类型信箱类型 (1 1)私用:拥有者有读)私用:拥有者有读/ /写数,其它只有写数,其它只有 写权,(单向)存在期进程存在期。写权,(单向)存在期进程存在期。 (2 2)公用:系统创建,双向,存在期)公用:系统创建,双向,存在期= =系系 统存在期。统存在期。 (3 3)共享信箱:一般进程创建,并指明)共享信箱:一般进程创建,并指明 其共享者,是双向。其共享者,是双向。 发送发送接收进程之间的关系:接收进程之间的关系: (1 1)一对一关系;)一对一关系; (2 2)多对一关系;)多对一关系; (3 3)一对多关系;)一对多关系; (4 4)多对多关系:公用信箱。)多对多关系:公用信箱。 进程管理 消息传递系统中的几个问题 一、通信链路:一、通信链路: ( (1 1)显式建立:(进程完成)显式建立:(进程完成) ( (2 2)隐式建立:(系统完成)隐式建立:(系统完成) 链路类型:链路类型: (1 1)由连接方法分:点)由连接方法分:点点链路,多点链路。点链路,多点链路。 (2 2)由通信方式分:单向、双向。)由通信方式分:单向、双向。 (3 3)由容量分:无容量(无缓冲区)、有(有缓冲)由容量分:无容量(无缓冲区)、有(有缓冲 区)。区)。 进程管理 消息传递系统中的几个问题 二、消息格式:二、消息格式: 消息头:含控制信息如:收消息头:含控制信息如:收/ /发进程名,消息长度、发进程名,消息长度、 类型、编号类型、编号 消息内容:消息内容: 定长消息:系统开销小,用户不便(特别是传长消定长消息:系统开销小,用户不便(特别是传长消 息用户)息用户) 变长消息:开销大,用户方便。变长消息:开销大,用户方便。 进程管理 消息传递系统中的几个问题 三、进程同步方式三、进程同步方式 .1 1.发送和接收进程阻塞(汇合)发送和接收进程阻塞(汇合) 用于紧密同步,无缓冲区时。用于紧密同步,无缓冲区时。 .2 2.发送进程不阻塞,接收进程阻塞(多个)发送进程不阻塞,接收进程阻塞(多个) 相当于接收进程(可能是多个)一直等待发送进相当于接收进程(可能是多个)一直等待发送进 程,如:打印进程等待打印任务。程,如:打印进程等待打印任务。 .3 3.发送发送/ /接收进程均不阻塞接收进程均不阻塞 一般在发、收进程间有多个缓冲区时。一般在发、收进程间有多个缓冲区时。 进程管理 消息缓冲队列通信机制 一、数据结构一、数据结构 1. 1.消息缓冲区消息缓冲区 type message buffer =recordtype message buffer =record sender:sender: size:size: text:text: next:next:指向下一指针指向下一指针 2.PCB2.PCB中应增数据项:中应增数据项: type type pcbpcb=record=record mqmq 消息队列指针消息队列指针 mutexmutex 消息队列互斥信息量消息队列互斥信息量 smsm消息队列资源信息量(表资源消消息队列资源信息量(表资源消 息数)息数) 进程管理 消息缓冲队列通信机制 二、发送原语二、发送原语 procedure procedure send(receiversend(receiver, a), a) begin begin getbuf(a.sizegetbuf(a.size, i);, i); i.senderi.sender:=:=a.sendera.sender; ; i.sizei.size:=:=a.sizea.size; ; i.texti.text:=:=a.texta.text; ; i.nexti.next:=0;:=0; getid(PCBgetid(PCB set, set, receiver.jreceiver.j); ); wait(j.mutexwait(j.mutex); ); insert(j.mqinsert(j.mq, i);, i); signal(j.mutexsignal(j.mutex); ); signal(j.smsignal(j.sm); ); endend 进程管理 消息缓冲队列通信机制 三、接收原语三、接收原语 procedure procedure receive(breceive(b) ) beginbegin j:=internal name; j:=internal name; wait(j.smwait(j.sm); ); wait(j.mutexwait(j.mutex); ); remove(j.mqremove(j.mq, i);, i); signal(j.mutexsignal(j.mutex); ); b.senderb.sender:=:=i.senderi.sender; ; b.sizeb.size:=:=i.sizei.size; ; b.textb.text:=:=i.texti.text; ; endend 进程管理 消息缓冲队列通信机制 mq mutex sm sender:A size:5 text:Hello send(B,a) sender :A size :5 text:hell o next:0 发送区Asender:A size:5 text:Hello receive(b) 接收区B a b 进程A PCB(B) 进程B 进程管理 练习 试说明如果使用send_mailbox和receive_mailbox 原 语实现打印文件的系统。欲打印的进程将要打印的文 件名发送到邮箱printer,打印机假脱机将打印邮箱中 出现名字的任何文件 /process wish to print Charfilename ; Status=send_mailbox(“printer”,filename); If (status 0) /failure /print spooler char filename while (true) status=receive_mailbox(“printer”,filename); if(status 0) /failure print(filename); 进程管理 线程 线程的基本概念线程的基本概念 1.1.线程的引入线程的引入 问题:可能会有很多个客户访问服务器, WEB服务器如何处理这多个访问? 这台计算机上运行着WEB 服务器程序,管理着许多 网站 这台计算机上运行着IE浏 览器程序 HTTP协议 请 求 应 答 进程管理 线程 WEB服务器程序作为单个进程顺序处理:一次处理 一个用户请求,处理完后再处理下一个请求 用户等待的时间可能会很长 使用多个进程:有一个进程负责侦听,看是否有用 户的请求到来。如果有,则创建另一个进程处理请 求。 一个用户请求对应一个进程。 进程频繁的创建与撤销,频繁的进程切换,开销大 进程管理 线程 1.1.线程的引入线程的引入 减少并发执行时的时空开销,进程的创建、撤消、切减少并发执行时的时空开销,进程的创建、撤消、切 换较费时空换较费时空,因它既是调度单位,又是资源拥有者。因它既是调度单位,又是资源拥有者。 线程是系统独立调度和分派的基本单位,其基本上不线程是系统独立调度和分派的基本单位,其基本上不 拥有系统资源,只有少量资源(拥有系统资源,只有少量资源(IPIP,寄存器,栈),寄存器,栈), 但共享其所属进程所拥有的全部资源。但共享其所属进程所拥有的全部资源。 进程管理 线程的概念 线程是指进程内部的一个可独立执行的实体,线程 是处理机调度的基本单位。线程拥有少量必不可少 的资源,如程序计数器、一组寄存器、栈,它可与 同属一个进程的其他线程共享进程所拥有的全部资 源。 因为同一进程内线程共享内存和文件,因此他们之 间相互通信,无需调用内核。 由于同一进程内的线程都可访问整个进程的所有资 源,所以它们之间的通信比进程间通信更方便,而 同一进程内的线程间切换也会由于许多上下文的相 同而简化。 线程 进程管理 线程的优点 创建线程比创建进程所需时间短 撤销线程比撤销进程花费的时间短 线程间切换比进程间切换花费时间短 线程可以提高通信效率。由于同进程内线程间共享 内存和文件资源,可以不通过内核直接进行通信 适合多处理机系统 进程管理 进程和线程的比较 地址空间资源地址空间资源 不同进程的地址空间是相互独立的,而同一进程的各线程共享同一地址空间不同进程的地址空间是相互独立的,而同一进程的各线程共享同一地址空间 通信关系通信关系 进程间通信必须使用操作系统提供的进程间通信机制,而同一进程中各线程进程间通信必须使用操作系统提供的进程间通信机制,而同一进程中各线程 间的通信也需要同步和互斥手段的辅助,以保证数据的一致性。间的通信也需要同步和互斥手段的辅助,以保证数据的一致性。 调度方面调度方面 在进程级操作系统中,拥有资源的基本单位都是进程,而在引入线程的操在进程级操作系统中,拥有资源的基本单位都是进程,而在引入线程的操 作系统中,线程是处理机执行的基本单位,进程是拥有资源的基本单位,作系统中,线程是处理机执行的基本单位,进程是拥有资源的基本单位, 在同一进程中,线程的切换不会引起进程的切换,在不同的进程中进行线在同一进程中,线程的切换不会引起进程的切换,在不同的进程中进行线 程切换,将会引起进程的切换。同一进程中的线程上下文切换比进程上下程切换,将会引起进程的切换。同一进程中的线程上下文切换比进程上下 文切换要快得多。文切换要快得多。 进程管理 拥有资源拥有资源 进程是拥有资源的基本单位,线程不拥有系统的资源,但线程可以使用进程是拥有资源的基本单位,线程不拥有系统的资源,但线程可以使用 所隶属的资源。所隶属的资源。 并发性并发性 引入线程的操作系统中,不仅进程之间可以并发执行,而且同一进程引入线程的操作系统中,不仅进程之间可以并发执行,而且同一进程 内的多个线程之间也可以并发执行。内的多个线程之间也可以并发执行。 系统开销系统开销 由于创建进程和撤销进程时,系统都要为之分配或回收资源,操作系由于创建进程和撤销进程时,系统都要为之分配或回收资源,操作系 统所付出的开销
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备设施保养管理制度
- 设立网络保密管理制度
- 设计单位公司管理制度
- 设计项目售后管理制度
- 诊所安全用电管理制度
- 诊所药房仓库管理制度
- 试验检测台账管理制度
- 财务资料安全管理制度
- 财政分局合同管理制度
- 货款回收利息管理制度
- 海洋环境监测
- 五年(2020-2024)高考物理真题分类汇编 专题01 力与物体的平衡(解析版)
- 腹主动脉瘤的护理查房
- 腹腔镜下胆囊切除术
- DB11∕T 1071-2014 排水管(渠)工程施工质量检验标准
- 2024年全国寄生虫病防治技能竞赛备赛试题库-下(包虫病、其它寄生虫病)
- 年产60万台(套)新能源汽车充电桩项目可行性研究报告写作模板-拿地申报
- 医务人员依法执业测试试题
- 浙江省温州十校联合体2023-2024学年第二学期高二下学期6月期末联考+技术答案
- 【A市网球运动发展现状及对策探究开题报告2000字】
- 2024年山东省消防工程查验技能竞赛理论考试题库-下(多选、判断题)
评论
0/150
提交评论