操作系统中进程同步介绍

描述

进程同步

线程

动画展示,临界区的资源,在某个时刻,只能有一个进程在使用。

临界资源

一旦有对资源的共享,就必然涉及竞争限制。

临界资源用来表示一种,公共资源或者说是共享数据,可以被多个线程使用。

但是每一次,只能有一个线程使用它。一旦临界资源被占用,其他线程,要想使用这个资源,就必须等待。

进程同步的主要任务是,对多个相关进程,在执行次序上进行协调,以使并发执行的诸进程之间,能有效地共享资源和相互合作,从而使程序的执行,具有可再现性。

临界区

有了临界资源的概念,就很容易理解临界区的概念。在程序中,所有的操作,都是通过代码执行的,访问临界资源的那段代码就是临界区

处理竞争或者合作依赖导致的制约

空闲让进:对于临界资源,如果空闲没有被使用,谁来了之后都可以使用

忙则等待:如果临界资源正在被使用,那么其他后来者就需要进行等待。

有限等待:要求访问临界资源的进程,应保证有限时间内,能进入自己的临界区,自己不能傻傻的等

让权等待:如果无法进入自己的临界区时,应立即释放处理机,而不能占着CPU死等,你死等就算了,别人却也不能用了。

锁就是对资源施加控制,锁指的是一种控制权。

当进入临界区时,我们称之为获得锁,获得锁之后就可以访问临界资源。

其他线程想要进入临界区,也需要先获得锁。

当前线程结束后,将会释放锁,别的线程就可以获取这个资源的锁。

死锁

锁表示一种控制权,对临界资源的访问权限。

下面动画展示,两个小人,都要使用资源1和资源2,才能达到对面。左边小人战友资源1,右边小人占有资源2。他们占有当前资源,再去获取对方的资源时,就会产生死锁的情况。

线程

如果临界资源不止一个,就可能出现:需要先后访问两种临界资源A和B,thread1获得了A线程的锁之后,等待获得B的锁,但是thread2获得了资源B的锁,在等待A资源的锁,这就出现了互相等待的情况。

解决方案

AND型信号量机制就是用于解决这种多共享资源下的同步问题的。

将进程在整个运行过程中,需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放。

只要尚有一个资源未能分配给进程,其它所有可能为之分配的资源,也不分配给它。

也就是对,若干个临界资源的分配,采取原子操作方式:要么把它所请求的资源全部分配到进程,要么一个也不分配。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分