线程是进程中的单个序列流。线程与进程的属性相同,因此它们被称为轻量级进程。线程一个接一个地执行,但给人一种错觉,好像它们是并行执行的。每个线程都有不同的状态。每条线都有
null
- 程序计数器
- 寄存器组
- 堆叠空间
线程并不是相互独立的,因为它们共享代码、数据、操作系统资源等。
线程和进程之间的相似性–
- 一次只有一个线程或进程处于活动状态
- 在这个过程中,两者都按顺序执行
- 两者都可以创造孩子
线程和进程之间的差异——
- 线程不是独立的,进程是独立的。
- 线程被设计为互相帮助,进程可以这样做,也可以不这样做
线程类型:
- 线程级别(ULT)– 是在用户级库中实现的,它们不是使用系统调用创建的。线程切换不需要调用操作系统,也不需要中断内核。内核不知道用户级线程,并将其作为单线程进程进行管理。
ULT的优势——
- 可以在不支持多线程的操作系统上实现。
- 简单表示,因为线程只有程序计数器、寄存器集和堆栈空间。
- 创建起来很简单,因为没有内核的干预。
- 线程切换很快,因为不需要进行操作系统调用。
- 线程和内核之间没有或很少协调。
- 如果一个线程导致页面错误,整个进程都会阻塞。
- 内核级线程(KLT)– 内核知道并管理线程。内核本身没有每个进程中的线程表,而是有跟踪系统中所有线程的线程表(主线程表)。此外,内核还维护了传统的进程表来跟踪进程。OS内核提供了创建和管理线程的系统调用。
KLT的优势——
- 由于内核对系统中的线程有充分的了解,调度器可能会决定给具有大量线程的进程更多的时间。
- 适用于经常阻塞的应用程序。
- 缓慢而低效。
- 它需要线程控制块,因此是一种开销。
总结:
- 每个ULT都有一个使用线程表跟踪线程的进程。
- 每个KLT都有螺纹表(TCB)和工艺表(PCB)。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END