信号量怎么写

1. 如何用信号量机制描述读者写者问题

设置互斥信号量wmutex 表示写者间、读者和写者间互斥

用readcount变量来记录读者数

Var rmutex,wmutex: semaphore:=1,1 ;

readcount :integer :=0 ;

begin

parbegin

reader:begin

repeat

P(rmutex)

if readcount=0 then P(wmutex);

readcount=readcount+1;

V(rmutex)

read text

P(rmutex)

readcount=readcount+1;

if readcount=0 then V(wmutex);

V(rmutex)

until false

writer:begin

repeat

P(wmutex);

write text;

V(wmutex);

until false

end

parend

end

2. 什么是信号量集

如果读者来:

n1)无读者、写者,新读者可以读

n2)有写者等,但有其它读者正在读,则新读者也可以读

n3)有写者写,新读者等 n

如果写者来:

n1)无读者,新写者可以写

n2)有读者,新写者等待

n3)有其它写者,新写者等待

读者:

while (true) {

P(mutex);

readcount ++;

if (readcount==1)

P (w);

V(mutex);

P(mutex);

readcount --;

if (readcount==0)

V(w);

V(mutex);

};

写者:

while (true) {

P(w);

V(w);

};

3. 什么是信号量集

信号量(Semaphore)-- 相当一个信号灯,程序里是一个非负整数,表示状态. 可以用来保护两个或多个关键代码段,这些关键代码段不能并发调用。

在进入一个关键代码段之前,线程必须获取一个信号量。如果关键代码段中没有任何线程,那么线程会立即进入该框图中的那个部分。

一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。

为了完成这个过程,需要创建一个信号量,然后将Acquire Semaphore 以及Release Semaphore 分别放置在每个关键代码段的首末端。确认这些信号量引用的是初始创建的信号量。

4. 如何写操作系统原理的PV原语操作

从论坛找来一个非常好的帖子,请好好学习一下: 在计算机操作系统中,PV操作是进程管理中的难点。

首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的值减1,即S=S-1; ②如果S?,则该进程继续执行;否则该进程置为等待状态,排入等待队列。 V(S):①将信号量S的值加1,即S=S+1; ②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。

PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。

什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。

当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。

一般来说,信号量S?时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S 利用信号量和PV操作实现进程互斥的一般模型是:进程P1 进程P2 …… 进程Pn …… …… …… P(S); P(S); P(S);临界区; 临界区; 临界区;V(S); V(S); V(S);…… …… …… …… 其中信号量S用于互斥,初值为1。

使用PV操作实现进程互斥时应该注意的是: (1)每个程序中用户实现互斥的P、V操作必须成对出现,先做P操作,进临界区,后做V操作,出临界区。若有多个分支,要认真检查其成对性。

(2)P、V操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短,不能有死循环。(3)互斥信号量的初值一般为1。

利用信号量和PV操作实现进程同步 PV操作是典型的同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生;当信号量的值非0时,表示期望的消息已经存在。

用PV操作实现进程同步时,调用P操作测试消息是否到达,调用V操作发送消息。 使用PV操作实现进程同步时应该注意的是: (1)分析进程间的制约关系,确定信号量种类。

在保持进程间有正确的同步关系情况下,哪个进程先执行,哪些进程后执行,彼此间通过什么资源(信号量)进行协调,从而明确要设置哪些信号量。 (2)信号量的初值与相应资源的数量有关,也与P、V操作在程序代码中出现的位置有关。

(3)同一信号量的P、V操作要成对出现,但它们分别在不同的进程代码中。【例1】生产者-消费者问题 在多道程序环境下,进程同步是一个十分重要又令人感兴趣的问题,而生产者-消费者问题是其中一个有代表性的进程同步问题。

下面我们给出了各种情况下的生产者-消费者问题,深入地分析和透彻地理解这个例子,对于全面解决操作系统内的同步、互斥问题将有很大帮助。(1)一个生产者,一个消费者,公用一个缓冲区。

定义两个同步信号量:empty——表示缓冲区是否为空,初值为1。full——表示缓冲区中是否为满,初值为0。

