内核线程和用户态线程

读书看到下面这一段,不太理解,就搜了一下,学了不少东西。 [img]http://dl2.iteye.com/upload/attachment/0101/1229/77b038f5-c8a0-3683-a4c6-b9c1ac9b2f61.jpg[/img] 线程的实现能够分为两类:用户级线程(User-Level Thread)和内核线线程(Kernel-Level Thread).后者又称为内核支持的线程或轻量级进程. 用户线程指不须要内核支持而在用户程序中实现的线程,其不依赖于操做系统核心,应用进程利用线程库提供建立、同步、调度和管理线程的函数来控制用户线程。 内核线程: 由操做系统内核建立和撤销。内核维护进程及线程的上下文信息以及线程切换。一个内核线程因为I/O操做而阻塞,不会影响其它线程的运行。Windows NT和2000/XP支持内核线程 用户线程:由应用进程利用线程库建立和管理,不以来于操做系统核心。不须要用户态/核心态切换,速度快。操做系统内核不知道多线程的存在,所以一个线程阻塞将使得整个进程(包括它的全部线程)阻塞([color=red]此处存疑[/color])。[size=large][color=red]因为这里的处理器时间片分配是以进程为基本单位,因此每一个线程执行的时间相对减小。[/color][/size] linux建立内核线程的函数是kernel_thread,kthread_create,kthread_run,头文件在“linux/kthread.h”,有些操做系统(ubuntu)中可能默认找不到头文件,要到/usr/src/linux-headers×/include目录下复制 参考: [url]http://dashan8020.blog.163.com/blog/static/4796750420115180227132/[/url] [url]http://blog.csdn.net/cybercode/article/details/7081793[/url]