操作系统-线程实现的两种方式:用户空间与内核中
在用户空间中实现进程
特点:
整个线程包都会被放入用户空间之中,而内核对线程包一无所知。从内核的角度来说,他的管理方式就是普通的单线程进程。
优点:
- 用户级线程包可以在不支持线程的操作系统上实现
- 这种方式的线程切换明显比内核的方式要快
- 允许每个进程自定义其自己的调度算法
缺点
- 当线程进行I/O操作或页面故障引起阻塞的时候,如果调用阻塞系统调用则由于内核不知道有多线程存在,会阻塞整个进程而导致所有线程都被阻塞
- 一个单独的进程内部不存在时钟中断,所以不可能使用轮转调度的方式来调度线程
在内核中实现进程
特点:
当某个线程希望创建一个新的线程或者撤销一个已有的线程的时候,它会进行一个系统调用,这个系统调用通过对线程的更新来完成线程创建或撤销工作
优点:
- 所有能阻塞线程的调用都以系统调用的形式实现
- 如果某个线程引起了页面障碍,内核可以很方便的检查该进程是否有任何其他可运行的线程

混合实现
使用内核级线程,然后将用户级线程与某些或全部内核线路多路复用,如下图