1. 一个进程可以拥有1或多个线程
  2. 线程是CPU调度的最小单位(早期的操作系统进程是最小调度单位)
  3. 线程共享代码段、文件资源、数据段
  4. 线程有各自的寄存器和栈

image.png

线程与进程比较

  1. 进程是资源分配的最小单位。线程是调度的最小单位
  2. 一个进程拥有运行时的全部资源。线程拥只独享必要的资源(寄存器和栈等),其他资源共享。

线程上下文切换

进程的上下文切换的是寄存器和程序计数器等内容。线程也类似,也是将自己的独享的内容进行切换出去并保存下来。具体的切换分为以下两种

  1. 两个不同进程里的线程切换:和两个进程切换一样
  2. 两个同一进程里的线程切换:切换线程的私有数据(寄存器和栈),虚拟内存这样共享的东西无需变动

    线程的三种实现方式

  3. 用户线程:用户空间创建的线程,用户线程库管理

  4. 内核线程:内核中实现的线程,内核管理的线程
  5. 轻量级进程:在内核中来支持用户进程

    用户线程和内核线程关系

  6. 1对1

  7. 1对多
  8. 多对多

用户线程

用户线程对于操作系统是不可见的,用户线程是有用户线程库管理的。操作系统只能看到用户线程所在的进程。
image.png

内核线程

image.png

轻量级进程(LWP)

image.png

  1. 内核支持的用户进程

小结

这三中实现方式把我弄晕了。这块后面再回头看一下。