用户态线程和内核态线程

342 阅读1分钟

用户态

用户空间的代码只能使用局部的一个内存空间。

内核态

内核空间的代码可以使用所有的内存。

系统调用过程

image.png

用户态线程

优点

创建,销毁,调度不需要和系统打交道,开销成本低。

缺点

  1. 与内核线程协作频繁切换内核态和用户态。(IO操作)
  2. 内核态线程之间协作,有时需要内核线程辅助。(IO操作)
  3. 无法充分利用多核实现高并发。一个应用进程一次只能执行
  4. 线程一旦阻塞,无法自动切换其他线程。

内核态线程

优点

  1. 充分利用多核优势。
  2. 系统调度,一个线程阻塞,会换另一个。

缺点

  1. 不能创建过多。
  2. 创建和切换成本高,需要切换到内核态。

用户态线程和内核态线程的映射

image.png

image.png

image.png

image.png

参考: