预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共667页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第1章操作系统概论第2章进程管理教学内容2.1进程的引入2.2进程的描述2.3进程控制2.4进程的同步与互斥2.5进程同步问题举例2.6进程通信2.7线程本章小结2.1进程的引入2.1.2程序的并发执行及其特征2.程序并发执行时的特征2.1.3进程的定义与特征进程和程序之间的关系2.进程的特征2.1.4进程的基本状态及转换2.进程状态的转换程3.引入挂起状态时的进程状态完成或撤消2.1.5Linux进程的状态2.2进程的描述2.2.1进程控制块PCB1.进程标识符进程标识符用于惟一地标识一个进程。一个进程通常有两种标识符:(1)进程内部标识符。(2)进程外部标识符。2.处理机状态:由各种寄存器中的内容组成。3.进程调度信息(1)进程状态。(2)进程优先级。(3)进程调度所需要的其它信息。(4)事件,或阻塞原因。4.进程控制信息,包括:(1)程序和数据的地址;(2)进程同步和通信机制;(3)资源清单;(4)链接指针。2.2.2进程控制块的组织方式2.链接方式3.索引方式2.2.3Linux进程的PCBLinux支持典型的UNIX进程间通信机制——信号、管道,也支持SystemⅤ通信机制——共享内存、信号量和消息队列。3.进程资源信息记录了与该进程有关的存储器的各种地址和资料、文件系统以及打开文件的信息等等。4.CPU现场信息2.3进程控制2.3.1进程的家族关系2.3.2进程的创建与终止2.3.3进程的阻塞与唤醒实现进程的执行状态到等待状态,又由等待状态到就绪状态转换的两种原语,分别为阻塞原语与唤醒原语。2.3.4Linux系统调用2.4进程的同步与互斥2.临界区2.4.2进程的互斥与同步2.4.3锁机制改进的加锁和开锁原语2.利用锁机制实现进程的互斥2.4.4信号量机制1.整型信号量2.记录型信号量Wati(S)申请临界资源的原语wait操作可描述为:voidwait(S){S.value=s.value-1;ifS.value≥0本进程继续;else{将本进程放入阻塞态队列;转进程调度;}}释放临界资源的原语signal操作可描述为:voidsignal(S){S.value=s.value+1;;ifs≤0then唤醒指针queue所指的阻塞态进程;}2.5进程同步问题举例0算法及程序semaphoremutex=1,empty=n,full=0;/*定义信号量并赋初值*/messagebuffer[n];intin=0,out=0;/*定义存取指针的初始位置*/voidmain(){parbegin(proceducer,consumer);}生产者进程voidprocedure(){do{生产一件产品;…wait(empty);wait(mutex);将产品放入缓冲区buffer[in];in=(in+1)%n;signal(mutex);signal(full);}while(true);}消费者进程voidconsumer(){do{wait(full);wait(mutex);从缓冲区buffer[out]中取走一件产品;out=(out+1)%n;signal(mutex);signal(empty);消费这件产品;}while(true);}4.在生产者—消费者问题中应注意:2.5.2读者—写者问题共享文件F由于多个进程可以同时读,因此只要有一个reader进程在读,其它reader进程便不必申请该共享文件,直接读即可;若无文件在读,则第一个读文件的进程必须做申请该文件的操作。只要有read进程在执行,则不允许writer进程去写。因此,仅当readcount=0,即无reader进程在读时,reader进程才需要执行wait(wmutex)操作。若wait(wmutex)操作成功,reader进程便可去读,相应地,做readcount+1操作。同理,仅当reader进程在执行了readcount减1操作后其值为0时,才须执行signal(wmutex)操作,以便让writer进程写。3.算法及程序…进行读操作;…wait(rmutex);readcount--;if(readcount==0)signal(wmutex);signal(rmutex);}}写者进程:voidwriter(){while(1){wait(wmutex);执行写操作;signal(wmutex);}}4.注意事项及提示(1)对于写进程,共享文件是临界资源;而对于读进程,该文件不是临界资源。(2)整型变量readcount是临界资源,所以在使用前后要进行Wait、Signal操作。2.5.3哲学家进餐问题图2-14哲学家就餐餐问题2.问题分析放在桌子上的筷子是临界资源,在一段时间内只允许一位哲学家使用。为了实