对于在MV Linux下运行的应用程序,我有一个必须每10毫秒激活一次的线程。当我使用ulseep / nanosleep / select时,线程每20 ms返回一次。我必须使用哪些内核参数才能改变这种行为? 谢谢, 拉菲
答案 0 :(得分:-1)
Linux不是实时操作系统。无法保证睡眠的精确度。当您调用sleep
时,线程将暂停,并且在请求的持续时间过去之前无法运行。当它再次可运行时,由调度程序在某些执行时间可用时再次运行该线程。
调度事件之间的间隔由内核编译参数CONFIG_HZ
确定。例如,CONFIG_HZ=250
(默认值)时,每1s / 250Hz = 4ms触发调度事件。因此,当你的线程再次运行时,在它实际恢复之前可以经过4毫秒,如果你的线程当时没有最高优先级,则可以再增加4毫秒等等。