用户级线程
用户级线程就是由应用程序所支持的线程实现。用户级线程对用户不透明(用户看得到),而对操作系统透明(操作系统看不到)。这是它最重要的特点。
在只有用户级线程的系统内,时间片分配以进程为单位。
内核级线程
内核级线程的管理工作由操作系统内核完成。可以这样理解:内核级线程就是从操作系统内核视角能看到的线程(看不到用户级线程)。
二者建立映射的原因
首先,用户级线程和内核级线程能够建立映射的条件是:系统要同时支持用户级线程和内核级线程。
书本上对于为何二者要建立映射的原因没有进行探讨。实际上,探索这背后的原因之前我们要明确一个概念,即:
只有内核级线程才是处理机分配的单位
我们这样考虑:用户级线程本身只是一堆数据用户程序,位于用户空间。内核级线程是系统中“真正”的线程,因此对于用户级线程来说,用户程序运行用户级线程,必须要通过映射到内核级线程后,在内核级线程上运行它。
如图所示,线程库调度器从某进程的多个用户级线程中选择一个线程,然后该线程和该进程允许的一个内核线程关联起来。内核线程将被操作系统调度器指派到处理器内核。