【发布时间】:2022-01-24 17:54:07
【问题描述】:
这个问题与正在运行的进程执行系统调用有关,以及调度程序如何受到影响。
- 假设我有一个进程当前处于运行状态。
- 它决定需要对内核 API 进行系统调用(例如,访问磁盘)。
- 进程进入阻塞状态。调度程序选择一个挂起的进程并让它运行。
我的问题是 - 如果其他进程现在正在 CPU 上运行,系统调用何时/在哪里执行?还是调度器会等到系统调用完成后再选择运行挂起的进程?
还有一个额外的问题 - 无论你给出什么答案,通用操作系统和 RTOS 都是这种情况,还是后者不同(因为任何 RTOS 调度程序对时间更敏感并实现确定性性能)。
【问题讨论】:
-
'系统调用何时/何地被执行?'好吧,事实并非如此。它不会完成它的执行并返回,直到它准备好/在磁盘硬件的 I/O 完成中断后再次运行。
标签: process operating-system scheduler freertos rtos