读书看到下面这一段,不太理解,就搜了一下,学了很多东西。
[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.youkuaiyun.com/cybercode/article/details/7081793[/url]
[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.youkuaiyun.com/cybercode/article/details/7081793[/url]