第 28 题
若进程 P 中有一个线程 T,打开文件后获得 fd,再创建线程 Ta、Tb,则线程 Ta、Tb 可共享的资源是()。
I. 进程 P 的地址空间II. 线程 T 的栈III. fd
A. 仅 I B. 仅 I、III C. 仅 II、III D. I、II、III
[tag_link]
正确答案:B
I. 进程 P 的地址空间:在同一进程中的所有线程共享该进程的地址空间。这意味着,线程 Ta 和 Tb 可以访问进程 P 的全局变量,因为这些变量存储在进程的地址空间中。此外,如果线程 T 在堆上分配了内存,那么线程 T 和 Tb 也可以访问这些内存,因为堆是存储在进程的地址空间中的。II. 线程 T 的栈:每个线程都有自己的栈,这是线程的私有资源,不会被其他线程共享。栈用于存储函数调用的局部变量和返回地址。由于每个线程可能有不同的函数调用序列,因此每个线程需要由自己的栈,因此,线程 Ta 和 Tb 不能访问线程 T 的栈。III. 文件描述符 fd:同进程中的所有线程共享该进程打开的文件描述符。文件描述符是一个整数,用于表示进程打开的文件。当线程打开一个文件时,操作系统会返回一个文件描述符,然后线程 T、T 和 Tb 都可以使用这个文件描述符来读写该文件,这是因为,尽管每个线程有自己的栈,但是它们共享其余的进程资源,包括文件描述符。