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

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

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

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

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

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

问题纲要进程并发运行所带来的问题进程间通信IPC互斥的需要临界区(CriticalSection)互斥:一组并发进程中的一个或多个程序段,因共享某一公有资源而导致他们不能同时进入临界区称为互斥。互斥方案应满足的4个条件互斥的实现方案关中断锁变量严格轮转法Peterson方案TSL指令(测试与设置指令)信号量(semaphore)DOWN原语(P操作)UP原语(V操作)生产者-消费者问题生产者过程消费者过程直接制约与同步生产者-消费者问题信号量定义生产者进程消费者进程哲学家进餐问题哲学家生活的过程不正确解法低效率的互斥可行解法经典解法哲学家过程哲学家的两个主要动作读者-写者问题semaphoremutex=1;semaphoredb=1;intrc=0;voidreader(){while(true){down(mutex);rc+=1;if(rc==1)down(db);up(mutex);read-data-base();写者过程理发师睡觉问题信号量定义voidbarber(){while(true){down(customers);down(mutex);waiting--;up(barbers);up(mutex);cut-hair();}}司机-售票员问题司机、售票员问题semaphoredriving=0;semaphoredoor=1;voiddriver(){while(true){down(driving);开车();正常行车();到站停车();up(door);}}两学校交通问题学校交通图示semaphoreS2T=1;semaphoreT2S=1;semaphoreSK=1;semaphoreTL=1;semaphoreM=2;voidbikeS2T(){down(S2T);down(SK);go-S-K();down(M);get-in-M();up(SK);down(TL);up(M);go-L-T();up(TL);up(S2T);}Windows中的IPC实现DOWN操作UP操作示例.打开窗口数目的限制Windows平台实现intAPIENTRYWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){inti;hSemaphore=CreateSemaphore(NULL,//nosecurityattributescMax,//initialcountcMax,//maximumcountNULL);//unnamedsemaphorefor(i=0;i<5;i++){CreateThread(NULL,0,thread_func,NULL,0,NULL);}Sleep(60000);return0;}