操作系统中的线程及其类型

线程是进程中的单个序列流。线程与进程的属性相同,因此它们被称为轻量级进程。线程一个接一个地执行,但给人一种错觉,好像它们是并行执行的。每个线程都有不同的状态。每条线都有

null
  1. 程序计数器
  2. 寄存器组
  3. 堆叠空间

线程并不是相互独立的,因为它们共享代码、数据、操作系统资源等。

线程和进程之间的相似性–

  • 一次只有一个线程或进程处于活动状态
  • 在这个过程中,两者都按顺序执行
  • 两者都可以创造孩子

线程和进程之间的差异——

  • 线程不是独立的,进程是独立的。
  • 线程被设计为互相帮助,进程可以这样做,也可以不这样做

线程类型:

  1. 线程级别(ULT)– 是在用户级库中实现的,它们不是使用系统调用创建的。线程切换不需要调用操作系统,也不需要中断内核。内核不知道用户级线程,并将其作为单线程进程进行管理。

    ULT的优势——

    • 可以在不支持多线程的操作系统上实现。
    • 简单表示,因为线程只有程序计数器、寄存器集和堆栈空间。
    • 创建起来很简单,因为没有内核的干预。
    • 线程切换很快,因为不需要进行操作系统调用。
    • 线程和内核之间没有或很少协调。
    • 如果一个线程导致页面错误,整个进程都会阻塞。
  2. 内核级线程(KLT)– 内核知道并管理线程。内核本身没有每个进程中的线程表,而是有跟踪系统中所有线程的线程表(主线程表)。此外,内核还维护了传统的进程表来跟踪进程。OS内核提供了创建和管理线程的系统调用。

    KLT的优势——

    • 由于内核对系统中的线程有充分的了解,调度器可能会决定给具有大量线程的进程更多的时间。
    • 适用于经常阻塞的应用程序。
    • 缓慢而低效。
    • 它需要线程控制块,因此是一种开销。

总结:

  1. 每个ULT都有一个使用线程表跟踪线程的进程。
  2. 每个KLT都有螺纹表(TCB)和工艺表(PCB)。
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享