1 / 51
文档名称:

数字电路课件.ppt

格式:ppt   大小:479KB   页数:51页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数字电路课件.ppt

上传人:文库旗舰店 2018/6/28 文件大小:479 KB

下载得到文件列表

数字电路课件.ppt

相关文档

文档介绍

文档介绍:信号量
信号量(灯)的概念是由Dijkstra提出的(1965),是一种解决进程同步、互斥问题的更通用的工具。
他把互斥的关键概念抽象到信号量(灯)这个概念中,信号量(灯)是一个被保护的变量,只有P操作、V操作和一种称为信号量(灯)初始化操作才能访问和改变它的值。
信号量

P操作最初源于荷兰语proberen,表示测试;V操作源于荷兰语verhogen,表示增加。
有些书上将P操作称做wait或者DOWN操作,将V操作称做signal或者UP操作。
P和V操作都是原语
信号量

结构型信号量一般是由两个成员组成的数据结构。其中一个成员是整型变量,表示该信号量的值;另一个是指向PCB的指针。
typedef struct{
int value;
struct PCB *list;
} semaphore;
信号量
信号量的值与相应资源的使用情况有关
信号量的一般结构及PCB队列
对信号量的操作有如下严格限制:
1. 信号量可以赋初值,且初值为非负数。
2. 信号量的值可以修改,但只能由P和V操作来访问。
信号量
P操作的定义如下:
void P(semaphore S)
{
--;
if(<0)
{
;
block( );
}
}
信号量
V操作的定义如下:
void V(semaphore S)
{
++;
if(<=0)
{
;
wakeup(Q);
}
}
在具体实现时应注意,P, V操作都应作为一个整体实施,不允许分割或相互穿插执行。
信号量的定义:
信号量是一个确定的二元组(s,q),s 是一个具有非负初值的整型变量,q是一个初始状态为空的排队站。
S代表资源的实体。在实际应用中应准确地说明s的意义和初值,每个信号量都有一个队列,其初始状态为空。
信号量
P操作:
(1)s值减1;
(2)若相减结果大于等于0,则进程继续执行;
(3)若结果小于0,则
该进程挂起。
注:挂起该进程包括:保留调用进程CPU现场;置“等待”状态;入等待队列;转进程调度;
信号量
V操作:
(1)s值加1;
(2)若相加结果大于0,进程继续执行;
(3)否则,唤醒一个(或多个)等待该信号灯的进程,然后本进程继续执行。
信号量
信号量的一般应用


用两个进程共享打印机的例子
设信号量print表示打印机,初值为1,
表示打印机可用(也可理解为有一台打印机)。
(print也是用于互斥的信号量,一般设置为mutex。)