第3章进程管理3.1进程的概念3.1.1程序的并发执行1.程序(program)2.程序的顺序执行3.多道程序系统中程序执行环境的变化4.程序的并发(concurrent)执行图3.1堆栈的取数和存数过程计算机操作系统教程(第3版)23.1.2进程的定义3.2进程的描述3.2.1进程控制块PCB1.描述信息2.控制信息3.资源管理信息4.CPU现场保护结构3.2.2进程上下文图3.2进程上下文结构图3.3UNIXSystemⅤ进程上下文组成计算机操作系统教程(第3版)33.2.3进程上下文切换图3.4进程上下文的切换过程3.2.4进程空间与大小图3.5进程空间示例3.3进程状态及其转换3.3.1进程状态3.3.2进程状态转换图3.6进程状态转换计算机操作系统教程(第3版)43.4进程控制3.4.1进程创建与撤销1.进程创建图3.7创建原语流图2.进程撤销图3.8撤销原语流图计算机操作系统教程(第3版)53.4.2进程的阻塞与唤醒图3.9阻塞原语图图3.10唤醒原语3.5进程互斥3.5.1资源共享所引起的制约1.临界区图3.11多进程共享内存栈区示例计算机操作系统教程(第3版)62.间接制约3.什么是互斥3.5.2互斥的加锁实现3.5.3信号量和P,V原语1.信号量(semaphore)2.P,V原语图3.12P原语操作功能图3.13V原语操作功能计算机操作系统教程(第3版)7计算机操作系统教程(第3版)83.5.4用P,V原语实现进程互斥3.6进程同步3.6.1同步的概念计算机操作系统教程(第3版)93.6.2私用信号量3.6.3用P,V原语操作实现同步图3.14缓冲区队列计算机操作系统教程(第3版)103.6.4生产者-消费者问题图3.15生产者-消费者问题计算机操作系统教程(第3版)113.7进程通信3.7.1进程的通信方式图3.16消息的组成图3.17缓冲区或邮箱通信结构计算机操作系统教程(第3版)123.7.2消息缓冲机制3.7.3邮箱通信图3.18邮箱通信结构计算机操作系统教程(第3版)133.7.4进程通信的实例——和控制台的通信图3.19和控制台通信示例计算机操作系统教程(第3版)141.KCP和DCP的动作2.CCP和KCP及DCP的接口3.CCP与用户进程的接口图3.20CCP和用户进程接口4.CCP的动作3.7.5进程通信的实例——管道1.管道pipe图3.21管道通信计算机操作系统教程(第3版)152.示例图3.22父进程和子进程P1,P2通信例子计算机操作系统教程(第3版)16计算机操作系统教程(第3版)17图3.23例2程序流程图计算机操作系统教程(第3版)183.8死锁问题3.8.1死锁的概念1.死锁的定义图3.24死锁的概念计算机操作系统教程(第3版)192.死锁的起因3.产生死锁的必要条件3.8.2死锁的排除方法1.死锁预防2.死锁避免3.死锁的检测和恢复3.9线程的概念3.9.1为什么要引入线程3.9.2线程的基本概念图3.25等效于单线程的进程执行示意图图3.26多线程情况下进程执行示意图计算机操作系统教程(第3版)203.9.3线程与进程的区别图3.27多线程与进程的关系3.9.4线程的适用范围图3.28RPC请求处理计算机操作系统教程(第3版)213.10线程分类与执行3.10.1线程的分类图3.29线程、进程等的上下文切换开销3.10.2线程的执行特性图3.30线程的状态与操作计算机操作系统教程(第3版)22本章小结习题3.1有人说,一个进程是由伪处理机执行的一个程序,这话对吗?为什么?3.2试比较进程和程序的区别。3.3我们说程序的并发执行将导致最终结果失去封闭性。这话对所有的程序都成立吗?试举例说明。3.4试比较作业和进程的区别。3.5UNIXSystemV中,系统程序所对应的正文段未被考虑成进程上下文的一部分,为什么?3.6什么是临界区?试举一临界区的例子。3.7并发进程间的制约有哪2种?引起制约的原因是什么?3.8什么是进程间的互斥?什么是进程间的同步?3.9试比较P,V原语法和加锁法实现进程间互斥的区别。3.10设在书3.6m个长度相等的有界缓冲区组成,且每次传输数据长度等于有界缓冲区长度以及生产者和消费者可对缓冲区同时操作。重新描述发送过程deposit(data)和接收过程remove(data)。3.11两进程PA,PB通过两FIFO缓冲区队列连接(如图3.31所示),每个缓冲区长度等于传送消息长度。进程PA,PB之间的通信满足如下条件:图3.31习题3.11图(1)至少有一个空缓冲区存在时,相应的发送进程才能发送一个消息。(2)当缓冲队列中至少存在一个非空缓冲区时,相应的接收进程才能接收一个消息。试描述发送过程send(i,m)和接收过程receive(i,m)。这里i代表缓冲队列。3.12在和控制台通信的例中,设操作员不仅仅回答用户进程所提出的问题,而且还能计算机操作系统教程(第3版)23独立地向各用户进程发出指示。对于这些指示,操作员不要求用户进程回答,但它们享有比其他消息优先传送的优先度。即如果inbuf中有指示存在,系统不能进行下一次通信会话。试按上述要求重新描述CCP和KCP,DCP。3.13编写一个程序使用系统调用fork生成3个子进程,并使用系统调用pipe创建一管道,使得这3个子进程和父进程公用同一管道进行信息通信。3.14设有5个哲学家,共享一张放有五把椅子的桌子,每人分得一把椅子。但是,桌子上总共只有5支筷子,在每人两边分开各放一支。哲学家们在肚子饥饿时才试图分两次从两边拾起筷子就餐。条件:(1)只有拿到两支筷子时,哲学家才能吃饭。(2)如果筷子已在他人手上,则该哲学家必须等待到他人吃完之后才能拿到筷子。(3)任一哲学家在自己未拿到两支筷子吃饭之前,决不放下自己手中的筷子。试:(1)描述一个保证不会出现两个邻座同时要求吃饭的通信算法。(2)描述一个既没有两邻座同时吃饭,又没有人饿死(永远拿不到筷子)的算法。(3)在什么情况下,5个哲学家全部吃不上饭?3.15什么是线程?试述线程与进程的区别。3.16使用库函数clone()与creatthread()在Linux环境下创建两种不同执行模式的线程程序。