《计算机操作系统-第3章进程和处理机管理.ppt》由会员分享,可在线阅读,更多相关《计算机操作系统-第3章进程和处理机管理.ppt(83页珍藏版)》请在三一办公上搜索。
1、清华大学出版社,计算机操作系统,刘 腾 红 主编,Computer Operating System,第3章 进程和处理机管理,要求学生掌握程序的顺序执行和并发执行;进程的定义、特点及状态变迁;进程的管理;线程的概念、类别;进程间的同步与互斥;进程通信;死锁产生的原因与解除方法;处理机、进程和作业的调度方法;最后还要了解Windows XP的进程和线程管理。,第3章 进程和处理机管理,3.1 进程的基本概念 3.2 进程管理 3.3 线程的概念 3.4 进程间的同步与互斥 3.5进程通信 3.6死锁 3.7处理机调度 3.8Windows XP的进程和线程管理,3.1.1 程序顺序执行 1.程
2、序顺序执行,3.1 进程的基本概念,图3-1 程序的顺序执行,2.程序顺序执行的特点(1)顺序性(2)封闭性(3)可再现性,3.1.2 程序并发执行 1.程序的并发执行 如图3-2,I3、C2、P1是并发执行的,则使用下面的语句描述:cobegin I3;C2;P1;coend;,3.1 进程的基本概念,2.程序并发执行的特点(1)失去了程序的封闭性 程序之间的相互制约关系(间接关系和直接关系)导致程序“执行-暂停-执行”,即程序的执行具有间断性。(2)通信性:如图3-3(3)独立性,3.1 进程的基本概念,3.1.3 进程描述 1.进程定义 最能反映进程实质的定义有:1)进程是程序的一次执行
3、活动;2)进程是可以和别的计算并发执行的计算;3)进程是一个程序在对应数据结构上的进行的操作;,3.1 进程的基本概念,4)所谓进程,就是一个程序在给定活动空间和初始环境下,在一个处理机上的执行过程;5)进程是程序在一个数据集合上运行的过程,它是系统进程资源分配和调度的一个独立单位。国内的定义:进程,是一个具有一定独立功能的程序,是关于某个数据集合的一次运行活动。,3.1 进程的基本概念,1.进程定义进程和程序的联系和区别:1)程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念。进程是程序在处理机上的一次执行过程,它是一个动态的概念。2)进程具有并行特征,能与其它进程并行地活动
4、;,3.1 进程的基本概念,2.进程类型(1)系统进程和用户进程,两者的区别:1)系统进程被分配一个初始的资源集合,其可以独占或按最高优先权限优先使用这些资源。但用户进程必须通过系统服务请求来申请资源,并竞争资源 2)用户进程不能直接完成I/O操作,而系统进程可以做显示的、直接的I/O操作 3)系统进程在管态下运行,而用户进程在目态下运行(2)计算进程和I/O进程,3.1 进程的基本概念,3.进程的特征和利弊 特征:1)动态性 2)并发性 3)独立性 4)异步性/间断性 5)结构特征 每个进程都有进程控制块PCB:其包含描述进程和控制信息 引入进程增加开销:空间开销和时间开销,3.1 进程的基
5、本概念,4.进程的状态与变迁 进程的三种基本状态及其状态变迁如图3-4 在不同的系统中,进程可以设置更多的状态,3.1 进程的基本概念,5.进程描述进程控制块PCB 1)PCB的作用:标识进程存在的唯一实体 2)进程控制块的内容进程控制块PCB常用的信息如表3-1。3)PCB的组织方式 a)链接方式如图3-5 b)索引方式如图3-6,3.1 进程的基本概念,表3-1 PCB信息,表3-1 PCB信息,3.1 进程的基本概念,表3-1 PCB信息,图3-5 按链接方式组织PCB,3.1 进程的基本概念,索 引 表,图3-6 按索引方式组织PCB,3.2.1 进程创建原语 进程创建原语的主要功能是
6、为被创建进程建立一个PCB 创建进程原语的操作过程是:首先从空闲PCB队列中申请一个可用的PCB,申请到后为该PCB分配一个内部标识符;然后填入创建者提供的参数和直接从父进程继承的参数;把新进程设为就绪状态,并插入到就绪队列和进程家族;最后,返回为新进程的内部标识PID(进程存在的唯一标识),3.2 进程管理,3.2.1 进程创建原语创建原语描述如下:,3.2 进程管理,算法:create输入:新进程的符号名,优先级,开始执行地址输出:新创建进程的内部标识符PID在总链队列上查找有无同名的进程;if(有同名进程)return(错误码)/*带错误码返回*/在空闲PCB队列申请一个空闲的PCB结构
7、;if(无空PCB结构)return(错误码);/*带错误码返回*/用参数填充PCB内容;置进程为就绪状态;将新进程的PCB插入到就绪队列;将新进程的PCB插入到总链队列中;设置进程的家族关系;return(新进程PID);/*create(name,priority,start-addr)*/,3.2.2 进程撤消原语撤消原语Kill操作如下:,3.2 进程管理,void kill输入:进程标识符PID输出:无 由参数PID查找到当前进程的PCB;释放本进程所占用的资源给父进程;将该进程从总链队列中摘除;释放此PCB结构;释放所占用的资源;转进程调度程序;/*kill*/,3.2.3 进程等
8、待原语等待原语操作过程如下:,3.2 进程管理,void susp(chan)输入:chan/*等待的事件(等待原因)*/保护现行进程CPU现场到PCB结构中;置该进程为“等待/阻塞”态;将该进程PCB插入到等chan的等待队列;转进程调度;/*susp(chan)*/,3.2.4 进程唤醒原语唤醒原语操作过程如下:,3.2 进程管理,void wakeup(chan)输入:chan/*等待的事件(等待原因)*/输出:无 保护现行运行进程的CPU现场到它的PCB结构中;置该进程为就绪状态;将该进程插入就绪队列;找到该阻塞原因的队列指针;for(该队列上的每一个等待进程)将进程移出此等待队列;置
9、进程状态为“就绪”并将进程放入就绪队列;转进程调度;/*wakeup(chan)*/,3.2.5 其他原语1.进程延迟原语和延迟唤醒原语 延迟原语的功能是:将需要延迟的进程PCB结构加入到延迟队列,当延迟时间到来时,由延迟唤醒进程(系统进程)把它唤醒2.进程挂起原语和进程激活原语 进程的挂起状态是一种静止状态,它分为挂起就绪和挂起等待。,3.2 进程管理,3.3.1 线程的概念 线程是比进程更小的活动单位,它是进程的一个执行路径。线程可以这样描述:1)线程是进程中的一条执行路径 2)它有自己的私用堆栈和处理机执行环境(尤其是处理器寄存器)3)它与父进程共享分配给父进程的主存 4)它是由单个进程
10、所创建的众多线程中的一个线程,3.3 线程的概念,3.3.2 线程与进程的比较1.调度:把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位2.并发性:不仅进程之间可以并发执行,而且在一个进程中的多个线程之间也可并发执行3.拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可访问隶属于进程的全部资源。4.系统开销:由于在创建或撤消进程时,系统都要为之分配或回收资源,导致系统的开销将显著地大于在创建或撤销线程时的开销。,3.3 线程的概念,3.3.3 线程的分类 1.线程的两种类型 1)内核支持线程Kernel-Supported Threads 2)用户级线程User-L
11、evel Threads 2.两种线程的分析,3.3 线程的概念,3.4.1 进程间的制约关系 1.资源共享 互斥共享和同时访问 2.进程合作 进程相互合作和通信,共同完成一个任务3.4.2 进程互斥 1.互斥的概念 互斥共享的资源:物理设备和软件资源 相关概念:临界区和临界资源,3.4 进程间的同步与互斥,3.4.2 进程互斥2.锁及其操作置锁信号为1称为上锁原语(lock),置锁信号为0称为开锁原语(unlock),代码如下所示,3.4 进程间的同步与互斥,上锁原语,开锁原语,void lock(锁变量w)test:if(w为1)goto test/*测试锁位的值*/else w=1;/*
12、上锁*/*lock(w)*/,void unlock(锁变量w)w=0;/*开锁*/*unlock(w)*/,3.4.2 进程互斥2.锁及其操作goto语句使进程一直占用处理机来循环测试锁状态,故将上锁原语和开锁原语改进如下,3.4 进程间的同步与互斥,改进后的上锁原语,改进后的开锁原语,void lock(锁变量)while(w=1)保护现行进程CPU现场;现行进程入w的等待队列;置进程为“等待”状态;转进程调度;w=1;/*上锁*/*lock(w)*/,void lock(锁变量)while(w=1)保护现行进程CPU现场;现行进程入w的等待队列;置进程为“等待”状态;转进程调度;w=1;
13、/*上锁*/*lock(w)*/,3.4.2 进程互斥3.使用锁实现进程互斥如图3-7,说明了两个进程使用同一临界资源时的操作。两者都必须先执行上锁原语,3.4 进程间的同步与互斥,图3-7 进程使用临界资源时的操作,与图3-7相应的进程互斥代码如下:,3.4 进程间的同步与互斥,main()int w=0;/系统初启时置锁状态cobeginppa();/进程Appb();/进程Bcoendppa()/进程A;lock(w);进程A的临界区CSa;unlock(w);ppb()/进程B;lock(w);进程B的临界区CSb;unlock(w);,3.4.3 信号灯和P、V操作 1.信号灯的概念
14、 1965年荷兰Dijkstra提出的进程同步工具 信号灯表示:二元组(s,q)其中:s具有非负初值的整型变量,代表资源实体或并发进程的状态;q是一个初始状态为空的等待队列,3.4 进程间的同步与互斥,3.4.3 信号灯和P、V操作2.P、V操作原语系统一般提供P、V操作原语来修改信号灯的值如果信号灯用s表示,则P操作记为P(s),V操作记为V(s)1)P操作:对信号灯进行减1操作,再根据信号灯的值对调用P操作的进程进行相应处理 2)V操作:对信号灯进行加1操作,3.4 进程间的同步与互斥,3.4.3 信号灯和P、V操作,3.4 进程间的同步与互斥,void p(变量s)/变量s为信号灯 s-
15、;if(s0)/进程进入相应的等待队列保留调用进程CPU现场;将该进程进入s的等待队列;置“等待”状态;转进程调度;/*p(s)*/,1)P操作过程,void v(变量s)/变量s为信号灯 s+;if(s=0)移出s等待队列首元素;将该进程入就绪队列;置“就绪”状态;/*v(s)*/,2)V操作过程,3.4.3 信号灯和P、V操作 3.使用P、V操作实现进程互斥 举例1:说明两个进程使用信号灯实现进程互斥 设系统中同类的互斥资源只有1个,则:1)信号灯的初值为1,表示资源可用,2)信号灯的值小于等于0,表示资源已经被进程占用,则另一进程只能等待。相关代码见下页图表,3.4 进程间的同步与互斥,
16、3.4 进程间的同步与互斥,main()int mutex=1;/互斥信号灯cobeginpa();/进程Apb();/进程Bcoendpa();/进程A;P(mutex);进程A的临界区CSa;V(mutex);;pb();/进程B;P(mutex);进程B的临界区CSb;V(mutex);;,3.4.3 信号灯和P、V操作3.使用P、V操作实现进程互斥 举例2:假设系统中同类型的临界资源有多个,则信号灯的初始值应设为n信号灯mutex的值的意义如下:1)初始信号灯mutex0,表示系统中同类临界资源的数目有mutex个;2)操作中mutex0,表示可用的同类临界资源的数目为mutex;,3
17、.4 进程间的同步与互斥,3)操作中mutex0,则表示临界资源已经用完,在等待队列中有|mutex|个进程。4)mutex=0,n个临界资源正好用完 信号灯mutex取值范围:1)如果系统中只有一个临界资源,被两个进程共享,则信号灯mutex的取值范围为:1、0、-1三个值。2)当用mutex实现n个进程互斥共享一个临界资源时,其值的范围为1-(n-1),3.4 进程间的同步与互斥,3.4 进程间的同步与互斥,图3-9计算进程和打印进程之间的同步,(a)进程同步例1,(b)进程同步例2,图3-8 进程合作例子,3.4.4 进程同步 1.进程同步概念 合作进程的两种同步关系:1)在执行次序上的
18、同步;2)共享缓冲的同步,3.4.4 进程同步2.使用信号灯实现进程同步 举例1:如图3-8(a),设两个同步信号灯Sb、Sc,分别表示进程Pb、Pc是否可以开始行,Sb、Sc的初始值均为0,表示进程Pb、Pc还不能开始执行,如果为1,则进程Pb、Pc就可以开始执行。进程Pb、Pc中的P操作起测试作用,而进程Pa中的操作相当于唤醒,3.4 进程间的同步与互斥,图3-8(a)中的三个进程同步的代码,main()int Sb=0;int Sc=0;cobeginPa();Pb();Pc();coendPa()/进程 Pa;V(Sb);V(Sc);Pb()/进程 PbP(Sb);Pc()/进程 Pc
19、P(Sc);,main()int Sa=0;cobeginPa();Pb();Pc();coendPa()/进程 Pa;V(Sa);V(Sa);Pb()/进程 PbP(Sa);Pc()/进程 PcP(Sa);,2.使用信号灯实现进程同步 举例2:根据图3-9计算进程和打印进程之间的同步的规则,设置两个信号灯Sa、Sb,信号灯意义如下:1)信号灯Sa表示缓冲中有无数据,其初值为0,即缓冲中没有数据。2)信号灯Sb用来表示缓冲区有无空位置存放计算进程的计算结果,其初值为1,表示缓冲中有空的位置。,3.4 进程间的同步与互斥,计算进程cp和打印进程iop的同步代码,mainint Sa=0;/缓冲中
20、没有数据int Sb=1;/缓冲中有空位置cobegincp();iop();coendcp()/计算进程while(计算没有完成)计算一个结果数据;P(Sb);将结果数据送到缓冲区;V(Sa);iop()/打印进程while(打印工作没有完成)P(Sa);将结果数据从缓冲区中取出;V(Sb);在打印机上输出;,3.4.4 进程同步3.生产者和消费者问题(如图3-10所示)解决:设置两个信号灯full(表示缓冲中存放的产品的数量,初始值为0)和empty(表示缓冲中空位置的数量,初始值为n)设置一个互斥信号灯mutex,其初始值为1,3.4 进程间的同步与互斥,缓冲区,使用信号灯解决消费者问题
21、的代码,main()full=0;/缓冲区中存放的产品数量empty=n;/缓冲区空位置的数量 mutex=1;/对有界缓冲区进行操作的互斥信号灯cobeginProducer();Consumer();coendProducer()while(生产未完成)生产一个产品;P(empty);P(mutex);送一个产品到有界缓冲区;V(mutex);V(full);Consumer()while(还要继续消费)P(full);P(mutex);从有界缓冲区中取产品;V(mutex);V(empty);消费一个产品;,3.4.4 进程同步4.读者写者问题 对共享资源的读写操作的同步限制条件是:1)
22、允许任意多的进程同时读;2)一次只允许一个写进程进行写操作;3)如果有一个进程正在进行写操作,不允许任何读进程进行读操作。设置两个互斥信号灯Rmutex、Wmutex和一个公共计数变量Rcount解决“读者-写者”问题的同步代码如下页,3.4 进程间的同步与互斥,main()int Rcount=0;int Rmutex=1;int Wmutex=1;cobeginreader();writer();coendreader()/读者进程while(1)P(Rmutex);if(Rcount=0)P(Wmutex);Rcount+;V(Rmutex);完成读操作;P(Rmutex);Rcount
23、-;if(Rcount=0)V(Wmutex);V(Rmutex);writer()/写者进程while(1)P(W mutex);完成写操作;V(Wmutex);,3.5.1 进程通信类型 1)共享存储器系统 a)基于共享数据结构的通信方式 b)基于共享存储区域的通信方式 2)消息系统 进程间的信息交换以消息或者报文为单位 消息系统有两种通信方式:a)直接通信方式 原语:send(接收者ID,消息)和receive(发送者ID,消息),3.5 进程通信,b)间接通信方式如图3-11,进程间有中间实体(信箱),3.5 进程通信,3)利用共享文件(管道)的通信方式,3.5.2 消息系统-进程直接
24、通信例子消息缓冲区结构:Sptr、Nptr、Size、Text消息缓冲区长度=消息长度+3,3.5 进程通信,3.5.2 消息系统-进程直接通信例子发送原语算法描述如下:,3.5 进程通信,void send(发送区首址m)从发送区id域得接收进程id号;以此id号得接收进程pcb的消息队列头;从发送区size域得缓冲区大小;申请一个消息缓冲区area;/建立新的消息缓冲区 以此大小加上缓冲区头得area;发送进程id送area的sptr域;缓冲区大小送area的size域;发送区的text送area的text域;置area的勾链字为链尾标记;p(mutex);/封锁消息队列 将area入消息
25、队列;v(mutex);/解锁消息队列 v(Si);/与接收进程同步,3.5.2 消息系统-进程直接通信例子接收原语算法描述如下:,3.5 进程通信,void receive(接收区首址n,发送进程号)p(Si);/有无消息可取p(mutex);/封锁消息队列在消息队列找到发送者为sid的消息;从消息队列中摘下此消息缓冲区area;v(mutex);/解锁消息队列area的sptr送接收区的id域;/将消息缓冲区的信息复制到接收区 area的size送接收区的size域;area的text送接收区的text域;释放area给存贮管理模块;,3.6.1 产生死锁的原因和必要条件 1.竞争资源引起
26、死锁 用资源进程有向图说明死锁,如图3-14 临时性资源引起死锁。如图3-15所示,3.6 死锁,2.进程推进顺序不当引起死锁 图3-14的两种不同的进程推进顺序:(1)合法顺序,不会产生死锁 P1:;release(S1);request(S3);P2:;release(S2);request(S1);P3:;release(S3);request(S2);(2)非法顺序,会产生死锁 P1:;request(S3);release(S1);P2:;request(S1);release(S2);P3:;request(S2);release(S3);,3.6 死锁,3.6.1 产生死锁的原因
27、和必要条件.产生死锁的四个必要条件1)互斥条件2)不剥夺条件3)部分分配4)环路条件:存在进程资源的循环链4.解决死锁的基本方法1)预防死锁;2)避免死锁3)检测死锁;4)解除死锁,3.6 死锁,3.6.2 预防死锁1.否定条件二-不剥夺条件规定:一个已经占有了某些资源的进程,若申请不到新的资源时,就释放已经占有的资源,以后再需要时重新申请。缺点:要付出很大代价,增加了系统开销,降低系统吞吐量2.否定条件三-部分分配在分配资源时,只要有一个资源要求得不到满足,则该进程就不能得到任何资源,3.6 死锁,3.6.2 预防死锁2.否定条件三-部分分配缺点:方法简单、容易实现;但资源严重浪费3.否定条
28、件四-环路条件资源编号;所有进程对资源的请求必须按照资源序号递增的次序提出缺点:1)限制了新资源的增加;2)会发生作业使用资源的顺序与系统规定的顺序不同的情况,造成资源浪费;3)限制了用户简单、自由地编程。,3.6 死锁,3.6.3 避免死锁 通过判断资源分配的安全性分配 安全状态:只指系统按照某种进程顺序(如P1、P2、Pn)为每个进程分配资源,直至最大需求,每个进程都可以顺利完成。若不存在这样的安全序列,则称系统处于不安全状态 银行算法是年提出的一种避免死锁的方法,满足资源的最大需求量 缺点:过于谨慎以及花费开销较大,3.6 死锁,3.6.3 避免死锁下面用例子说明系统的安全状态和不安全状
29、态假如系统有12台磁带机。有三个进程P1、P2和P3,分别要求10台、4台和9台磁带机。设在时刻T0进程P1、P2和P3分别已经获得5台、2台和2台磁带机。进程 最大需求 已分配 可用 P110 53 P2 4 2 P3 9 2,3.6 死锁,3.6.4 死锁的检测与恢复 发现死锁的原理:考查某一时刻系统状态是否合理 检测死锁算法的基本思想 死锁检测的时机:1)每次分配后;2)定期检查 排除死锁的实用方法:1)把陷于死锁的全部进程一律撤消;2)逐个作废死锁进程至死锁不再存在;3)逐个强迫抢占资源至死锁不再存在,3.6 死锁,3.7.1 处理机的多级调度 1.处理机调度的功能 1)确定数据结构
30、2)制订调度策略(调度原则)3)给出调度算法 4)具体的实施处理机分派 2.批处理系统中的处理机调度 处理机调度分类:作业调度和进程调度 3.多任务操作系统中的处理机调度 4.多线程操作系统中的处理机调度,3.7 处理机调度,3.7.2 进程调度 进程调度(也称CPU调度):按照某种调度算法从就绪队列中选取进程分配CPU 衡量各种调度算法性能优劣的指标:1)CPU利用率主要目标CPU利用率=CPU利用的时间/开机运行的总时间 2)等待时间 3)响应时间 4)I/O设备的利用率 5)“时空”代价,3.7 处理机调度,3.7.2 进程调度 进程调度方式:剥夺调度和非剥夺调度 下面介绍几种常见的进程
31、调度方法 1.先来先服务(First come first service,FCFS)2.轮转法(RR,Round Robin)将CPU的处理时间分成固定大小的时间片,进程时间片内轮转执行 关键问题:如何确定时间片的大小 时间片q=RT/Nmax,3.7 处理机调度,将考虑下面3个进程,它们按1,2,3的顺序处于就绪队列中:进程 下一个CPU周期 P1 24 P2 3 P3 3,3.7 处理机调度,图3-16 执行过程1,图3-17 执行过程2,FCFS调度算法,其他调度算法,2.轮转法设有如下4个就绪进程:进程 下一个CPU周期 P1 6 P2 3 P3 1 P4 7 则如图3-18所示,3
32、.7 处理机调度,ATT,0 1 2 3 4 5 6 7 q,图3-18 平均周转时间ATT与时间片q之间的关系,3.7.2 进程调度3.多级反馈轮转法 思想:不同级别的就绪队列分配给不同时间片,优先级高的为第一级队列,时间片最小,随着队列级别降低,时间片加大 例如考虑由3个队列组成的多级队列调度。3个队列的编号分别为0,1,2,如图3-19,3.7 处理机调度,3.7.2 进程调度 4.优先数法(Priority)思想:按进程的优先级确定调度优先权 优先级确定方法:(1)静态法:可按进程类型、资源的要求、用户要求指定(2)动态法:原则是合理地分配CPU时间、紧急的程序优先,3.7 处理机调度
33、,实例解释:假设就绪状态有4个进程,每个进程所需运行时间如下所示。进程 所需运行时间 1 6 2 3 3 1 4 7 进程到达次序为1,2,3,4。试分别按先来先服务调度算法、短进程优先调度算法和时间片轮转法(时间片分1,3,5,6)给出进程调度顺序,并计算平均等待时间。,3.7 处理机调度,解:(1)先来先服务调度算法进程调度顺序为:平均等待时间:T=14(0+6+9+10)=6.25(2)短进程优先调度算法进程调度顺序为:平均等待时间:T=14(4+1+0+10)=3.75(3)时间片轮转法,3.7 处理机调度,解:时间片为1,进程调度顺序如下:平均等待时间:T=1/4(0+3+2+2+1
34、+1)+(1+3+2)+2+(3+2+2+1+1+1)=14(9+6+2+10)=6.75时间片为3,进程调度顺序如下:平均等待时间:T=14(0+7)+3+6+(7+3)=14(7+3+6+10)=6.5,3.7 处理机调度,解:时间片为5,进程调度顺序如下:平均等待时间:T=14(0+9)+5+8+(9+1)=14(9+5+8+10)=8时间片为6,相当于先来先服务调度算法。其进程调度顺序和平均等待时间与先来先服务调度算法相同。总结:短进程优先调度算法使进程平均等待时间最小。对于时间片轮转法,进程平均等待时间与时间片的大小有关。,3.7 处理机调度,3.8.1 Windows XP的进程
35、1.Windows XP的进程对象2.Windows XP的进程TDB(任务数据库),3.8 Windows XP的进程和线程管理,表3-2 Windows XP进程对象的属性,3.8.2 Windows XP的线程1.Windows XP的线程对象线程对象如图3-22所示线程对象的属性见表3-3。,3.8 Windows XP的进程和线程管理,表3-3 Windows XP线程对象的属性,2.Windows XP的线程状态,3.8.2 Windows XP的线程3.Windows XP的线程控制 CreateThread、ExitThread、SuspendThread、ResumeThre
36、ad4.Windows XP的线程调度 Windows XP的调度对象是线程 Windows XP采用严格的抢先式动态优先级调度,根据优先级和分配时间配额(quantum)进行调度,3.8 Windows XP的进程和线程管理,4.Windows XP的线程调度,3.8 Windows XP的进程和线程管理,表3-4 Windows 32中与线程调度相关的API函数及功能说明,3.8.3 Windows XP的进程互斥和同步1.互斥、互斥对象与临界区对象Windows XP中用于互锁变量访问的API函数:InterlockedExchange、InterlockedExchangePointe
37、r、InterlockedCompareExchange、InterlockedCompareExchangePointer、InterlockedExchangeAdd、InterlockedDecrement、InterlockedIncrement。,3.8 Windows XP的进程和线程管理,3.8.3 Windows XP的进程互斥和同步 1.互斥、互斥对象与临界区对象 Windows XP中与互斥对象有关的API函数:CreateMutex、OpenMutex、ReleaseMutex Windows XP两个统一的同步对象等待操作:WaitForSingleObject以及Wa
38、itForMultipleObjects 与临界区对象有关的API函数:InitializeCriticalSection、EnterCriticalSection、TryEnterCriticalSection、LeaveCriticalSection和DeleteCriticalSection。2.事件对象(Event):CreateEvent、OpenEvent、SetEvent/PulseEvent、ResetEvent,3.8 Windows XP的进程和线程管理,3.8.4 Windows XP的进程间通信1.Windows XP的信号(signal)两组与信号相关的系统调用:1)
39、SetConsoleCtrlHandler和GenerateConsoleCtrlEvent 2)signal和raise2.Windows XP基于文件映射的共享存储区相关操作:CreateFileMapping、OpenFileMapping、MapViewOfFile、FlushViewOfFile、UnmapViewOfFile、CloseHandle,3.8 Windows XP的进程和线程管理,3.8.4 Windows XP的进程间通信3.Windows XP的管道无名管道和命名管道两种管道机制无名管道的相关API函数:CreatePipe、ReadFile、WriteFile与
40、命名管道有关的API函数包括:CreateNamedPipe、ConnectNamedPipe、CallNamedPipe命名管道的读写方式包括:ReadFile、WriteFile(用于阻塞方式)、ReadFileEx、WriteFileEx(用于非阻塞方式)。,3.8 Windows XP的进程和线程管理,3.8.4 Windows XP的进程间通信 4.Windows XP的邮件槽 邮件槽(mailslot):是一种伪文件,它驻留在内存中,采用不定长数据块(报文)和不可靠传递方式。通常采用client/server模式对于本地邮件槽,其名字格式为:.mailslotpathname对于远
41、程邮件槽,其名字格式为:computernamemailslotpathname。Windows XP有关邮件槽的API函数包括:CreateMailslot、GetMailslotInfo、SetMailslotInfo、ReadFile、CreateFile和WriteFile等,3.8 Windows XP的进程和线程管理,3.8.4 Windows XP的进程间通信 5.Windows XP套接字 通信模式:client/server或peer-to-peer模式 Windows XP中的套接字规范叫“Winsock”6.剪贴板(Clipboard)与剪贴板相关的API包括:OpenClipboard;CloseClipboard;EmptyClipboard;SetClipboardData;GetClipboardData;RegisterClipboardFormat。,3.8 Windows XP的进程和线程管理,本章从程序的顺序执行和并发执行出发给出进程的定义、研究了进程控制原语(创建原语、撤消原语、等待原语、唤醒原语等)、线程的概念、进程通信(共享存储器系统、消息系统、利用共享文件的通信方式)、死锁、处理机调度(主要是进程调度和线程调度),本章最后给出了一个实例Windows XP的进程和线程管理。,3.9小结,
链接地址:https://www.31ppt.com/p-6342507.html