使用虚拟内存,系统上运行的程序可以分配比物理可用内存更多的内存; [关闭]
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
【讨论】:
以上是关于使用虚拟内存,系统上运行的程序可以分配比物理可用内存更多的内存; [关闭]的主要内容,如果未能解决你的问题,请参考以下文章