1

我对操作系统主题感兴趣,我有一个虚拟问题。标准 PE 可执行文件链接到0x400000. 我的问题是,当虚拟内存只是将虚拟地址映射到物理地址时,操作系统如何加载具有相同映像库的多个可执行文件。它是否在某处存储线程的 PDE 和 PTE 索引?在执行开始之前,每个地址是否有一些补充?它是如何工作的?

4

1 回答 1

3

每个进程都有自己的虚拟地址空间,因此没有冲突。系统中任一时间存在的所有虚拟地址空间都映射到物理地址空间。不能或当前未映射到特定物理内存的虚拟内存保存在交换文件(交换分区等)中——这称为分页

在线程切换期间,当 CPU 即将从与目前执行的进程不同的进程中执行线程时,操作系统的调度程序会通知 CPU(设置相应的寄存器)有关要使用的新虚拟地址转换表。因此,CPU 认为在给定时间只有一个虚拟地址空间,而操作系统可以管理更多,每个进程一个。


免责声明:与现实相反,我的回答可能被认为有点肤浅或不精确。这是为了简单起见,就 OPs 问题的性质而言。此外,这些机制依赖于 CPU 和操作系统。

于 2013-04-14T09:10:54.967 回答