是一个POSIX 上下文切换定义明确?这和C中切换线程是一样的吗? C 编译器是否可以生成上下文切换的所有内容,或者切换线程或切换“上下文”的例程是否仍然需要汇编编程?是否甚至定义了“上下文”的含义 - 它不是与线程相同吗?
答案1
POSIX 使用术语上下文切换至少用于两个不同的目的,而不试图严格定义它(甚至提供定义):
- 之间切换线程, 和
- 之间切换流程
相反,POSIX 假设您已经知道该术语的含义。例如,
执行进程或线程所花费的时间,包括代表该进程或线程执行系统服务所花费的时间。如果支持 Threads 选项,则进程的 CPU 时间时钟的值是实现定义的。根据此定义,进程中所有线程的所有执行时间之和可能不等于进程执行时间,即使在单线程进程中也是如此,因为实现可能会因在执行期间如何计算时间而有所不同。上下文切换或出于其他原因。
进一步阅读:
- 线程上下文切换与进程上下文切换
- 系统调用和上下文切换
- 硬件中断造成的上下文切换开销(以及无所事事循环的谜团), 丹·查弗里尔
- C 编程内核的经过验证的进程上下文切换、斯塔罗斯汀和齐班