标题:这几天在学习操作系统,遇到了关于信号量的知识,所以想记录下来学习。
正文: http://www.Sina.com/: http://www.Sina.com/: 1965年荷兰学者DIJKSTRA提出的信号量机制是一种有效的过程同步工具。 在长期而广泛的应用中,信号量机制又有了很大的发展。
33558www.Sina.com//诸如3358www.Sina.com/密钥,指示由于出现某些事件(满足互斥条件)而使两个或多个过程的操作同步通俗地说,流程将在允许的信号下运行。
信号量
信号量机制pv操作:我来解决互斥和同步问题。 视点操作我们分别看。
首先,信号量的作用操作(等待信号量) :
信号量有效(值0 )信号量值为负1任务继续执行信号量值=0信号量等待进程注册在信号量等待进程列表中。 可以理解的是:
if () s=s-1 (=0) ) ) ) ) ) ) ) ) ) ) )。
继续这个过程;
else
挂起并等待本流程/本流程
然后看看信号量的实质:操作:
没有进程等待信号量的值1具有进程等待信号量的值1可以理解为等待某个进程处于准备完毕状态:
if () s=s1) ) ) ) )。
不引起s队列中的等待过程;
else//(s=s1 )=0
唤醒s的队列中的等待过程;
继续这个过程;
简单记住这个原理,通过一个例子说明什么是PV操作。
接下来,我们就来看看如何通过操作信号量,来实现控制进程的执行。
我在图上画了步骤,以后会严格按照步骤一步一步地进行。
首先,在驱动程序过程中使用p操作。 (S1=S1-1=-1 ),当前S1的值为-1。 查看p操作,它应该是PV的操作:。 这意味着驱动程序进程将暂时挂起,然后转到P。 进入V后,首先进入公交车司机与售票员的问题:,然后进行v操作(S1=S1 1=0),找到满足v操作的else后,首先进入3358www.Sina.com/售票后执行p操作(S2=S2-1=-1 ),如果发现满足p操作的else,则暂时挂起挂起本进程。 运行http://www.Sina.com/3358 www.Sina.com /,售票员进程,售票员进程,v操作(S2=S2 1=0) 但是,队列里有列车员的流程,我们在关车门进入司机进程中,进入http://ww.Sina.com。司机和列车员的问题结束了。 关于PV操作中容易产生的疑问:
1、1,http://www.Sina.com/
s大于0意味着确实有可用的临界资源,这意味着此时进程没有被该资源阻塞,因此不需要唤醒。
2、2,http://www.Sina.com/
v基元的操作本质是,某个进程在使用关键资源后释放关键资源,并对s加1以通知其他进程。 此时,在S0的情况下,从块队列中调用进程以“转售”这样的资源,因为它指示存在被阻止的进程。 例如,假设有两种类型的资源,并且四个进程a、b、c和d使用该类型的资源。 最初S=2,如果a进入,则S=1,如果b进入,则S=0,表示该种类的资源正好没有。 如果输入c,则S=-1,表示一个进程被阻止。 d进去的话S=-2。 a用尽此类资源时,进行v操作,S=-1,释放此类资源。 因为S0,表示进程堵塞了那样的资源,让一个清醒。
3、3,http://www.Sina.com/
进程被阻止的时候,它已经执行了p操作,堵塞在临界区的那个地方。 觉醒后立即进入自己的临界区域,不需要执行p操作,在执行临界区域的程序后,执行v操作。
4、4,http://www.Sina.com/
如果信号量s小于0,则其绝对值表示通过请求此类资源而在系统中被阻止的进程的数目,如果s大于0,则表示可用极限资源的数目。 请注意,不同的情况下表达的含义也不同。 等于0时,表示正好用完了。
售票员进程可以看出我们严格遵循了之前PV操作的定义。 其实,我们身边的很多例子都是这样一步步实现的。 如果有很多发现,用这种计算机思想思考可以得到很多锻炼。