多核编程指南(八)---共享资源管理

在设备上共享资源时,系统中的所有内核遵循统一的协议至关重要。

信令机制也可以用于一般的资源管理。内核之间可以使用直接信令或原子仲裁。在内核中,可以使用全局标志或操作系统信号量。不建议使用简单的全局标志进行内部仲裁,因为要确保更新是原子性的,会有很大的开销。

Global Flags

全局标志在使用单线程的单核中非常有用。如果有一个资源依赖于正在完成的操作(通常是硬件事件),可以设置和清除一个全局标志,以便进行简单的控制。虽然基于软件结构的全局标志可以在多核环境中使用,但不建议使用。确保跨多个内核正常运行(防止竞争条件、确保所有内核看到全局标志、管理多个内核上的状态变化)所需的开销太高,而使用IPC寄存器或信号量等其他方法效率更高。

OS Semaphores

所有多任务操作系统都支持共享资源仲裁和任务同步。在单个内核上,这本质上是一个由操作系统控制的全局标志,它根据信号量接收到的信号跟踪资源何时被任务拥有,或者线程何时被任务拥有,或者线程合适应该阻止执行或者继续执行。

Hardware Semaphores

只有在内核之间进行仲裁时,才需要硬件信号量。在单核内使用没有任何优势;操作系统使用自己的机制可以有更少的开销。在内核之间进行仲裁时,硬件支持对于确保更新是原子性的至关重要。有一些软件算法可以与共享内存一起使用,但这些算法会不必要地消耗CPU周期

Direct Signaling

与消息传递一样,直接信令可以用于简单的仲裁。如果只有一小部分资源在内核之间共享,可以使用IPC信令。可以遵循协议来允许通知和确认握手传递资源的所有权。KeyStone TCI66XX和C66XX器件具有一组硬件寄存器,可用于有效促进内核间中断、事件/信令和主机间中断以及事件生成和确认。

参考文献:

  1. 《Multicore Programming Guide》

猜你喜欢

转载自blog.csdn.net/Xiao_Jie123/article/details/119963408
今日推荐