Semaphore和Mutex之间的区别

Semaphore和Mutex之间的区别

在操作系统中, semaphoremutex 是两种用于提供同步服务的内核资源。一个semaphore是一个整数变量,而一个mutex是一个对象。阅读这篇文章,了解更多关于semaphore和mutex的信息,以及它们之间的区别。

什么是semaphore

Semaphore 是一种信号机制。它基本上是一个整数变量。一个semaphore使用两种操作,即 等待信号 来实现进程同步。因此,等待和信号操作可以修改semaphore。有两种类型的信号灯,即 计数信号灯二进制信号灯。

计数信号(Counting Semaphore)是一种具有整数值和不受限制的值域的信号类型。计数信号主要用于资源访问的协调,其中信号的计数是可用资源的数量。

另一方面,二进制信号灯与计数信号灯类似,但是它的值被限制为0和1。因此,二进制信号灯的等待操作只有在信号灯为1时才有效,而信号操作在信号灯值为0时才有效。

什么是Mutex

Mutex 是一种锁定机制。它基本上是一个相互排斥的对象,可以同步资源的访问。Mutex在程序开始时被定义为一个唯一的名字。

一个Mutex可以确保多个程序线程不能同时获得Mutex。一个程序线程只有在退出关键部分时才会释放Mutex。因此,当Mutex被锁定时,进程被保留在队列中,只有在Mutex被解锁后才能被访问。

现在,让我们详细讨论一下semaphore和mutex之间的区别。

semaphore和互斥的区别

下表强调了semaphore和mutex之间的所有重要区别。

S.No. semaphore mutex
1. 它是一种信号机制。 它是一种锁定机制。
2. 它是一个整数变量。 它是一个对象。
3. 可以使用 “等待 “和 “信号 “操作来修改信号灯。 它是由请求或释放资源的那个进程(仅)修改的。
4. 4.该进程将不得不 “等待”,直到semaphore的计数高于0。 如果mutex被锁定,那么该进程将不得不等待。
5. 如果没有可用的资源,进程要求需要执行的资源必须’等待’。 当mutex被锁定时,该进程被保留在一个队列中。只有在mutex被解锁后才能被访问。
6. 多个程序线程可以用一个信号灯来使用。 多个程序线程可以在mutex中使用(但不能同时使用)。
7. 7.semaphore的值可以被任何释放或获取资源的进程改变。 对象上的锁只能由获得该锁的进程来释放。
8. 有不同种类的信号灯。计数信号和二进制信号。 它没有任何子类型。
9. 9. 信号的值可以通过 “等待 “操作和 “信号 “操作来改变。 该对象要么被锁定,要么被解锁。
10. 10.如果所有的资源都被使用,进程就被占用。 如果该对象已经被锁定,那么请求资源的进程将等待。
11. 请求资源的进程使用 “等待 “操作,并阻止自己,直到semaphore的计数大于1。 在锁被释放之前,它将被系统排队。

结论

在这里你应该注意到的最重要的区别是,信号灯是一种信号机制,而突变体是一种锁定机制。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程