线程通常被定义为“轻量级进程”,因为操作系统 (OS) 为线程维护的数据结构比为进程维护的数据结构更小。与此相关,以下哪一项是正确的?
(A)在每个线程的基础上,操作系统只维护 CPU 寄存器状态
(B) OS 没有为每个线程维护一个单独的堆栈
(C)在每个线程的基础上,操作系统不维护虚拟内存状态
(D)在每个线程的基础上,操作系统只维护调度和记帐信息答案: (C)
说明:线程共享进程的地址空间。实际上,内存与进程有关,而不与线程有关。
线程是 CPU 利用率的基本单位,由程序计数器、堆栈和一组寄存器(和线程 ID)组成。如您所见,对于单个控制线程 – 有一个程序计数器,以及可以在任何给定时间和多线程应用程序中执行的指令序列——单个进程中有多个线程,每个线程都有自己的程序计数器、堆栈和一组寄存器,但共享公共代码、数据、以及某些结构,例如打开的文件。
选项 (A):如上图所示,不仅 CPU 寄存器而且堆栈和代码文件,数据文件也得到维护。因此,选项 (A) 是不正确的,因为它说操作系统只维护 CPU 寄存器状态。
选项(B):根据选项(B),操作系统不会为每个线程维护一个单独的堆栈。但是正如您在上图中看到的,对于每个线程,维护单独的堆栈。所以这个选项也是不正确的。
选项(C):根据选项(C),操作系统不维护虚拟内存状态。它是正确的,因为 Os 不为单个线程维护任何虚拟内存状态。
选项(D):根据选项(D),操作系统只维护调度和计费信息。但它是不正确的,因为它包含其他信息,如 cpu 寄存器堆栈、程序计数器、数据文件、代码文件也被维护。
参考:
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html
此解决方案由Nitika Bansal 提供
这个问题的测验