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