唤醒后保证CPU时间- Linux调度程序

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

1
你说在写作时遇到了延迟。在这种情况下,我认为你可以使用schedule_timeout函数。设备驱动程序在向寄存器写入数据时使用此技术,以免锁定系统。最近,我遇到了一个问题,写入寄存器会导致延迟; 我打算在我的情况下也使用schedule_timeout

设置优先级、调度模式在这里没有帮助。


非常感谢!我一定会去看看。你对互斥锁的情况有什么建议吗?(在释放锁时立即获取CPU?) - kernelony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接