问答题 什么是内核支持线程和用户级线程?并对它们进行比较。
【正确答案】
【答案解析】内核支持线程是在内核支持下实现的,即每个线程的线程控制块设置在内核中,所有对线程的操作(如创建、撤销和切换等),都是通过系统功能调用由内核中的相应处理程序完成。而用户级线程仅存在于用户空间中,即每个线程的控制块设置在用户空间中,所有对线程的操作也在用户空间中完成,而无需内核的帮助。
可从以下几个方面比较内核支持线程和用户级线程:
(1)内核支持。用户级线程可在一个不支持线程的OS中实现,而内核支持线程则不然,它需要得到OS内核的支持。
(2)处理器的分配。在多处理机环境下,对纯粹的用户级线程来说,内核一次只为一个进程分配一个处理机,即进程无法享用多处理机带来的好处。而在设置有内核支持线程时,内核可调度一个应用中的多个线程同时在多个处理机上并行运行,从而提高程序的执行速度和效率。
(3)调度和线程执行时间。对设置有内核支持线程的系统,其调度方式和算法与进程的调度相似,只不过调度的单位是线程。而对只设置了用户级线程的系统,调度的单位则仍为进程。因此,在条件相同的情况下,内核支持的线程通常比用户级线程得到更多的CPU执行时间。
(4)切换速度。用户级线程的切换,通常发生在一个应用程序的多个线程之间,由于不需陷入内核,而且切换的规则也相当简单,因此切换速度比内核支持线程至少快一个数量级。
(5)系统调用。在典型的OS中,许多系统调用都会引起阻塞。当一个用户级线程执行这些系统调用时,被阻塞的将是整个进程。而当一个内核支持线程执行这些系统调用时,内核只阻塞这个线程,但仍可调度其所属进程的其他线程执行。