我是这个领域的菜鸟,所以请耐心回答我的问题:)
我正在阅读有关进程地址空间、虚拟内存和分页的内容。我了解了内存中页面换入换出的机制。据记录,每个进程都分配有 4GB 的虚拟地址空间,其中一部分用于用户空间(特定于每个进程 - 1 或 2GB),其余部分是内核空间(所有进程共用)。由于每个进程的虚拟地址空间都存储在辅助存储中,是否意味着每次启动进程时,它都会在我的硬盘中保留 4 GB 空间?每次启动进程时,我没有看到我的硬盘空间减少 4GB...或者虚拟空间不是作为 block 保留的,而是从小块开始,可以增长到 4GB。请阐明一些情况,如果您知道任何可以帮助我理解这个复杂主题的内容,也请发布一些有关该主题的链接。
最佳答案
虚拟地址内存管理不使用辅助存储。它只是将您的程序和主内存划分为一定大小的分区。主存分区称为帧,程序分区称为页。主存和帧中的每个分区的大小相同。
每当使用一个程序时,内核都会检查该程序的所有页面是否可以放入主内存中。如果是这样,它将把所有页面保留在主内存中。否则,它将只保留最初需要的页面。当稍后需要其他页面时,它会从主内存中删除其中一个帧,然后将请求的页面传输到该帧被删除的位置。
为了将地址从页映射到帧,内核使用页映射表, 它准确地告诉这个特定页面位于主内存中的哪个帧。
检查以下引用资料: https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/virtual.html https://www.bottomupcs.com/virtual_addresses.xhtml
关于memory-management - 进程地址空间和虚拟内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10345297/