两个线程共享一个临界资源,使用互斥信号量(mutex semaphore)进行同步控制。若此时互斥信号量的值为 -1,则说明(__)。
互斥信号量是操作系统中协调多线程或进程共享临界资源访问的关键机制,初始值通常与可用临界资源数量对应,比如单个临界资源对应的互斥信号量初始值设为1。它依靠P(wait)和V(signal)两种核心操作实现管控:执行P操作时信号量值减1,若结果小于0,当前线程或进程需进入等待队列;执行V操作时信号量值加1,若结果小于等于0,需唤醒等待队列中的一个线程或进程。信号量的数值有明确状态指示:值大于0代表当前可用临界资源数量;等于0表示无可用资源且无等待线程/进程;小于0时,其绝对值就是正在等待该临界资源的线程/进程数量。除互斥场景外,信号量还可实现线程间同步协作,应对更复杂并发需求,核心是避免竞态条件,保障共享资源访问的安全与有序。
本题考察的是信号量(Semaphore)机制中互斥信号量的工作原理。
在操作系统并发控制中,信号量(Semaphore) 用于协调多个进程或线程对共享资源的访问,防止出现“临界区冲突”。信号量初始值和临界资源数量有关,一个临界资源,信号量初始为 1,表示只有 1 个资源可用。依次类推,两个临界资源,信号量初始为2,表示只有2个资源可用。
另外信号量基本操作为:
P(wait)操作:S = S - 1,若结果 < 0,则表示资源不可用,当前线程需等待。
V(signal)操作:S = S + 1,若结果 ≤ 0,则唤醒等待队列中的一个线程。
那么,在此题中,信号量S初始值为 1,若只被一个资源占用,那么此时信号量就是 1-1= 0。若还有一个进程来请求,此时信号量就为 S(0) - 1 = -1 。和题意相符。
说明,此时 有 1 个线程正在等待资源, 有 1 个线程已占用资源。
因此,一个线程正在临界区,另一个线程在等待进入。
因此,正确答案为 C。
