使用虚拟内存,系统上运行的程序可以分配比物理可用内存更多的内存; [关闭]

Posted

技术标签:

【中文标题】使用虚拟内存,系统上运行的程序可以分配比物理可用内存更多的内存; [关闭]【英文标题】:With virtual memory, programs running on the system can allocate far more memory than is physically available; [closed] 【发布时间】:2015-09-24 11:03:21 【问题描述】:

操作系统如何做到这一点

使用虚拟内存,系统上运行的程序可以分配很远的内存 比物理可用的内存更多;

【问题讨论】:

【参考方案1】:

实际上是“多一点内存”,而不是“多得多的内存”,否则你正在试验thrashing。

每个台式机、笔记本电脑或服务器处理器都有一个MMU。 virtual memory 系统使用它来提供虚拟的 address space 到 paging 和 page cache。当内核获得page fault 时,它可以从磁盘中获取一个页面 -e.g.在ELF 可执行文件或共享对象或其他映射文件的段中,或来自交换区域的某些页面中,或发送SIGSEGV 信号,请参阅signal(7)。

在 Linux 上,有几个 system calls 可以更改地址空间:mmap(2) 和 munmap(还有已过时的 sbrk 等...)和 execve(2)。您可以使用madvise(2) 建议内核

你可以使用cat /proc/$somepid/maps(例如你的shell中的cat /proc/$$/maps)来理解一些process的地址空间映射。见proc(5)。

点击上面的所有链接并阅读Advanced Linux Programming和Operating Systems: Three Easy Pieces

【讨论】:

以上是关于使用虚拟内存,系统上运行的程序可以分配比物理可用内存更多的内存; [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

第08章下 内存管理系统

server2008物理内存使用82%导致程序内存错误

期末复习——虚拟内存

虚拟内存 内存分页 LargePage

虚拟内存 内存分页 LargePage

虚拟内存 内存分页 LargePage