我已经浏览了各种在线文档/视频,以了解“虚拟地址,虚拟地址空间(VAS)”等等,但下面提到的一些疑问尚不清楚。
1)从硬盘读取程序时,CPU生成“虚拟地址”。那么这个虚拟地址在哪里?它是否存在于硬盘/ RAM /虚拟内存中?
2)要执行,需要将程序加载到RAM中,并且CPU为其生成虚拟地址。这些活动(生成VA和加载到RAM中)是同时发生还是顺序发生?如果有的话,Kernel / MMU如何知道哪个特定的虚拟地址需要映射到RAM中的哪个物理地址?
3)寻呼是虚拟记忆技术。页面输出/输入&换出/换相同或不同?如果不同,怎么样?
4)linux上的pmap cmd是VA到物理地址表示吗?
5)如果没有,如何检查VA&在linux上进程的PA?
这将是非常好的&如果我的上述疑虑得到澄清,请提供帮助
答案 0 :(得分:0)
你离我们不远了。 CPU不生成虚拟/逻辑地址。操作系统定义将逻辑地址转换为物理地址的页表。 CPU解释这些表。
分页和交换是两回事。在分页中,可以在存储器和辅助存储器之间移动进程的各个页面。在交换中,整个过程将移动到内存和二级存储之间。
在虚拟内存和分页之前的几天,交换是常态。由于流程往往很小(约32K),因此当流程倾向于使用千兆字节时,这并不像今天那么大。