内核级线程 和 用户级线程

来源:互联网 发布:wnacg新域名 编辑:程序博客网 时间:2024/05/16 17:37


 从线程实现的角度看,线程可以分成用户级线程,内核级线程和轻量级线程。

  在内核级线程的实现中,线程管理的所有工作由操作系统内核来做,内核专门提供API供开发者使用,应用程序区不需要有线程管理的代码。内核级线程的优点:在多处理器上,内核能调度同一进程中多个线程并发执行;若进程中一个线程被阻塞,内核能调度同一进程的其他线程占有处理器运行,也可以运行其他进程中的线程;由于内核线程仅有很小的数据结构和堆栈,因此内核级线程的切换比较快,内核自身也可以用多线程技术实现,从而提高系统的执行速度和效率。内核级线程的缺点:应用程序线程在用户态运行,而线程管理和调度在内核实现,在同一进程中,控制权从一个线程传送到另一个线程时需要用户态-内核态-用户态的模式切换,系统开销较大。

 在用户级线程的实现中,线程管理的全部工作都由应用程序来做,在用户空间内来实现,内核是不知道线程的存在的。用户级多线程由用户空间运行的线程库来实现,任何应用程序均需要通过线程库进行程序设计,再与线程库连接后运行来实现多线程。用户级线程的优点:线程切换不需要内核特权方式;按应用特定需要允许进程选择调度算法。用户级线程的缺点:在传统的基于进程操作系统中,大多数系统调用将阻塞进程,因此当线程执行一个系统调用时,不仅该线程被阻塞,而且进程内的所有线程会被阻塞;不能成分利用多重处理的优点,即使在多处理机环境中,同一进程中的多个线程也不能真正并行。


windows上用API CreateThread()等创建的线程就是内核级线程.开源的pthread就是一个用户级线程。

0 0