核心考点
信号量机制、P 操作与 V 操作的定义、互斥与同步的实现方式,重点掌握“P 可能阻塞、V 可能唤醒”以及信号量初值的含义。
参考答案(答题要点)
1.信号量定义:信号量是一个整型变量,用于表示系统中某类资源的数量或进程间的同步状态。信号量通常配有等待队列,只能通过 P、V 两个原语访问,以保证操作的原子性。
2.P 操作(wait):P(S)执行时,先将信号量 S 减 1。若 S>=0,进程继续执行;若 S<0,进程阻塞,进入该信号量的等待队列。P 操作表示申请一个资源。
3.V 操作(signal):V(S)执行时,先将信号量 S 加 1。若 S<=0,表示仍有进程在等待,需唤醒等待队列中的一个进程;若 S>0,表示没有等待进程。V 操作表示释放一个资源。
4.信号量解决的问题:主要用于解决进程间的互斥与同步问题。互斥信号量初值通常为1,保证临界区同一时刻只有一个进程进入;同步信号量初值通常为0或某个正整数,用于控制进程执行的先后顺序和资源数量。
5.互斥模型:设互斥信号量 mutex=1,进入临界区前执行 P(mutex),退出临界区后执行 V(mutex)。P 和 V 必须成对出现,且在同一进程内配对。
6.同步模型:设同步信号量 S=0,先执行操作的进程完成后执行 V(S),需要等待的进程在执行前执行 P(S),从而实现“先A后B”的先后顺序。
7.总结:P 操作抓“减1、可能阻塞、申请资源”;V 操作抓“加1、可能唤醒、释放资源”。信号量初值决定其语义:初值1常用于互斥,初值0常用于同步。P、V 是原语,执行不可中断。
易错提醒
P 操作是先减1再判断,不是先判断再减1。S<0 时其绝对值表示等待队列中的进程数。V 操作唤醒的是等待队列中的一个进程,不是全部。互斥信号量初值为1,同步信号量初值不一定为0。P、V 必须成对使用,漏掉 V 可能导致死锁。信号量不能随意在临界区外乱用。
今日小测
设互斥信号量 mutex 的初值为1,两个进程同时进入临界区前都执行 P(mutex),会发生什么?
答案:第一个进程执行 P(mutex) 后 mutex 变为0,可进入临界区;第二个进程再执行 P(mutex) 后 mutex 变为-1,被阻塞,从而保证同一时刻只有一个进程进入临界区。
【28考研辅导课程推荐】:28考研集训课程,VIP领学计划,28考研VIP全科定制套餐(公共课VIP+专业课1对1) , 这些课程中都会配有内部讲义以及辅导书和资料,同时会有教研教辅双师模式对大家进行教学以及督学,并配有24小时答疑和模拟测试等,可直接咨询在线客服老师领取大额优惠券。
热门下载
资料下载
院校解析
真题解析
考研数学
考研英语
考研政治
考研备考