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

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

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

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

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

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

第2单元进程与进程管理互斥与同步进程互斥举例P1与P2并发执行,两种可能的执行次序: A情形(希望这样) p1:r1:=x;r1:=r1+1;x:=r1; p2:r2:=x;r2:=r2+1;x:=r2;临界区是进程中对临界资源使用的程序段,称为相对于该临界资源的临界区。例题互斥使用资源办法1.锁和上锁、开锁操作 什么是锁 用变量w代表某种资源的状态(0表示可用,1表示不可用),w称为“锁”。 锁变量由内核维护,只能用内核提供的上锁操作和开锁操作修改4250利用锁实现互斥程序描述 程序task1 main()p1()p2() {{{ intw=0;∕*互斥锁*∕ cobeginlock(w);lock(w); p1();csa;csb; p2();unlock(w);unlock(w); coend }}}46上锁原语的问题:没有让权等待!进程进入临界区的准则434445main() { intmutex=1;∕*互斥信号灯*∕ cobegin pa(); pb(); coend } pa()pb() {{  p(mutex);p(mutex); csa;csb; v(mutex);v(mutex);  }}用信号量改写卖票程序 x代表某航班机座号,pa和pb两个售票进程,售票工作是对变量x加1。 设:mutex为互斥信号灯,初值为1。同步54575962pi()cj() {{ while(生产未完成)while(还要继续消费) {{ p(sa); 生产一个产品;p(mutex); p(sb);从有界缓冲区中取产品; p(mutex);v(empty); 送一个产品到有界缓冲v(sb); v(mutex);消费一个产品; v(sa); }} }}例子5153你可以用以上的算法解决你的程序之间的同步与互斥的关系