用户级别和内核级别线程的映射

lau*_*ura 2 multithreading operating-system linux-kernel

在通过操作系统原则时,第7个ED

(Abraham Silberschatz,Peter Baer Galvin,Greg Gagne),我遇到了一个

线程调度部分中的语句.它被赋予 - :

要在CPU上运行,用户级线程最终必须映射到关联的内核级线程,尽管此映射可能是间接的,并且可能使用轻量级进程(LWP).

看这里 声明的前半部分即

要在CPU上运行,用户级线程最终必须映射到关联的内核级别

试图说当执行用户级线程时,它需要内核线程的支持,如系统调用.

但我完全被困在另一半即

虽然这种映射可能是间接的,但可能使用轻量级进程(LWP)

它究竟意味着什么?

请帮帮我!

use*_*003 5

你正在读一本臭名昭着的书.线程以两种方式实现.

在过去的日子里(并且仍然存在于某些操作系统中)只有进程.一个过程由执行流和地址空间组成.

当需要线程支持的语言(例如,Ada-"任务")时,需要创建库来实现线程.这些库使用定时器在进程中的各个线程之间切换.这是穷人的线程.这里的主要缺点是,即使您有多个处理器,进程的所有线程都在同一处理器上运行.线程只是在一个处理器上执行的单个进程中的交叉执行.

这些有时被称为"用户级线程".有些书称之为"多对一模式".

要说

要在CPU上运行,用户级线程最终必须映射到关联的内核级线程

极具误导性.[通常]这个模型中没有内核线程; 只是过程.多个线程在进程中交错运行.要称之为"映射到相关的内核级线程",这是一种误导和过度理论.

这是个笨蛋.

虽然这种映射可能是间接的,但可能使用轻量级进程(LWP)

这里操作系统演进的下一个阶段是操作系统直接支持线程.而不是进程是执行流+地址空间,而是进程成为一个或多个线程+地址空间.操作系统调度线程以执行,而不是调度执行过程.

那些是内核线程.

你的书简单复杂.