从词源和应用角度解释信号量与信号的区别

1- “同步”的一词多意

1.1 两种制约关系[1]

直接制约关系:流水线生产的各道工序、商品的生产和消费(同步问题 Synchronization)

间接制约关系:两队进行篮球比赛(互斥问题Mutex)

1.2 同步和异步

同步指时间上存在严格的先后关系,即如:信号量发送后,若有某任务在等待接收信号量,则操作系统立即将其从阻塞消息队列转到静态就绪队列。

而异步则是时间上不存在严格的现有关系。即如:信号发送后,接收信号的线程或进程不不会因此而改变状态。而是等到操作系统调度它时,才自己去判断一下是否收到信号了。

2- 词源本意比较

As nouns the difference between signal and semaphore is that signal is an indication given to another person while semaphore is any visual signaling system with flags, lights, or mechanically moving arms.

从单词的本意可以看出,信号量的可以表示的内涵是比信号丰富的。

3- 信号量与信号的区别

1、信号量和信号都是用来表示进程的同步制约关系(直接制约关系)。但信号量实现的是时间上的同步,但信号实现的是时间上的异步。

2、信号量用于业务的往来,比如流水线上,工人被安排的任务在时间上严格的先后顺序,时序安排的不合理的话,生产效率将受到严重的影响。由于流水线上业务的多变性(今天干这一单,明天干另一单)和复杂性,需要有经理或主管来把流水线上每一个人的任务安排好(也就说,信号量需要用户来创建[2],现在我创建一个信号量来同步玩具组装,在另一个地方我可以创建一个信号量来同步汽车组装)。

而信号用于命令的传递的(权利与义务的关系),某种意义上是可穷举的[3],是可以不用用户来创建就存在的。你听过以为君让臣死臣不得不死,但也应该知道将在外军令有所不受(ಡωಡ)[4]。

4- 参考资料

[1] https://www.youtube.com/watch?v=jkRN9zcLH1s

[2]Linux信号量的创建 https://blog.csdn.net/weixin_45719702/article/details/105623767

[3]Linux--信号概念及相关函数用法 https://blog.csdn.net/Meteor_s/article/details/84832142

[4]blog.csdn.net/u011878172/article/details/79510824 https://blog.csdn.net/u011878172/article/details/79510824

[5]Linux系统编程————信号与信号量的区别  https://blog.csdn.net/djh971102/article/details/89609012

[6]信号与信号量的区别 https://www.cnblogs.com/yulibostu/articles/9778636.html

你可能感兴趣的:(操作系统,linux,semaphore,signal)