确保唤醒后CPU时间 – Linux调度程序

我正在linux内核的驱动程序环境中运行 – 该驱动程序将值写入寄存器 – 需要一些时间(〜5毫秒)的操作。 在那段时间我想睡觉,以便将CPU分配给其他线程 – 但是在我醒来之后立即恢复CPU是非常重要的(有一个我不能超过的短暂超时)。 同样的问题需要一个互斥体 – 比如说我阻塞了一个互斥体(并且触发了一个重新计划) – 如何确保当互斥体被释放后立即恢复CPU?

有没有办法做到这一点? 这涉及到什么? (设置进程优先级?特殊调度模式?更改内核configuration?)

编辑:我将重写关于互斥的问题,因为它有点复杂:我有一个重要的线程(重要,因为超时限制)使用的互斥体。 我想采取这个互斥体,知道如果我将阻塞它,并重新安排,锁将被释放很快(因为这些线程将具有高优先级),并立即在此之后,我阻塞的线程将能够运行(而不是其他一些不相关的程序)。 这样我可以节省CPU时间,而不会冒超时违规。 我目前使用繁忙的等待,以避免重新计划(我的内核是非抢先式的),但我不喜欢这个解决scheme。

任何帮助将不胜感激!

谢谢

你说你在写作的时候正在观察延迟。 我想在这种情况下你可以使用schedule_timeout函数。 设备驱动程序在写入注册时使用这种技术,以便它们不锁定系统。 最近,我遇到了写入注册造成延误的问题, 我也schedule_timeout在我的情况下做schedule_timeout

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