掌握内核级多线程KLT
掌握用户级多线程ULT
理解KLT与ULT的区别计算机操作系统2处理器管理–2.4多线程技术2.4.2KLT与ULT
内核级线程KLT,Kernel-LevelThreads线程管理的所有工作由OS内核来做OS提供了一个应用程序设计接口API,供开发者使用KLTOS直接调度KLT
内核级线程的特点进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行多处理器环境中,内核能同时调度同一进程中多个线程并行执行内核自身也可用多线程技术实现,能提高操作系统的执行速度和效率应用程序线程在用户态运行,线程调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另一个线程时需要模式切换,系统开销较大
用户级线程ULT,User-LevelThreads用户空间运行的线程库,提供多线程应用程序的开发和运行支撑环境任何应用程序均需通过线程库进行程序设计,再与线程库连接后运行线程管理的所有工作都由应用程序完成,内核没有意识到线程的存在
用户级线程的特点所有线程管理数据结构均在进程的用户空间中,线程切换不需要内核模式,能节省模式切换开销和内核的宝贵资源允许进程按应用特定需要选择调度算法,甚至根据应用需求裁剪调度算法能运行在任何OS上,内核在支持ULT方面不需要做任何工作不能利用多处理器的优点,OS调度进程,仅有一个ULT能执行一个ULT的阻塞,将引起整个进程的阻塞
Jacketing技术把阻塞式系统调用改造成非阻塞式的当线程陷入系统调用时,执行jacketing程序由jacketing程序来检查资源使用情况,以决定是否执行进程切换或传递控制权给另一个线程
用户级线程vs.内核级线程ULT适用于解决逻辑并行性问题KLT适用于解决物理并行性问题进程处理器用户级线程线程调度进程调度处理器内核级线程线程调度内核空间用户空间