第二章 进程同步部分的题目及重点整理

  • 临界区是指进程中访问临界资源的那部分代码
  • 信号量为负值时,绝对值就是阻塞(等待)的进程数
    • 当前信号量大于0,则说明没有进程处于等待状态,且为多少就有多少资源
  • 进程处于临界区允许其他进程抢占(☆)
    • 进程在操作系统内核程序临界区时不能发生调度与切换,原因是内核程序临界区一般是用来访问某种内核数据结构的,如果不尽快释放,有可能导致操作系统内核的其他管理工作
  • 情景类问题,如不同旅行社为为旅客到某航空公司顶机票,机票是临界资源
    • 这里就注意对应关系,一张机票对应的都只能是一个人,而旅行社可以对应不同旅客,航空公司也可以对应不同旅行社
  • 要对并发进程同步的原因是并发进程是异步的
  • 关于PV操作的概念
    • 是低级进程通信原语
    • 不是系统调用
    • 是由两个不可被中断的过程组成,因为分别是P和V所以俩
  • 关于互斥和同步信号量的初值
    • 互斥信号量的初值是1,固定的
    • 同步信号量的初值是由用户决定的
      • 若期望的消息未产生设置为0,若期望的消息已存在,则信号量的初值设置为一个非0的正整数,就像生产者消费者中的缓冲区容量以及数据数
  • 若代码可被多个进程在任意时刻共享,则要求任一个进程在调用此段代码时都以同样的方式运行;而且进程在运行过程中被中断后再继续执行,其执行结果不受影响。这必然要求代码不能被任何进程修改,否则无法满足共享的要求。这样的代码就是可重入代码,也称纯代码,即允许多个进程同时访问的代码。
  • 共享程序段必须用可重入编码编写
  • 注意:管程的signal操作和信号量机制中的V操作不同,V操作会改变信号量的值S=S+1;管程中的signal操作是针对某个条件变量,若不存在因该条件而阻塞的进程,则signal不会产生任何影响
    • 考察的就是条件变量与信号量的区别,条件变量是没有值的,剩余资源数是用共享数据结构记录的
  • 管程是被进程调用的,是语法范围,无法创建和销毁\
  • 关于TSL
    • 当进程退出临界区时置lock为FALSE,会负责唤醒处于就绪态的进程
    • 等待进入临界区的进程会一直停留在执行while(TSL(&lock)的循环中,不会主动放弃CPU.让权等待,即进程不能进入临界区时,应立即释放处理器,防止进程忙等待。并不满足“让权等待”的同步准则while(TSL(&lock))在关中断状态下执行时,若TSL(&lock)一直为true,不再开中断,则系统可能会因此终止
  • 信箱通信是一种间接通信方式