操作系统-PV操作(含前驱图处理方法)

时间:2024-03-15 13:36:07

操作系统-PV操作

WHAT?

操作系统中的一种同步机制,实现对于并发进程临界区的管理

并发进程

  1. 无交互并发进程:每个进程独立,无需PV操作
  2. 有交互并发进程:多个进程共享资源,需控制进程次序,防止进程因资源被占用而阻塞

临界区

并发进程中与共享变量有关的程序段称为临界区

P操作

申请资源

V操作

释放资源

信号量S

用来记录资源数量,作为判断是否满足P操作的条件

如S=1,表示可用资源数量为1

HOW?

来看一道题目

操作系统-PV操作(含前驱图处理方法)

破题

  • S1-S4初始值都为0

  • 将信号量看作互斥量,如果想要某个结点停止运行,对之结点进行P操作,S就会减少相应数量,一旦S小于0(记住S初值=0),进程被压入阻塞队列

  • 如果完成了某个结点的任务,把它连向的结点进行V操作释放资源,等效于**了下一个其他结点的工作

  • 前驱图:想要执行P2,必须先执行P1 / 想要执行P3,必须先执行P1P2

  • 解题过程:一个进程A引出某些信号量,则在进程A末尾对这些信号量做释放(V

    ​ 信号量指向某进程B,则在B进程开-始位置对这些信号量进行申请(P)

具体解题细节

  1. P1结点入度0(无指向它的边)—>为了此结点后续结点能运行,通过此结点的必然是V释放操作---->AB选项排除,P1操作完毕—>P1入阻塞队列—>后续执行P申请操作–>选C

  2. 发现执行完P2之后有个V(S3)操作,故P2指出的边S肯定为S3

  3. 四定三则第四条边带的信号量可推—>S4

  4. 分类讨论

    • 情况1:P1指向P2的边信号量为S1,P1指向P3的边的信号量为S2

      操作系统-PV操作(含前驱图处理方法)

      ​ 推导:

      ​ 执行P3之前,操作应该为P(S3)P(S2)—>选项BD确定+执行P4前肯定要申请P(S4)---->B确定

    • 情况2:P1指向P2的边信号量为S2,P1指向P3的边的信号量为S2

      操作系统-PV操作(含前驱图处理方法)

      ​ 推导:

      执行P3前,操作应该为P(S1)P(S3)无此选项—>故为情况1