线程是一种轻量级进程,类似于每个进程可以具有一个或多个线程的进程。每个线程包含一个堆栈和一个线程控制块。有四种基本线程模型:
1.用户级别单线程模型:
- 每个进程包含一个线程。
- 单进程本身就是一个线程。
- 进程表包含通过维护其PCB的每个进程的条目。
2.用户级多线程模型:
- 每个进程包含多个线程。
- 进程的所有线程由线程库在用户级别安排。
- 线程切换可以比进程切换更快地完成。
- 线程切换独立于操作系统,可以通过一个进程来完成。
- 阻塞一个线程会阻塞整个进程。
- 线程表维护进程的每个线程的线程控制块。
- 线程调度发生在进程内,内核不知道。
3.内核级单线程模型:
- 每个进程包含一个线程。
- 这里使用的线程是内核级线程。
- 进程表用作线程表。
4.内核级多线程模型:
- 线程调度是在内核级别完成的。
- 细粒度调度是在线程基础上完成的。
- 如果一个线程阻塞,则可以调度另一个线程而不会阻塞整个过程。
- 与用户级线程调度相比,内核进程中的线程调度要慢。
- 线程切换涉及切换。