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