睡眠系统调用如何工作?

睡眠系统调用如何工作?

一个进程可能会要求操作系统将其暂停 0.5 秒,但是它如何工作呢?

由于其他程序同时运行,CPU 不会简单地停止运行那 0.5 秒,那么我们如何暂停运行应用程序一段时间呢?

答案1

在多任务操作系统中,操作系统不必采取任何极端措施,例如完全停止处理器运行或用其他指令填充该进程将要使用的时间。它可以做一些非常简单的事情。它可以根本不安排要运行的任务。

这就是多任务操作系统的全部意义所在。如果多个任务都需要同时运行,那么操作系统会将一个任务换到处理器上,让它运行一段时间,然后再换下一个任务,并继续运行,直到所有需要运行的任务都完成了它们的工作。

当一个任务发出信号表示它想要休眠一段时间或等待键盘按下时,它实际上是在告诉操作系统don't bother swapping me onto the processor unless time X has passed 或者 don't bother running me unless you have event X waiting for me to action it

基本上,操作系统有一长串需要运行的任务,每个任务都有一个“等待事件”描述符。任何准备运行的任务都可以安排,任何尚未准备好的任务将被跳过,就这么简单。

如果确实有在特定的时间片内,处理器上所有任务都运行,然后操作系统会安排一个“闲置的“任务实际上HALTCPU 并告诉它不要执行指令,直到它被唤醒(通常是通过某种中断)。使用这种安排时间“不做任何工作”的方法也非常适合多任务操作系统的范例。

为了再次唤醒,CPU 通过 RTC(实时时钟)获取中断“滴答”,另外还可以设置高压聚酯(高精度事件计时器)以特定时间间隔触发中断。这允许操作系统在非常精确的时间内暂停 CPU,然后将 CPU 从睡眠状态唤醒,再次开始处理任务。

相关内容