问:

linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?

每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那么每个进程都有4G的话岂不都要运行内核了,这样是不是很浪费很低效?

答:

4G 指的是最大的寻址空间为4G

一个进程用到的虚拟地址是由内存区域表来管理的,实际用不了4G。而用到的内存区域,会通过页表映射到物理内存。所以每个进程都可以使用同样的虚拟内存地址而不冲突,因为它们的物理地址实际上是不同的。

内核用的是3G以上的1G虚拟内存地址,其中896M是直接映射到物理地址的,128M按需映射896M以上的所谓高位内存。各进程用的是同一个内核,什么叫“都运行内核”?
 
追问
见笑了,小生刚入门,只是用一个极端的想法来探究为什么这样设计,"都运行内核"是每个进程都有独立的4G虚拟内存空间,其中有1G是跑系统的。

你说的”每个进程都可以使用同样的虚拟内存地址而不冲突“是多个进程共用这4G的虚拟内存么,这样岂不和那句“每个进程所拥有的4G独立的虚拟内存空间” 起冲突了还有896M是直接映射到物理内存的,是不是就一直跑在物理内存上了,这样的话是不是物理内存至少要有896M了啊

追答
首先你得分清“可以寻址”和“实际使用”的区别。其实我们讲的每个进程都有4G虚拟地址空间,讲的都是“可以寻址”4G,意思是虚拟地址的0-3G对于一个进程的用户态和内核态来说是可以访问的,而3-4G是只有进程的内核态可以访问的。并不是说这个进程会用满这些空间。

其次,所谓“独立拥有的虚拟地址”是指对于每一个进程,你可以访问自己的0-4G的虚拟地址。虚拟地址是“虚拟”的,需要转化为“真实”的物理地址。好比你有你的地址簿,我有我的地址簿。你和我的地址簿都有1、2、3、4页,但是每页里面的实际内容是不一样的,我的地址簿第1页写着3,你的地址簿第1页写着4,对你我自己来说都是用第1页(虚拟),实际上用的分别是第3、4页(物理),不冲突。

内核用的896M虚拟地址是直接映射的,意思是只要把虚拟地址减去一个偏移量(3G)就等于物理地址。同样,这里指的还是寻址,实际使用前还是要分配内存。而且896M只是个最大值。如果物理内存小,内核能使用(分配)的可用内存也小。

转载于:https://www.cnblogs.com/web21/p/6211049.html

linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?相关推荐

  1. linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?进程虚拟地址4G指拥有4G的寻址能力,需要页表转换为实际物理地址,每个进程用到的内核是直接映射,地址的进程地址-3G的关系

    linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间 ...

  2. 理解 Linux 的虚拟内存

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://zhenbianshu.github.io/ 虚拟内存 毋庸置疑,虚拟内存绝对是操作系统中最重要的概念之一.我 ...

  3. Linux为什么虚拟内存大于物理内存?

    对于精通 CURD 的业务同学,内存管理好像离我们很远,但这个知识点虽然冷门(估计很多人学完根本就没机会用上)但绝对是基础中的基础. 这就像武侠小说中的内功修炼,学完之后看不到立竿见影的效果,但对你日 ...

  4. linux查看java虚拟机内存_深入理解java虚拟机(linux与jvm内存关系)

    本文转载自美团技术团队发表的同名文章 https://tech.meituan.com/linux-jvm-memory.html 一, linux与进程内存模型 要理解jvm最重要的一点是要知道jv ...

  5. 以下linux进程内存空间中按低地址,Linux 内核开发 - 进程空间

    1.1 虚拟内存 Linux 的系统.假设每一个任务都独立的占用内存,则实际的物理内存将非常快消耗殆尽.实际上对于前台正在执行的任务来说,所须要要的内存并不多,非常多任务基本不须要执行,也就没有必要一 ...

  6. linux存储--虚拟内存详解MMU、页表(十)

    内存是程序得以运行的重要物质基础.如何在有限的内存空间运行较大的应用程序,曾是困扰人们的一个难题.为解决这个问题,人们设计了许多的方案,其中最成功的当属虚拟内存技术.Linux作为一个以通用为目的的现 ...

  7. Linux的虚拟内存

    一.物理地址 在说虚拟地址之前先说一下物理地址的相关概念,物理地址即我们在指令中能够实际操作的物理存储空间,CPU内核设计的时候会有自己的寻址空间,通过控制总线,地址总线和数据总线,访问物理地址空间( ...

  8. 【Linux】Linux的虚拟内存详解(MMU、页表结构)

    内存是程序得以运行的重要物质基础.如何在有限的内存空间运行较大的应用程序,曾是困扰人们的一个难题.为解决这个问题,人们设计了许多的方案,其中最成功的当属虚拟内存技术.Linux作为一个以通用为目的的现 ...

  9. python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间、内存使用量、内存占用率、PID、名称、创建时间等;

    python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间.内存使用量.内存占用率.PID.名称.创建时间等: psutil模块可以跨平台使用,支持Linux/ ...

最新文章

  1. oracle ddl会被什么阻塞,MySQL Online DDL与DML并发阻塞关系总结
  2. ajax成功进入success但是获取不到返回值
  3. Verdi-ug --- nschema Tutorial
  4. java synchronized关键字_Java:手把手教你全面学习神秘的Synchronized关键字
  5. linux服务器nvidia驱动的安装与卸载
  6. 窗体间传值和窗体间互操作
  7. 防止DISCUZ根域名跳转到forum.php的方法
  8. UNIX网络编程:I/O复用技术(select、poll、epoll)
  9. ECCV 2020 | 可解释和泛化的行人再辨识
  10. ORACLE自增长字段实现(转)
  11. lua能在stm32arm上运行吗_IOS App能在Mac运行!苹果这黑科技能撼动微软吗?
  12. 发那科机器人override指令_上海发那科(FANUC)机器人有限公司内部教材 -
  13. 如何做好抖音?做抖音必学的上热门技巧
  14. 2023 刷步数网站VUE源码
  15. mac地址是由多少个bit组成_MAC地址是什么,MAC地址是怎么构成的,MAC地址占多少位,作用如何? 简单答案!!...
  16. 强烈推荐一款开源项目! (OPC)微服务能力开放平台!
  17. TIA博途_通过PEEK指令在TP900触摸屏上实现监控所有IO地址的具体方法示例
  18. DSO Framer 使用介绍(ZZ)转
  19. 8个独立站海外营销工具
  20. 利用搜搜的问问做外链小技巧

热门文章

  1. Flask+Gunicorn(协程)高并发的解决方法探究
  2. 别再被三次握手和四次挥手所支配!把TCP这玩意儿给你掰开了说
  3. 中国3亿中年男人都在花钱买什么?数据分析后告诉你答案,很现实
  4. 相信阿里只会PPT的“假专家”,随意做数字化转型,活该失败
  5. 凭什么它能成为报表神器?这五大技术硬货不得不服
  6. Nitro-LM保护Flex/AIR应用的安全
  7. 会mysql不会sql_不是吧,不会有人还不知道MySQL中具实用的SQL语句
  8. 为什么表格后面打不出0_同样的LOL游戏,为什么BO5和BO3的结局差距如此之大?...
  9. 计算机网络中使用的双绞线通常是16芯的,自考计算机应用基础判断题试题答案...
  10. centos可视化打开和修改文件(隐藏文件)