我对操作系统主题很感兴趣,我有一个虚拟问题。标准PE可执行文件链接到0x400000
。我的问题是,当虚拟内存只是将虚拟地址映射到物理时,操作系统如何加载具有相同图像库的可执行文件。是否在某处存储了线程的PDE和PTE索引?在执行开始之前,每个地址是否有一些附加功能?它是如何工作的?
答案 0 :(得分:3)
每个进程都有自己的virtual address space,因此没有冲突。系统中任何一次存在的所有虚拟地址空间都会映射到物理地址空间。无法或当前未映射到特定物理内存的虚拟内存保存在交换文件中(交换分区,或类似) - 这称为paging。
在线程切换期间,当CPU即将从与目前执行的进程不同的进程执行线程时,operating system's scheduler会通知CPU(设置相应的寄存器)有关新虚拟地址转换表的内容使用。因此,CPU认为在给定时间只有一个虚拟地址空间,而操作系统可以管理更多,每个进程一个。
免责声明:我的回答可能是一种与现实相反的肤浅或不精确的想法。这是为了简化OP问题的性质。此外,这些机制依赖于CPU并且依赖于操作系统。