线程带来的变化
资源分配、调度方面:
在传统的进程机制中,进程是资源分配、调度的基本单位。引入线程以后,进程是资源分配的基本单位,线程是调度的基本单位。
并发性方面:
在传统的进程机制中,只能进程间并发。引入线程之后,各线程间也能并发,也就意味着一个应用程序通过分时复用可以同时的做多件事,比如qq同时视频和发送消息。
系统开销方面:**
传统的进程间并发,需要切换进程的运行环境,系统开销很大。线程间并发,是同一进程内的线程切换,不需要直接切换进程,开销比较小。(进程切换需要存储PCB状态等)
用户级线程和内核级线程
用户级线程:
用户级线程由应用程序通过线程库实现的。所有的线程管理工作都由应用程序负责(包括线程的切换)。
用户级线程中,线程切换可以在用户态下完成的,无须操作系统的干预。在用户看来,是有多个线程的。但是在操作系统内核看来,并意识不到线程的存在。
内核级线程:
内核级线程又称为内核支持的线程。内核级线程的管理工作是由操作系统内核完成的。
内核级线程中,线程的切换是在内核态下完成的,线程的调度切换工作都由操作系统内核负责,因此内核级线程的切换必须在内核态下完成。
有的操作系统支持用户级线程和内核级线程,有的只支持内核级线程
内核级线程和用户级线程通过一个线程管理库实现分配管理。