相关疑难解决方法(0)

sleep()背后的算法是什么?

现在有一些我一直想知道的事情:sleep()是如何实现的?

如果只是使用操作系统中的API,那么API是如何制作的?

这一切都归结为在CPU上使用特殊的机器代码吗?那个CPU是否需要一个特殊的协处理器或其他小玩意,没有它你就不能睡觉()?

睡眠()的最着名的化身在C语言中(更准确地说,在C编译器附带的库中,例如GNU的libc),尽管现在几乎每种语言都有它的等价物,但是在某些语言中实现了睡眠(认为Bash)不是我们在这个问题上看到的......

编辑:在阅读了一些答案之后,我看到该进程被置于等待队列中.从那里,我可以猜出两种选择

  1. 设置一个计时器,以便内核在适当的时间唤醒进程,或者
  2. 每当内核被允许一个时间片时,它会轮询时钟以检查是否是时候唤醒一个进程.

答案只提到备选1.因此,我问:这个计时器如何表现?如果这是一个让内核唤醒进程的简单中断,那么内核如何要求定时器"在140毫秒内唤醒我,以便我可以将进程置于运行状态"?

c algorithm sleep

41
推荐指数
7
解决办法
9648
查看次数

标签 统计

algorithm ×1

c ×1

sleep ×1