根据我的理解,每个进程通过虚拟地址而不是物理地址访问内存,通过MMU单元将这些虚拟地址转换为物理地址是CPU的职责,两个或多个进程可以有相同的虚拟地址。
因此,假设进程 A正在尝试访问虚拟地址12345,而进程 B正在尝试访问虚拟地址12345。
MMU将如何将每个进程的虚拟地址转换为物理地址,是否有每个进程的映射表将虚拟地址映射到物理地址(因为我以为CPU甚至不知道“进程”是什么,它唯一的职责是盲目执行指令而不关心哪个指令属于哪个进程,而“进程”只是一个操作系统概念)?
假设一个进程进行了系统调用来打开一个文件,当Linux内核执行这个系统调用时,Linux内核应该将fd打开的文件添加到进行fd系统调用的进程表中。
当传递给系统调用的参数不包含 PID 时,Linux 内核如何知道哪个进程进行了这个系统调用?