博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
虚拟内存
阅读量:4940 次
发布时间:2019-06-11

本文共 686 字,大约阅读时间需要 2 分钟。

1.什么是虚拟内存?

虚拟内存和物理内存相对。物理内存就是计算机真实的内存,虚拟内存是操作系统抽象出来的一个概念,每个进程都有自己的虚拟内存空间,进程看到的内存是虚拟内存,进程不能看到物理内存。操作系统和CPU负责将虚拟内存映射到物理内存。

2.虚拟内存有什么用?

  • 虚拟内存隔离了进程,进程不能相互影响。
  • 虚拟内存的权限可以保护操作系统,进程不能任意修改内核空间。
  • 虚拟内存的概念简化了程序的编译链接和执行。进程都有相同的虚拟内存空间。
  • 虚拟内存使操作系统能够更好的利用物理内存。

3. 页表

虚拟内存是分页的,一般每页是4kb。虚拟内存按页和物理内存对应。连续跨页的虚拟内存在物理内存上不一定是连续的。MMU负责做内存的映射,一般分为两级页表。页表最终会对应到磁盘文件,具名或者匿名。

4. 缺页中断

一开始分配虚拟内存时是不会在物理内存上操作的。当进程读取某一块内存,内存没有对应的物理内存时,就会发生缺页中断。内核这时分配一块物理内存和虚拟内存对应,当物理内存不够时,会按照某种算法挑选一个victim,置换掉。

5. 共享内存

动态库,文件,fork操作等等会在进程之间共享内存。如果内存是read only,那么会在物理内存上只有一份拷贝(例如动态库)。当某个进程写了内存时,会采用copy-on-write的方式,copy出另外一个页,然后再写,这时内存不再共享。mmap映射的内存可以写共享,进程可以看到别的进程对内存的修改,这也是进程间通信的一种方式。

转载于:https://www.cnblogs.com/zeeroo32/p/6535881.html

你可能感兴趣的文章
《A First Course in Abstract Algebra with Applications》-chaper1-数论-关于素数
查看>>
ORA-3136
查看>>
算法笔记_145:拓扑排序的应用(Java)
查看>>
JS获取农历日期
查看>>
PHP中的HTTP协议
查看>>
CSS给文字描边实现发光文字
查看>>
Java WebService入门实例
查看>>
css样式之补充
查看>>
结构与联合
查看>>
关于JS历史
查看>>
软件架构师工作流程
查看>>
将txt文本转换为excel格式
查看>>
BUPT复试专题—众数(2014)
查看>>
css-sprite切割图片(加快网页加载速度)
查看>>
20145316 《信息安全系统设计基础》第十四周学习总结
查看>>
Liferay7 BPM门户开发之18: 理解ServiceContext
查看>>
从零开始学区块链(3)
查看>>
Intel Galileo development documentation
查看>>
Jquery特效
查看>>
web服务器
查看>>