在整型信号量机制中,信号量被定义为一个整形变量。除初始化外,仅能通过两个标准的原子操作Wait(S)和Signal(S)来访问。其通常分别被称为P、V操作。
描述如下:
P操作:S=S-1;如果S小于0,则进程进入等待状态,否则继续执行。
V操作:S=S+1;如果S>=0,则唤醒等待队列中的一个等待进程。
信号量有其自身的物理含义:当S>0时,其值表示要管理的某类资源的数量;当S<0时,它的绝对值表示在相关队列中等待的进程个数。
进程的同步
一般来说,一个进程相对与另一个进程的运行速度是不确定的,也就是说,进程是在异步环境下运行的,每个进程都以各自独立的、不可预知的速度向前推进。但是,相互合作的进程需要在某些确定的点上协调他们的工作,当一个进程到达了这些点后,除非另一个进程已经完成了某些操作,否则就不得不停下来等待这些操作结束。这就是进程的同步。
进程的互斥
在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,这种资源称为临界资源。
对临界区的管理原则:有空则进,无空则等,有限等待,让权等待。
进程互斥的情况,信号量初值是1;而同步的情况,信号量初值是0.
在解决具体问题时,面对各种并发进程,首先应该分析它们之间哪些是互斥关系,哪些是同步关系,由此而确定应该设置哪些信号量及它们的初值。
如果所设置的信号量,每个相关进程即对它施行P操作,也对它施行V操作,则称其为共用信号量。用于互斥的都是公用信号量。
若设置的信号量,只有一个进程能对它施行P操作,其他进程只能对它施行V操作,则称其为那一个进程的私用信号量。用于同步或资源分配管理的信号量都是私用信号量。
时间: 2024-12-22 08:02:06