试阐述信号量及其物理意义.
来源:学生作业帮 编辑:神马作文网作业帮 分类:化学作业 时间:2024/11/13 11:47:31
试阐述信号量及其物理意义.
【分析】信号量是通过定义好的“互斥”的变量元,来实现进程的同步.它不但可以使进程实现互斥访问,而且还能通过信号量本身的数值来反映物理资源数或进程数,以及反映是什么操作.
【分析】信号量是通过定义好的“互斥”的变量元,来实现进程的同步.它不但可以使进程实现互斥访问,而且还能通过信号量本身的数值来反映物理资源数或进程数,以及反映是什么操作.
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操作代表唤醒被挂起进程的操作.
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操作代表唤醒被挂起进程的操作.