在多道程序设计的系统中同时存在着许多进程。他们可能同时装入主存,等待处理器的调度,这就构成的并发进程。对单核处理器来讲,并发进程其实不是多个进程同时占用途理器同时履行,而是同时装入主存,至于进程甚么时候被履行,这要看进程的调度策略啦!
谈到并发进程,我就想到进程的并发会产生许多毛病,这些毛病在我们在设计系统或编写软件时都是尽可能要避免的。
那末进程的并发履行为何会产生毛病那?归根究竟是并发进程访问同享变量的事,当多个进程访问同享变量的进程中,就有可能会产生与时间有关的毛病,或是死锁。
1、导图分析
2、导图分析
说到进程访问同享资源,我觉得首先先明白进程的同步与进程的互斥问题。
1、进程的互斥:指当有若干个进程都要使用某1同享资源时,任什么时候候最多只允许1个进程去使用同享资源,其他要使用的进程必须等待,知道该资源的占用者释放了该资源。
2、进程的同步:在并发进程之间存在1种制约关系,1个进程的履行依赖另外一个进程的消息,当1个进程没有得到另外一个进程的消息时应当等待,知道消息到达后才被唤醒。
3、与时间有关的毛病:多个进程共同履行时,交替的访问了同享变量,但是有1个进程由于本身缘由或外界缘由被中断了后,稍后又接着履行,最后致使运行结果出错。
例如:
某小区有两扇门,其中1扇门是入口,另外一扇门是出口,用1个计数器count显示在小区的人数,当有人进入时,由进程PIN实现计数加1,当有人退出时,由进程POUT减1。这两个进程以下
这样履行过后,结果会变成n+1,这就是与时间有关的毛病的实例。
解决办法:采取PV操作,引进PV操作会引进1个叫临界区的名词,临界区是指并发进程中与同享变量有关的程序段。相干临界区是指并发进程中设计到相同变量的那些临界区。PV操作的原理是保证1个进程在临界区履行时,不让另外一个进程进入相干临界区履行,即个进程对同享变量的访问是互斥的,这就不会造成与时间有关的毛病。对上面表格的1个例子来讲,当进程PIN被打断后,POU不能访问同享变量count,直到PIN进程结束后才让POUT访问,这样最后的结果就正确了。
3、小结
解决并发进程之间的毛病关键就是解决同享变量的访问方式,当多个进程都想访问同享变量时,我们1定要管理好各个进程的使用规律,不然的话程序就会出错。采取PV操作,让相干进程互斥的进入各自的临界区履行,这样就解决了并发进程间与时间有关的毛病。好了,并发进程访问同享变量时,还会产生死锁,要想看死锁的构成缘由及解决办法,请关注我的下1篇博客!