现在,有一件事我一直想知道:Slear()是如何实现的?
如果这一切都是关于使用操作系统的API,那么API是如何制作的?
这一切都归结为在CPU上使用特殊的机器代码吗?CPU是否需要一个特殊的协处理器或其他小发明,如果没有它,你就无法进行睡眠()?
sleep()最著名的体现是在C语言中(更准确地说,是在C编译器附带的库中,比如GNU的libc),尽管现在几乎每一种语言都有它的类似功能,但在某些语言中实现sleep(想想Bash)并不是我们在这个问题中要看的...
编辑:在阅读了一些答案后,我看到流程被放在等待队列中.从那里,我也可以猜到两种 Select
- 设置计时器,以便内核在适当的时间唤醒进程,或者
- 每当内核被允许使用时间片时,它都会轮询时钟以判断是否到了唤醒进程的时间.
答案只提到了备选方案1.因此,我问:这个计时器的行为如何?如果只是一个简单的中断让内核唤醒进程,内核怎么能要求计时器"在140毫秒内唤醒我,这样我就可以让进程处于运行状态"?