生产者进程 while(TRUE){ 生产一个产品; P(empty); 产品送往Buffer; V(full); } (2)一个生产者,一个消费者,公用n个环形缓冲区。定义两个同步信号量:empty——表示缓冲区是否为空,初值为n。

full——表示缓冲区中是否为满,初值为0。 设缓冲区的编号为1~n-1,定义两个指针in和out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。

生产者进程 while(TRUE){ 生产一个产品; P(empty); 产品送往buffer(in); in=(in+1)mod n; V(full); } (3)一组生产者,一组消费者,公用n个环形缓冲区 在这个问题中,不仅生产者与消费者之间要同步,而且各个生产者之间、各个消费者之间还必须互斥地访问缓冲区。定义四个信号量:empty——表示缓冲区是否为空,初值为n。

full——表示缓冲区中是否为满,初值为0。mutex1——生产者之间的互斥信号量,初值为1。

mutex2——消费者之间的互斥信号量,初值为1。 设缓冲区的编号为1~n-1,定义两个指针in和out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。

生产者进程 while(TRUE){ 生产一个产品; P(empty); P(mutex1); 产品送往buffer(in); in=(in+1)mod n; V(mutex1); V(full); } 需要注意的是无论在生产者进程中还是在消费者进程中,两个P操作的次序不能颠倒。应先执行同步信号量的P操作,然后再执行互斥信号量的P操作,否则可能造成进程死锁。

【例2】桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。

规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。分析在本题中,爸爸、儿子、女儿共用一个盘子,盘中一次只能放一个水果。

当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是桔子,则允许儿子吃,女儿必须等待;若放入果盘中的是苹果,则允许女儿吃,儿子必须等待。

本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。

解:。

5. 【信号量及PV操作的问题某数据库有一个写进程,多个读进程,它们

设max(i)表示第i个进程的最大资源需求量,need(i)表示第i个进程还需要的资源量,alloc(i)表示第i个进程已分配的资源量。

由题中所给条件可知: max(1)+…+ max(n)=(need(1)+…+need(n))+(alloc(1)+…+alloc(n))如果在这个系统中发生了死锁,那么一方面m个资源应该全部分配出去,即alloc(1)+…+alloc(n)另一方面所有进程将陷入无限等待状态。由上述两式可得:need(1)+…+need(n) 用户 2017-06-03 举报。

6. 说明记录型信号量wait和signal

信号量的定义: 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。

Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。

以一个停车场的运作为例。简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆直接进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入外面的一辆进去,如果又离开两辆,则又可以放入两辆,如此往复。

在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用。

抽象的来讲,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为零时,所有试图通过它的线程都将处于等待状态。在信号量上我们定义两种操作: Wait(等待) 和 Release(释放)。当一个线程调用Wait操作时,它要么得到资源然后将信号量减一,要么一直等下去(指放入阻塞队列),直到信号量大于等于一时。 Release(释放)实际上是在信号量上执行加操作,对应于车辆离开停车场,该操作之所以叫做“释放”是因为释放了由信号量守护的资源。

信号量,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端。确认这些信号量VI引用的是初始创建的信号量。

转载请注明出处育才学习网 » 信号量怎么写

知识

簸顺序怎么写

阅读(171)

本文主要为您介绍簸顺序怎么写,内容包括蜻的笔画顺序怎么写,蜻笔画顺序怎么写,躬笔画顺序怎么写。蜻笔画顺序这样写:如图:

知识

补充题怎么写

阅读(151)

本文主要为您介绍补充题怎么写,内容包括在补充里的题咋写啊有急用,填空补充题是什么意思啊化学的,六年级上册语文补充习题第一课第四大题怎么写。选2 选1 苞 嫩 及 招 琢 息 淡淡的 鲜艳的 密集油亮的 旺盛的 景色 客厅 生命 一生 五六 盛

知识

债主债怎么写

阅读(163)

