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

    内容

    • 0

      从内核角度看,内核级线程和用户级线程有什么不同?(10分)

    • 1

      试说明用户级线程和内核支持线程的实现方法。

    • 2

      下列关于线程的描述中,错误的是( ) A: 内核支持线程的调度由OS完成 B: OS为每个用户级线程建立一个TCB(线程控制块) C: 用户级线程间的切换比内核支持线程间的切换效率高 D: 用户级线程可以在不支持内核支持线程的OS上实现

    • 3

      不论是系统支持的线程还是用户级线程,其切换都需要内核的支持。

    • 4

      用户级线程执行时,同一进程不同线程的切换不需要内核支持。