Concurrency 关系信号量、互斥、监视器、测试和设置以及消息传递

Concurrency 关系信号量、互斥、监视器、测试和设置以及消息传递,concurrency,operating-system,mutex,semaphore,monitor,Concurrency,Operating System,Mutex,Semaphore,Monitor,我正在为考试而学习,但是教授给我的幻灯片没有多大帮助,我做的任何搜索结果都很模糊。据我所知: 信号量:使用down()和up()操作计数器,在调用down(计数器)时,这些操作会在计数器=0时等待,直到再次执行计数器>0 互斥体:只能由其所属进程/线程释放的二进制信号量 测试并设置:用于检索二进制值并将其原子设置为1的CPU指令;用于实现互斥锁 监视器:强制同步访问的对象,即一次只能有一个进程/线程访问它;可以使用 互斥 消息传递:进程通过一些共享内存位置发送消息,告诉对方何时可以继续工作;这是

我正在为考试而学习,但是教授给我的幻灯片没有多大帮助,我做的任何搜索结果都很模糊。据我所知:

信号量:使用
down()
up()
操作计数器,在调用
down(计数器)
时,这些操作会在
计数器=0
时等待,直到再次执行
计数器>0

互斥体:只能由其所属进程/线程释放的二进制信号量

测试并设置:用于检索二进制值并将其原子设置为1的CPU指令;用于实现互斥锁

监视器:强制同步访问的对象,即一次只能有一个进程/线程访问它;可以使用 互斥

消息传递:进程通过一些共享内存位置发送消息,告诉对方何时可以继续工作;这是一个有效的信号量,它不仅充当计数器,还可用于交换其他数据,即生产者-消费者问题中的某些产品

我有以下问题:

  • 这些定义正确吗
  • 有没有一种方法可以实现没有互斥锁的监视器
  • 有没有一种方法可以不用测试和设置就实现互斥,特别是不用忙着等待
  • 除了实现互斥量,测试和设置还有其他用途吗
  • 不可以。您可能无法在繁忙等待时实现它们,但这绝不是定义的一部分。定义为当信号量可用时,Procure将返回;解放将使信号灯可用。他们如何做到这一点取决于他们。没有其他定义

  • 对。粗略地说,您可以使用{消息传递,互斥,信号量}中的任何一个来实现{消息传递,互斥,信号量}。通过及物性,任何可以用其中任何一个实现的东西,都可以用其他任何一个实现。但是记住,你可以把球踢下海滩。球是像鲸鱼一样的物体;这样你就可以把鲸鱼踢下海滩。这可能有点难

  • 对。询问您最喜欢的搜索和爬行服务,了解dekker及其出色的算法

  • 对。例如,您可以使用test+set和test+clr实现多cpu状态机。图灵机具有惊人的灵活性;像互斥体这样的简单抽象意味着将灵活性限制在可理解的范围内


  • 不,他们不正确。什么搜索建议线程繁忙等待空信号量?