利剑出鞘2012 2017-07-14 15:11 采纳率: 0%
浏览 1076
已结题

Linux进程睡眠误差有时特别大?

在PC上,Redhat操作系统,我的进程通过 sched__setscheduler 设置为FIFO调度,优先级指定为1。用nanosleep睡眠,为什么睡眠时间有时误差还是很大(有时误差竟然上毫秒)?如果与调度有关,按理说优先级最高的FIFO进程唤醒后(而且我看Linux内核有进程唤醒时会触发调度)能立即抢占其他进程,不应该存在调度等待啊。
另外一个问题,Linux如果所有进程都采用实时调度策略,这和实时操作系统有何本质区别?
  • 写回答

1条回答 默认 最新

  • flaoter 2017-07-15 13:43
    关注

    FIFO调度,优先级为最高,当nanosleep时还是会让出cpu,发生任务调度。调度器一般有主调度器和周期调度器,周期调度器使用的timer是以HZ为单位的,也就是1/HZ才会发生进程调度,一般情况下HZ为100或更高。因此当nanosleep设定的睡眠时间过后进程重新获得CPU,有1/HZ的误差都是正常的。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?