操作系统是否挂起被IO阻塞的线程

问题描述 投票:0回答:1

因此,当线程执行昂贵的IO操作时,我了解到它被阻塞了(在IO完成之前将不再处理任何指令)。我想知道的是,是否对操作系统进行了优化,以使其实际上挂起该线程,并且在完成IO操作之前不对其进行调度。

因此,本质上来说,问题是IO上阻塞的线程会继续占用CPU周期而无所作为,还是操作系统会挂起它并在就绪后将其唤醒?

io operating-system blocking suspend
1个回答
0
投票

因此,本质上来说,问题是IO上阻塞的线程会继续占用CPU周期而什么也不做,还是操作系统会挂起它并在就绪后将其唤醒?

[通常,当一个任务被阻塞(等待IO,时间,互斥或...)时,调度程序被告知要执行其他操作,然后切换到另一任务(如果有)或将CPU放入进入某种省电状态(如果没有其他任务);并且调度程序不会给任务分配任何CPU时间,直到它被解除阻止(直到等待的事件发生)或发生异常情况(例如signal取消IO)为止。

我看到的唯一情况是不同的是没有调度程序的单任务操作系统。在这种情况下,没有“阻塞”状态,并且只有唯一的任务正忙着等待。

© www.soinside.com 2019 - 2024. All rights reserved.