线程分为
用户级线程和
内核级线程。
用户级线程是由用户空间的
线程库实现的,管理线程的数据结构都在用户空间。
用户级线程不被内核所感知,即内核不知道用户级线程的存在。所以不能实现真正的并行。
内核级线程的创建、调度等都是由操作系统实现的。
进行线程管理操作时需要处于内核态。
用户级线程的优缺点:
优点:
线程的管理操作(切换)速度快。因为管理用户级线程的数据结构都在用户地址空间,所以在线程切换时不需要用户态和内核态的两次转换,开销小。
2.调度可以是
应用程序相关的。即一个进程内的线程的调度。
3.可以在任何操作系统中运行(只要线程库支持),不需要对底层内核进程修改。(可移植性强)
缺点:
1.用户级线程构成的多线程应用程序,
无法利用多处理器技术,无法实现真正的并行。(内核不知道用户级线程的存在)
当用户级线程被阻塞时,整个进程中的所有线程都会被阻塞。
内核级线程的优缺点:
正好和用户级线程的优缺点相反。
优点:
1.可以同时把一个进程中的多个线程调度到多个处理器中,实现真正的并行。
2.如果进程中的一个线程阻塞,内核可以调度同一个进程中的另一个线程使用cpu。
3.内核例程自身也可以是多线程的。
缺点:
1.在线程切换的过程中,需要从用户态切换到内核态,执行完调度管理后,状态再切换回来,两次状态切换开销大。
优缺点也就是用户级线程和内核级线程的区别。
还没有评论,来说两句吧...