MST
星途 面试题库

面试题:进程管理之信号量基础同步应用

假设有两个进程A和B,进程A需要先执行一段计算任务,然后进程B才能开始读取进程A的计算结果进行后续处理。请使用信号量机制来实现这两个进程之间的同步,描述具体思路并给出伪代码。
23.9万 热度难度
操作系统进程管理

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 创建一个信号量,初始值为0。
  2. 进程A执行计算任务,计算完成后,通过信号量的V操作(释放信号量)通知进程B。
  3. 进程B在开始读取数据前,通过信号量的P操作(获取信号量)等待进程A的通知,只有获取到信号量后,进程B才能读取进程A的计算结果并进行后续处理。

伪代码

// 定义信号量,初始值为0
Semaphore semaphore = 0; 

// 进程A
Process A() {
    // 执行计算任务
    performCalculation(); 
    // 计算完成,释放信号量通知进程B
    V(semaphore); 
}

// 进程B
Process B() {
    // 获取信号量,等待进程A的通知
    P(semaphore); 
    // 读取进程A的计算结果并进行后续处理
    readAndProcessResult(); 
}

在上述伪代码中,P操作表示获取信号量(若信号量值为0则阻塞等待),V操作表示释放信号量(将信号量值加1)。performCalculation函数代表进程A执行的计算任务,readAndProcessResult函数代表进程B读取进程A的结果并进行处理的操作。具体实现时,需根据不同操作系统和编程语言使用对应的信号量API来替换PV操作。