Operating system 如何使用信号量维护资源完整性

Operating system 如何使用信号量维护资源完整性,operating-system,mutex,semaphore,Operating System,Mutex,Semaphore,我是计算机科学的新手,对你们中的一些人来说可能听起来很愚蠢。虽然我一直在寻找相关的问题,但这个情景一直萦绕在我的脑海中。 我知道互斥锁为节或资源提供了锁定功能。考虑一个缓冲区(一个大小为10的数组)的例子,其中线程在其中放置了一些值。我们在使用互斥锁之前将其锁定,然后在释放互斥锁。整个过程由同一线程完成 现在,如果我必须对信号量进行同样的处理。在这种情况下,我可以限制可以进入临界区的线程数。但是如何保持缓冲区的完整性呢。 (读写操作由缓冲区上的不同线程处理)使用信号量的常见解决方案是允许多个同时

我是计算机科学的新手,对你们中的一些人来说可能听起来很愚蠢。虽然我一直在寻找相关的问题,但这个情景一直萦绕在我的脑海中。 我知道互斥锁为节或资源提供了锁定功能。考虑一个缓冲区(一个大小为10的数组)的例子,其中线程在其中放置了一些值。我们在使用互斥锁之前将其锁定,然后在释放互斥锁。整个过程由同一线程完成

现在,如果我必须对信号量进行同样的处理。在这种情况下,我可以限制可以进入临界区的线程数。但是如何保持缓冲区的完整性呢。
(读写操作由缓冲区上的不同线程处理)

使用信号量的常见解决方案是允许多个同时读卡器或一个写卡器。参见维基百科文章中的示例。

信号量是一种更高的抽象。信号量控制创建进程的能力,并确保创建的实例是不同的,在这种情况下,它将被踢出。简而言之