我在Linux内核的驱动程序上下文中运行 - 该驱动程序将一个值写入寄存器 - 这个操作需要一些时间(约5毫秒)。我想在这段时间内休眠,以便让CPU让给其他线程 - 但是很重要的是,在我醒来后立即恢复CPU(有一个短暂的超时时间,我不能超过)。
同样的问题也适用于获取互斥锁 - 假设我在互斥锁上阻塞(并触发重新调度) - 如何确保在释放该互斥锁时我能立即获得CPU?
有没有办法做到这一点?这需要什么?(将进程的优先级设置为什么?特殊的调度模式?更改内核配置?)
编辑: 我会重新表述关于互斥锁的问题,因为它有点更加复杂: 我有一个互斥锁,由重要线程使用(由于超时限制而重要)。我想获取此互斥锁,知道如果我在其上阻塞并被重新调度,锁将很快被释放(因为这些线程将具有较高的优先级),然后我的阻塞线程将能够运行(而不是其他无关程序)。 这样我就可以节省CPU时间,同时不会冒超时违规的风险。 我目前使用忙等待来避免重新调度(我的内核是非抢占式的),但我不喜欢这个解决方案。
感谢任何帮助!
同样的问题也适用于获取互斥锁 - 假设我在互斥锁上阻塞(并触发重新调度) - 如何确保在释放该互斥锁时我能立即获得CPU?
有没有办法做到这一点?这需要什么?(将进程的优先级设置为什么?特殊的调度模式?更改内核配置?)
编辑: 我会重新表述关于互斥锁的问题,因为它有点更加复杂: 我有一个互斥锁,由重要线程使用(由于超时限制而重要)。我想获取此互斥锁,知道如果我在其上阻塞并被重新调度,锁将很快被释放(因为这些线程将具有较高的优先级),然后我的阻塞线程将能够运行(而不是其他无关程序)。 这样我就可以节省CPU时间,同时不会冒超时违规的风险。 我目前使用忙等待来避免重新调度(我的内核是非抢占式的),但我不喜欢这个解决方案。
感谢任何帮助!