【问题标题】:What is a Hardware Semaphore?什么是硬件信号量?
【发布时间】:2011-07-15 02:13:55
【问题描述】:

如果它是硬件信号量,如何从软件中使用它?是不是有一个软件API实际上是在HW中实现的?

我在实现固件以与某些硬件接口时询问。硬件和固件之间会有很多信息交换。我在头顶谈论硬件信号量,只是想了解更多关于它的信息。一些关于这方面的文献会有所帮助

【问题讨论】:

    标签: terminology ipc semaphore interprocess


    【解决方案1】:

    你大部分是正确的。有一个 SW API 需要一些特殊的硬件才能正常工作。软件中信号量的实现,其中有少数,都是基于某种保证是原子的硬件指令。

    实现信号量需要硬件中的原子性。通常硬件指令不是原子的。

    为了详细说明,您需要通过读取和写入一块对多个处理器可见的共享内存来实现信号量。读取和写入该共享内存通常不是原子操作:例如,如果您先读取然后写入,则可能会在读取和写入之间安排其他指令。

    【讨论】:

    • 嗨,我认为很多时候我们可以避免硬件互斥锁。例如,如果处理器 A 仅写入处理器 B 仅从中读取的共享内存字,则无需使用互斥锁,因为内存字读/写访问也是原子的。你怎么看?
    • @ransh 要正确实现同步原语,您需要在单个原子块中组合读取和写入。单次写入或读取将是原子的,但像递增和递减这样结合了读取和写入的东西通常不是。
    【解决方案2】:

    在操作的第二部分(即写入)发生之前,硬件需要确保总线被锁定以防止其他主机访问资源。通常这是在硬件的仲裁阶段完成的。

    【讨论】:

      【解决方案3】:

      在具有至少两个处理器的计算机系统中,每个处理器具有相关联的存储器,处理器通过接口单元借助总线彼此耦合,公开了用于调节对共享资源的访问的硬件信号量。每个信号量都是一位宽,可以写入以获得所需的状态。读取信号量时,如果内容为 1,则返回 1。如果内容为零,则返回零,但信号量会自动重置为一。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 2010-10-20
        • 1970-01-01
        • 2016-03-01
        • 1970-01-01
        • 2012-03-14
        相关资源
        最近更新 更多