本文主要为您介绍债主债怎么写,内容包括以前欠的债没写欠条,到现在没还,现在想让债主立张,应该怎么写才,民间借贷借条如何写才有效,怎么写欠条可以让债主五个月以内不可以要账。欠条,本人(债务人)__________________(身份证号:_________________

知识

荣放怎么写

阅读(187)

本文主要为您介绍荣放怎么写,内容包括荣放的英文名字,荣放的英文名字,新车广汽丰田荣放车架号是怎么写的。力争上游,勇往直前。 团结一心,奋发进取。 致长跑运动员 人类的力量在那一刹那展现,拼搏在那一瞬间化为生命的起点,在那一刻万物化为虚

知识

防真句怎么写

阅读(128)

本文主要为您介绍防真句怎么写,内容包括防写句子~~~急急急,怎么防写句子,防写一句话:。防投诉作弊抄袭声明:摘自:http://wenwen.sogou.com/z/q661122679.htm?md=3----------

知识

找比划怎么写

阅读(186)

本文主要为您介绍找比划怎么写,内容包括找笔画顺序怎么写,这个字念什么,怎么找比划,当然我这个字是手写出来的(虏,“必”字的比划怎么写。:“必”字。 有人说找七个人来写“必”,可能会有七种各不相同的笔划顺序来。有人先写左点,卧勾,中点,右点,

知识

怎么写喜羊羊

阅读(223)

本文主要为您介绍怎么写喜羊羊,内容包括怎样写喜羊羊与灰太狼300字的作文,怎样写作文喜羊羊与灰太狼之,写喜羊羊的作文。“老婆,我回来啦”灰太狼说,“看我带来了什么?”。红太狼跑过来问,“难道是羊?”灰太狼沮丧的说:“哪来的羊啊,是青蛙啦。”

知识

行书集怎么写

阅读(152)

本文主要为您介绍行书集怎么写,内容包括行书同怎么写,行书的多字怎么写,怎样写行书行书入门练习教程。行书技法 行书兼具楷书、草书的特点,但又绝非写好楷书便一定能写出一手漂亮 的行书字来,行书作为一种独立的书体,其发展过程中具有它自身的

知识

小猪该怎么写

阅读(195)

本文主要为您介绍小猪该怎么写,内容包括一只有趣的小猪作文400字怎么写,2016三年级第一学期作文小猪学样怎么写,小学二年级如何写小猪和山羊的童话故事。一提起这件事情,我就想笑,我居然让猪追得到处跑,哈哈,真有趣啊。那是去年暑假的事情,我乘

知识

似信怎么写

阅读(169)

本文主要为您介绍似信怎么写,内容包括小学五年级语文上册第17课的小练笔怎么写,语文书五年级上17课的小练笔怎么写,用似信非信造句。阿曼达,你爸爸真的会来救你,救我们吗?”同学们失落地望着阿曼达。“会的,一定会的,再等等,可能他们正在挖掘,大家

知识

泪声声怎么写

阅读(167)

本文主要为您介绍泪声声怎么写,内容包括鹤泪声声什么意思,对联:青山悲吟声声泪,声声呼严父碧水笑诉字字血,字字哭慈母,鹤泪声声猜一动物(说明原理谢谢)。《喜泪》 今天,真是让我终生难忘的日子--我当上小记者。 早上,被老师叫去。我的心情忐忑

知识

千万是怎么写

阅读(183)

本文主要为您介绍千万是怎么写,内容包括一千万用数字怎么写啊,千万大写怎么写,这样的数字应该怎么写啊最好再举几个例子还有4561234,如果是。10000000。写数法则从高位起,按照数位顺序写。2、几千就在千位上写几,几百就在百位上写几,几十就在

知识

小熊体怎么写

阅读(176)

本文主要为您介绍小熊体怎么写,内容包括小熊字体怎么用,可爱的小熊怎么写,小熊的熊怎样写。在一个风和日丽的早上,小熊生病了。小熊孤独的躺在医院的病床上。它看着窗外,心里想:如果我能出外面玩该多好呀。这时,门铃响了。小鹿、小白兔

知识

灯灯灯怎么写

阅读(182)

本文主要为您介绍灯灯灯怎么写,内容包括灯在田字格怎么写,作文灯亮了怎么写,关于写一篇灯的作文灯,你并不陌生.街灯、霓虹灯、红绿灯、航标灯。我确信是这样的:每个人都有对前路感到茫然的时刻,周遭骤而变得晦暗灰沉,人就畏缩起来,迟疑着不敢踏

[/e:loop]