我总是读到,在任何给定时间,处理器一次只能运行一个进程。因此只有一个进程处于 running
状态。
但是,我们可以有许多可运行的进程。这些都是等待调度程序安排其执行的所有这些进程。
在任何给定时间,所有这些可运行进程是否都存在于用户地址空间中?或者在用户地址空间中有当前正在运行的进程,并且只有在它们被调度后才会从磁盘返回到 RAM。在这种情况下,这是否意味着内核将进程任务描述符保留在其所有可运行进程的列表中,即使它们在磁盘中也是如此?我想你可以看出我很困惑。
最佳答案
如果 CPU 支持虚拟内存寻址,则每个进程都有唯一的内存 View 。尝试从同一内存地址读取的两个不同进程将映射到物理内存中的不同位置,除非内存映射另有说明(共享内存,例如 DLL 文件被映射为只读)
如果CPU不支持虚拟内存,只支持内存保护,其他进程的内存就会被保护掉,这样运行的进程就只能访问自己的内存。
关于linux - 用户地址内存是如何组织的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982499/