一、互斥锁
1.锁:是用于实现互斥的一种方法,本质是一个布尔型的变量,只有true+false两种是否上锁状态。
2.操作:通过acquire(获得锁)与release(释放锁)方法对锁进行操作,方法的执行必须是原子操作
3.缺点:当进程无法进入临界时,会一直执行acquire方法中的循环(也称自旋锁),造成忙等待;适用于多处理器系统。
二、信号量机制-解决进程互斥与同步问题
1.相关概念:
信号量-即变量,表示系统中某种资源的数量,用户进程通过原语对信号量进行操作.
原语-执行过程中不能被中断的特殊程序段,由关/开中断指令实现。
一对原语-wait(信号量)+signal(信号量),简写为P(S)、V(S)
操作=初始化+P操作+V操作
2.整型信号量-用整数型的变量作为信号量,表示资源数量
具体进程操作-wait进入区,申请资源,数量减1——>使用,临界区,访问资源——>signal退出区,释放资源,数量加1
缺点-可能会一直在wait方法中循环,发生忙等的现象,不满足让权等待。
3.记录型信号量-用记录型数据结构表示作为信号量,默认为信号量
包括剩余资源数+等待队列
具体进程操作:资源分配完毕,其它进程申请时会被加入等待队列中,当其它进程使用完该资源执行signal指令后,等待队列中的进程会通过wake up唤醒原语使其退出等待队列进入就绪状态。