如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第4章进程同步与通讯、进程死锁并发的需求4.1并发程序识别程序中的并发成分有两种方法:程序员写顺序程序,用识别工具识别并发成分。再组织使用操作系统的并发机制。由程序员识别并发成分,用并发程序设计语言设计并发程序,由编译系统安排并发;或直接利用操作系统的系统调用/或高级并发程序库设计并发程序。并发程序设计语言---并发语句并发语句示例并发语句描述手段的优缺点并发程序实现与进程相关的系统调用exit(status):进程结束。该系统调用发出后,操作系统将从系统中删除调用exit的进程,并将status值传给等待它结束的父进程。wait(&status):等待子进程结束。当有多个子进程时,任一个子进程结束即将控制返回调用者,并将子进程调用exit(status)时的status值送到&status指针所指单元中。在控制返回调用者时,同时将所等到的子进程pid作为wait()系统调用函数的返回值。waitpid(pid,…):等待pid所指定的进程结束。多进程实现前述的读写并发程序4.2进程的互斥与同步4.2.1临界段问题(互斥问题)ParbeginProgramA:beginN:=count;N:=N+$100;count:=N;end;ProgramB:beginM:=count;M:=M+$200;count:=M;end;Parend;例3:有限缓冲区的生产者/消费者问题(生产者和消费者共享一个产品缓冲队列)。typeitem=…;#缓冲区中数据的类型typebuffer=recordinst:item;next:pointertobuffer;end;varP,C,First:pointertobuffer;nextp,nextc:item;First:=nil;new(P);#获得一空缓冲区P.inst:=nextp;P.next:=First;First:=P;untilfalse;end;…consumetheiteminnextc;…untilfalse;end;Parend;T0:consumerC:=FirstT1:producerP.next:=FirstT2:producerFirst:=PT3:consumerFirst:=First.next则会发生生产者加入队列的缓冲区丢失。