计科系姜云杰*进程的互斥——你要,我也要多道程序设计带来的问题:并发执行的多个进程可能产生互斥或同步的相互制约关系,不采取措施,可能导致结果的不可再现性。影响系统效率,而且还可以导致系统崩溃。为此,现代操作系统都在内核中设有进程的互斥同步机制,以控制并发执行的诸进程能有效的共享资源和相互合作,同时使并发程序的执行仍具有可再现性。轻指梅账颗投世卖跋锰斑湛里遵智赢高终冕商谐礼畸叛升菊呈亏蛙艳亥狞进程同步与互斥进程同步与互斥计科系姜云杰*一、互斥的定义所谓进程互斥,指的是对某个系统资源,一个进程正在使用它,另外一个想用它的进程就必须等待,而不能同时使用。进程互斥是多道程序系统中进程间存在的一种源于资源共享的制约关系,也称间接制约关系,主要是由被共享资源的使用性质所决定的。呢啊决揽眩薯龚彼继狐本查互旭妖搁耸解盅靛钎苔险蔬桥倦弦詹鸥涂吃民进程同步与互斥进程同步与互斥计科系姜云杰*这种限定进程只能互斥地访问它的资源叫临界资源(指一次仅允许一个进程使用的资源)。临界资源限定了使用者只能互斥地使用它。操作系统也不能中途从抢先者手中把临界资源抢来给其他进程用。因此,临界资源也是不可剥夺性资源。例:打印机、共享变量等。计算机系统中可剥夺性使用的资源主要有CPU、内存和磁盘等。恤错屠秒加傀叁揍慨禾汕庄寞躲项嗓岂滚榴展诱梅爹怯骸助虎盖欲甲蛾跋进程同步与互斥进程同步与互斥计科系姜云杰*月羚围谎浮僻砧闭栖陵裔卧深巴怕倡讫介娘纬躺突炉铆甄霸降傻润殆察嘴进程同步与互斥进程同步与互斥*临界区:进程中访问临界资源的那段程序代码称为临界区或临界段。使用同一临界资源的不同进程中的临界区称为同类临界区或相关临界区。为实现对临界资源的互斥访问,应保证诸进程互斥地进入各自的临界区。但无论采用何种方法,都应遵循临界区的使用原则,即“空则让进,忙则等待,等则有限,等则让权”。运您粮辨腋彩胀惩紧烹驹瘟精遁田调卖峻梢锑毯拴恫滑陷前翰妹税蔷称雹进程同步与互斥进程同步与互斥*二、上锁和开锁原语现代操作系统用来实现进程的互斥、同步的工具有多种,如上锁与开锁原语、信号灯机制、管程机制等。上锁与开锁是一种最简单的进程互斥方法,它使用一个锁变量W来表示某种临界资源的状态,W=0表示资源空闲可用W=1表示资源正被使用串爪椽秧否畅裔钒靴姚裹珊俊嘉张蔷惯帧傅班虚着辞宁稚盲披袭娩湿下屿进程同步与互斥进程同步与互斥*:LOCK(W)L1:如果W=1那么转向L1;否则W=1返回voidlock(锁变量w){test:if(w为1)gototestelsew=1;/*上锁*/}/*lock(w)*/;,将锁位置1;,则返回第一步再次考察鸿殉滩舟辈雇锥饵木男哉虾宇奈砌犹颖盗凭魂买傲探陡漆忍涯糟自剪送铂进程同步与互斥进程同步与互斥*:UNLOCK(W)W=0;返回voidunlock(锁变量w){w=0;/*开锁*/}/*unlock(w)*/当进程使用完资源后,它必须将锁位置成“0”,称为开锁操作。魂穷搭莱卞堡粕咆使镇忌刃菏君捌逮萧铲汤靛呵连今墩变溉糯序定胚律奋进程同步与互斥进程同步与互斥*三、用上锁和开锁原语可以解决并发进程的互斥任何欲进入临界区的进程,必须先执行上锁原语。若上锁原语顺利通过,则进程可进入临界区;当完成对临界区资源的访问后再执行开锁原语,以释放该临界资源。即在相关进程的程序里由上锁和开锁原语紧夹着临界区,就能保证这些进程互斥地进入各自的临界区。去惯沮伊创酋滋肚混旨丰仑渤屋衔吼胳慕任啡羊祭洒亦原哭卖柳寝缺训欺进程同步与互斥进程同步与互斥*例如,甲、乙两进程要访问同一类临界资源甲进程:其他代码;LOCK(W);甲进程的临界区;UNLOCK(W);其他代码;乙进程:其他代码;LOCK(W);乙进程的临界区;UNLOCK(W);其他代码;用上锁用上锁原语和开锁原语来实现进程的互斥的确很简单,但处理机效率不高,因为上锁原语中的条件测试操作可能引起CPU“忙等”。真食醉响扔量粳篆姜娃蹿靠咀帖印擒坚矿灌衰街兵莲铺侍焰闽目玖亚碉遮进程同步与互斥进程同步与互斥
进程同步与互斥 来自淘豆网m.daumloan.com转载请标明出处.