malloc申请的内存能是虚拟内存吗,也就是申请的一块新的空间,刚申请就缺页吗? 比如是这样的,malloc申请了一块内存,这块内存本身不在物理内存得地址范围之内,需要经过缺页中断以后从硬盘上调?或者malloc申请的内存块的地址必须位于物理内存上? 在操作系统中,每个进程都有自己的虚拟地址空间,malloc申请的内存块实际上是分配了一块虚拟地址空间,这块空间在进程的虚拟地址空间中并不一定对应着实际的物理内存地址,而是可能对应着页表中的一个页面表项,在页面表项中记录着该内存块对应的物理帧的地址,如果该内存块被访问到时,根据页面表项中记录的物理帧的地址,操作系统将相应的页面从硬盘换入内存中。 因此,通常情况下,malloc申请的内存块的地址是位于虚拟内存中的,而不是物理内存上。在刚申请时,由于初始并没有为该内存块分配物理页面,如果该内存块被访问到,则会发生缺页中断,操作系统会将相应的页面从硬盘换入内存中,然后更新页面表项并将虚拟地址映射到新的物理帧。这就是虚拟内存的基本工作原理,它使得进程在物理内存不足或资源受限的情况下,仍能运行大型程序,提高了系统的利用率。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/84522.html