【发布时间】:2015-08-12 15:17:56
【问题描述】:
我正在阅读 Galvin 的操作系统概念。那里说用户级线程和内核级之间必须存在某种关系,然后他们解释了广泛使用的各种关系。但他们没有明确提到什么是“关联”。 从他们使用该术语的上下文来看,我猜想一组线程可以进行的并发系统调用数量(可能都属于特定进程)。我的猜测正确吗? 通过将用户级线程与内核级线程相关联,我们将实现什么目标?
【问题讨论】:
标签: multithreading process scheduling
我正在阅读 Galvin 的操作系统概念。那里说用户级线程和内核级之间必须存在某种关系,然后他们解释了广泛使用的各种关系。但他们没有明确提到什么是“关联”。 从他们使用该术语的上下文来看,我猜想一组线程可以进行的并发系统调用数量(可能都属于特定进程)。我的猜测正确吗? 通过将用户级线程与内核级线程相关联,我们将实现什么目标?
【问题讨论】:
标签: multithreading process scheduling
您是指“线程”一章中的“多线程模型”部分吗?
如果是这样,那么很快就会解释清楚:
线程要么由操作系统(内核)管理,要么由非内核进程模拟。今天,(本机)程序中的一个线程恰好对应一个内核管理的线程。这些线程是操作系统已知的,可以由操作系统的调度程序根据需要进行调度。
一些程序选择自己实现类似线程的功能。其中一个突出的例子是 Python 解释器:虽然 Python 语言提供了对多线程的支持,但解释器只会在单个操作系统/内核线程上运行,并且会注意在不同 Python 线程本身的代码之间切换执行;这就是“多对一”映射:多个 Python 线程在单个 OS 线程上运行。 Java VM 的早期版本进行了类似的仿真,但我似乎不记得是“多对一”还是“多对多”样式。
【讨论】: