• On per-thread basis, the OS does not maintain virtual memory state.
Why this is TRUE:
All threads belonging to the same process share the exact same address space and virtual memory state (such as the page table, code section, data section, and shared heap memory). Because the memory environment is shared globally among peer threads, the Operating System does not duplicate or maintain separate virtual memory states for each individual thread. This is the primary reason why threads have lower overhead and are considered "lightweight."
Why the other statements are FALSE:
• "On per-thread basis, the OS maintains only CPU register state."
False. In addition to CPU registers (like the program counter), the OS must track other thread-specific components, most notably the thread stack and scheduling parameters (like thread ID and execution state).
• "The OS does not maintain a separate stack for each thread."
False. Every thread requires its own execution history to handle local variables and function call tracking. Therefore, the OS does maintain a separate stack for each individual thread.
• "On per-thread basis, the OS maintains only scheduling and accounting information."
False. As stated above, it must also actively preserve the private CPU register contexts and stack pointers for each thread during execution.