【发布时间】:2018-11-05 00:53:55
【问题描述】:
我的理解是硬件架构和操作系统的设计目的是不阻塞 cpu。当需要发生任何类型的阻塞操作时,操作系统会注册一个中断并继续执行其他操作,以确保始终有效地使用 cpu 的宝贵时间。
这让我想知道为什么大多数编程语言都设计有阻塞 API,但最重要的是,由于操作系统在 IO 方面以异步方式工作,注册中断并在稍后准备好结果时处理,我我真的很困惑我们的编程语言 API 如何摆脱这种异步。操作系统如何使用阻塞 API 为我们的编程语言提供同步系统调用?
这种同步性从何而来?当然不是在硬件层面。那么,在触发一些中断之前,我不知道旋转和旋转的地方是否存在无限循环?
【问题讨论】:
-
Re,“旋转和旋转直到出现一些中断” 大多数 CPU 都有一条指令可以暂停处理器直到下一次中断。在操作系统的“空闲循环”中使用该指令可以显着减少未满载的系统使用的电量/产生的热量。
-
@Edwin Dalorzo “我们的编程语言 API 如何摆脱这种异步” 你说的逃避是什么意思?
-
@mightyWOZ 操作系统如何为本质上是异步的东西提供同步系统调用?此类系统调用的“阻塞”性质的实际来源在哪里?
-
@EdwinDalorzo 再问一个问题。您认为同步系统调用会立即提供服务而没有任何延迟吗?
-
@mightyWOZ 不,我没有。
标签: multithreading operating-system multiprocessing scheduling multitasking