对于我的作业,我需要为我的内核模块确定合适的设计模式。由于它修改了内核代码的一个关键区域,因此我不能允许它运行多个实例 - 修改后的代码可以被视为原始代码,并且无法将系统恢复到module_exit的初始状态。考虑到这一点,我选择了单例设计模式等。现在我需要实际实现限制,它伴随着它 - 程序需要保证当时只有一个实例处于活动状态。
这是内核模块的常见做法吗?我还没有看到有人讨论这个问题。如果是这样,我该如何实施限制?
与其说是正在运行的模块的实例数,不如说是多个正在运行的线程正在执行同一模块。
避免冲突的一种方法是"锁定"互斥锁,从而阻止在代码的某些关键部分尝试执行相同代码的所有其他线程,然后"解锁"该互斥锁,从而使另一个线程能够执行相同的代码。