信号量的物理意义是当信号量值大于零时表示有什么当信号 - 信号量的物理意义是什么

时间:2019-03-01分类:物理

信号量的物理意义是当信号量值大于零时表示有什么当信号

Windows 信号量是计数信号量,可用于控制对资源池的访问。

管理受限资源

线程通过调用 WaitOne 方法来进入信号量,此方法是从 WaitHandle 类派生的。当调用返回时,信号量的计数将减少。当一个线程请求项而计数为零时,该线程会被阻止。当线程通过调用 Release 方法释放信号量时,将允许被阻止的线程进入。针对让被阻止的线程进入信号量,不存在保证的顺序(例如 FIFO 或 LIFO)。

线程可以通过重复调用 WaitOne 方法来多次进入信号量。若要释放信号量,线程可以调用 Release 方法重载相同的次数,也可以调用 Release 方法重载并指定要释放的项数。

信号量和线程标识

Semaphore 类不对向 WaitOne 和 Release 方法发出的调用强制线程标识。例如,信号量的一个常用方案包括一个生产者线程和一个使用者线程,其中一个线程总是增加信号量计数,而另一个线程总是减少信号量计数。

编程人员应负责确保线程释放信号量的次数不会过多。例如,假定信号量的最大计数为二,线程 A 和线程 B 都进入信号量。如果线程 B 中发生了一个编程错误,导致它调用 Release 两次,则两次调用都会成功。这样,信号量的计数就已经达到了最大值,所以,当线程 A 最终调用 Release 时,将引发 SemaphoreFullException。

命名信号量Windows 操作系统允许信号量具有名称。命名信号量在整个系统范围都有效。即,创建命名信号量后,所有进程中的所有线程都是可见的。因此,命名信号量可用于同步进程的活动以及线程的活动。

试阐述信号量及其物理意义

Dijkstra把整型信号量定义为一个整形量,除初始化外,通过两个标准的原子操作(Atomic Operation)wait(s)和signal(s)来访问。这两个操作很长时间以来,一直被分别称为P、v操作。wait和signal操作可描述为: wait(s):while s≤0 do no_op: s:=s-1; signal(s):s:=s+1; wait(s)和signal(s)是两个原子操作,因此,它们在执行时是不可中断的。亦即产生一个进程在修改某信号量时,没有其他进程可同时对该信号量进行修改。此外,在wait操作中,对s值的测试和做s:=s-1操作时,都不可中断。 信号量的物理意义如下:

(1) 若信号量s为正值,则该值等于在封锁进程之前对信号量s可施行的P操作数,亦即等于s所代表的实际使用的物理资源个数。 (2) 若信号量s为负值,则其绝对值等于登记排列在该信号量s队列之中等待进程的个数,亦即恰好等于对信号量s实施P操作而被封锁起来并进入信号量s队列的进程数。 (3) 通常P操作意味着请求一个资源,V操作意味着释放一个资源。在一定条件下,P操作代表挂起进程操作,而V操作代表唤醒被挂起进程的操作。

信号量的物理意义是当信号量值大于零时表示有什么当信号

操作系统中引入线程概念后,既减少了系统的时空开销又增强了系统的什么?

那个问题我回答错了 因该是并发性 而不是并行性

一字之差差好多呢 不好意思哈