线程的实现方式
线程的实现方式有2种:用户级线程和内核级线程。
用户级线程中,有关线程管理的工作都是由应用程序完成的,内核意识不到线程的存在。应用程序可以通过使用线程库设计成多线程程序。
内核级线程中,线程管理的工作由内核完成,应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口。内核为进程及内部的每一个线程维护上下文信息,调度也在内核基于线程架构的基础上完成。
用户级
内核级
组合级线程
用户级线程:
1.线程的管理工作由应用程序完成
2.没有涉及CPU变态
3.操作系统不会意识到内核级线程的存在
内核级线程:
1.优点:当一个线程阻塞了,别的线程可以执行,并发能力强,多线程可以在多核处理机上执行
2.缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统完成,切换到核心态会消耗大,成本大。
线程模型
一对一,多对一,多对多
一对一模型:将每个用户级线程映射到一个内核级线程。
优点:并发能力强,不影响
缺点:消耗大
多对一模型:将多个用户级线程映射到一个内核级线程。
优点:开销小。
缺点:一个阻塞,全体阻塞
多对多:多个用户级线程映射到多个内核级线程。
取两之长,切两之短