OS 正确/错误的问题

OS True / False Questions

我有几个关于 OS 的问题,我想验证一下:

  1. 以下哪个说法是错误的?

一个。同一进程内的线程共享同一内存space

b。进程及其子进程共享内存space

c。 CPU一次只执行一个线程

d.进程可以通过管道进行通信

我认为是b,因为进程不共享内存space,每次我们创建一个子进程,它都会复制到自己的PCB和不同的寄存器。

虽然,我知道在多核 CPU 中,我们实际上可以 运行 多个线程同时...

  1. 在内核模式下,可以读取其他进程的内存

我认为这个是true因为在内核模式下你就像OS一样,然后你可以访问其他进程的内存。

请帮助我理解我是否正确。

谢谢!

a. Threads within the same process share the same memory space

大部分正确(对于大多数正常使用的操作系统)。没有严格要求它是真的(例如 OS 可以给每个线程自己的内存 space,其中一些但不是全部对于属于同一进程的不同线程是相同的 - 例如作为一种方式增加进程可以使用的内存量 and/or 以提供其他线程无法访问的“线程特定存储”。

请注意,某些操作系统、某些语言和某些环境不会像其他操作系统 systems/languages/environments 那样定义“进程”and/or“线程”。示例包括 Erlang(其中“进程”更像是“角色模型”中的“角色”);和 Linux(其中“进程”和“线程”通过指定任务 do/don 不共享的内容在可配置的“任务”之上模拟);和 GPU(它们大多只是 CPUs,具有更宽的 SIMD,其中“线程”通常是“SIMD 通道”的同义词)。

b. Process and its child process share the same memory space

大部分错误(对于大多数正常使用的操作系统,但上面的注释适用)。在某些情况下是正确的(SASOS 使用托管语言来分隔进程、没有 MMU 的小型嵌入式系统等)。

c. CPU execute only one thread at a time

有点正确(如果您忽略“CPU 可以执行零线程”和 GPU)。

d. Processes can communicate through pipes

有点真实。一般来说,根本不需要管道存在(即使管道看起来存在,它们也可以在其他东西之上模拟,比如消息传递,所以可以说进程通过其他东西进行通信而不知道它不是管道)。