用户级线程和内核级线程的区别
S. No. | Parameters | User Level Thread | Kernel Level Thread |
---|---|---|---|
1. | 实现方式 | 用户线程由用户实现。 | 内核线程由OS(OS)实现。 |
2. | 识别 | 操作系统不识别用户级线程。 | 内核线程由操作系统识别。 |
3. | 实现 | 用户线程的实现很简单。 | 内核线程的实现是复杂的。 |
4. | 上下文切换时间 | 上下文切换时间更短。 | 上下文切换时间更多。 |
5. | 硬件支持 | 背景信息交换机不需要硬件支持。 | 需要硬件支持。 |
6. | 阻塞操作 | 如果一个用户级线程执行阻塞操作,那么整个进程将被阻塞。 | 如果一个内核线程执行阻塞操作,那么另一个线程可以继续执行。 |
7. | 多线程 | 多线程应用程序不能利用多处理。 | 内核可以是多线程的。 |
8. | 创建和管理 | 可以更快地创建和管理用户级线程。 | 创建和管理内核级线程需要更多的时间。 |
9. | 操作系统 | 任何操作系统都可以支持用户级线程。 | 内核级线程是特定于操作系统的。 |
10. | 线程管理 | 线程库包含线程创建、消息传递、线程调度、数据传输和线程销毁的代码 | 应用程序代码不包含线程管理代码。它只是内核模式的一个API。Windows操作系统利用了这个特性。 |
11. | 例子 | 例如:Java线程,POSIX线程。 | 例如:窗口Solaris。 |
12. | 优势 | 用户级线程的创建简单而快速。 可以在任何操作系统上运行 它们比内核线程性能更好,因为它们不需要通过系统调用来创建线程。 在用户级线程中,线程之间的切换不需要内核模式特权。 |
在内核级线程中,可以调度属于不同处理器上相同进程的多个线程。 多线程可以用于内核例程。 当内核级的一个线程停止时,内核可以为同一进程调度另一个线程。 |
13. | 缺点 | 在用户级线程上的多线程应用程序不能从多处理中获益。 如果单个用户级线程执行阻塞操作,则整个进程将停止。 |
将进程内的控制从一个线程转移到另一个线程需要切换到内核模式。 创建和管理内核级线程要比用户级线程花费更多的时间。 |