进程同步
动画展示,临界区的资源,在某个时刻,只能有一个进程在使用。
临界资源
一旦有对资源的共享,就必然涉及竞争限制。
临界资源用来表示一种,公共资源或者说是共享数据,可以被多个线程使用。
但是每一次,只能有一个线程使用它。一旦临界资源被占用,其他线程,要想使用这个资源,就必须等待。
进程同步的主要任务是,对多个相关进程,在执行次序上进行协调,以使并发执行的诸进程之间,能有效地共享资源和相互合作,从而使程序的执行,具有可再现性。
临界区
有了临界资源的概念,就很容易理解临界区的概念。在程序中,所有的操作,都是通过代码执行的,访问临界资源的那段代码就是临界区
处理竞争或者合作依赖导致的制约
空闲让进:对于临界资源,如果空闲没有被使用,谁来了之后都可以使用
忙则等待:如果临界资源正在被使用,那么其他后来者就需要进行等待。
有限等待:要求访问临界资源的进程,应保证有限时间内,能进入自己的临界区,自己不能傻傻的等
让权等待:如果无法进入自己的临界区时,应立即释放处理机,而不能占着CPU死等,你死等就算了,别人却也不能用了。
锁
锁就是对资源施加控制,锁指的是一种控制权。
当进入临界区时,我们称之为获得锁,获得锁之后就可以访问临界资源。
其他线程想要进入临界区,也需要先获得锁。
当前线程结束后,将会释放锁,别的线程就可以获取这个资源的锁。
死锁
锁表示一种控制权,对临界资源的访问权限。
下面动画展示,两个小人,都要使用资源1和资源2,才能达到对面。左边小人战友资源1,右边小人占有资源2。他们占有当前资源,再去获取对方的资源时,就会产生死锁的情况。
如果临界资源不止一个,就可能出现:需要先后访问两种临界资源A和B,thread1获得了A线程的锁之后,等待获得B的锁,但是thread2获得了资源B的锁,在等待A资源的锁,这就出现了互相等待的情况。
解决方案
AND型信号量机制就是用于解决这种多共享资源下的同步问题的。
将进程在整个运行过程中,需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放。
只要尚有一个资源未能分配给进程,其它所有可能为之分配的资源,也不分配给它。
也就是对,若干个临界资源的分配,采取原子操作方式:要么把它所请求的资源全部分配到进程,要么一个也不分配。
-
操作系统
+关注
关注
37文章
6713浏览量
123164 -
线程
+关注
关注
0文章
504浏览量
19638 -
进程
+关注
关注
0文章
201浏览量
13941
发布评论请先 登录
相关推荐
评论