持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情
我们在学习互斥和同步之前,要先了解互斥和同步的本质是什么,所谓同步就是把异步环境下的一组并发进程,因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程。互斥是指不允许两个以上的共享该资源的并发进程同时进入临界区。两个进程不能同时进入临界区,否则就会导致数据的不一致,产生与时间有关的错误。进程的同步则是程序共享私有资源造成直接制约。
互斥信号量和同步信号量的详细区别:
1、初值不同
同步信号量的初值一般设为0; 互斥信号量的初值一般设为1
2、用途不同
(1)同步信号量的用途:防止被抢占 初始为空 低优先级的任务持有信号量,高优先级的任务需要这个信号量,只有当低优先级的任务signal(释放)信号量,高优先级的任务才能wait(获取)信号量。通过这种机制低优先级的任务就可以防止被高优先级的任务抢占。wait和signal是分别在两个任务里做的。
(2)互斥信号量的用途:对临界区上锁 初始为满 当一个任务想对临界区访问时,为了防止别的任务也对该临界区操作,它需要对该临界区上锁,即wait(获取)一个互斥的信号量,以保证独享。当该任务wait(获取)一个互斥的信号量以后,它仍然能被高优先级的任务抢占,但高优先级的用户仍然无法访问它已经上锁的临界区。而解锁也是由上锁的任务来做的。wait和signal是在一个任务里完成的。
3、值的含义不同
(1)同步信号量,值为资源可以使用的个数,信号量小于0,则线程进行等待,信号量大于0,表示可用资源个数。初始值0. (2)互斥信号量只有两个值0或1,0表示资源正在被占用,线程等待。1表示,资源没有被使用,线程可以进入。初始值为1
以上内容就是操作系统中关于互斥信号量和同步信号量之间的本质区别与执行的区别。