为什么内核线程在进程上下文中运行?

dtm*_*and 2 multithreading process linux-kernel

我最近了解到Linux内核线程在进程上下文中运行.

为什么它们在流程上下文中运行?

为什么他们不是简单地在传统的"线程"中运行?(如果这甚至有意义的话)

Eli*_*nti 9

不问问:)没有意义(见这里)

进程上下文仅表示线程是普通线程,例如您在进程中获得的线程.中断上下文仅表示线程是由中断启动的.

警告:以下是高度简化的,并不完全准确:

中断是低级别事件,导致CPU停止正在执行的操作并执行称为中断处理程序的特殊代码(对中断处理程序执行上下文更改).中断是由硬件引起的,例如网络信号表示数据包已到达并需要被读取,或者由软件事件引起,例如虚拟内存使用中断来请求内核从磁盘物理内存加载页面等.

在现代CPU中,中断和线程非常复杂,它们具有优先级,权限级别,可以单独屏蔽等.

为什么它被称为进程上下文而不是线程上下文?我认为这是出于历史原因.

传统上,Unix和扩展Linux不支持仅线程进程.

CPU并不真正了解进程和线程,从CPU的角度来看,它们都是执行上下文,线程和进程之间的差异是操作系统如何安排虚拟内存和其他操作系统相关属性(用户上下文)的函数. ,权限等)不同的执行上下文.