服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

为什么进程地址空间中包括操作系统?

日期: 来源:脚本之家收集编辑:码农的荒岛求生
将 脚本之家 设为“星标
第一时间收到文章更新

出品 | 码农的荒岛求生 (ID:escape-it)

已获得原公众号的授权转载
大家好,今天聊聊进程地址空间这点小事。
说到进程的地址空间,大家可能都知道这样一张图:

这张图就是Linux程序运行起来后所谓的进程地址空间,这里包括我们熟悉的代码区、数据区、以及堆区和栈区,今天我们不讲解这些区域,而是重点关注这个地址空间中最上面的一块区域——内核,这里的问题是:为什么进程地址空间中要包括操作系统(内核)呢?
要想知道这个问题的答案,你需要知道操作系统到底是如何管理内存的。
现代操作系统大都利用虚拟内存系统来管理内存,我们看的上图,这一段连续的内存区域其实只是一个假象,物理内存中并不一定真的存在这样一个内存布局,利用虚拟内存系统将一些非连续的内存块(页)映射到一段连续的地址空间——也就是我们看到的上图,这就是所谓的虚拟内存。
我们看到的地址都是虚拟地址,物理内存与虚拟内存的映射关系维护在页表中,当CPU执行机器指令时需要根据页表将虚拟地址转为物理内存地址,但这个过程对程序员来说是透明的,我们看不到这样的一个转换过程。
那么为什么内核要将自己映射到进程的地址空间呢?
我们知道CPU在执行指令时是有权限状态的,x86处理器有4个权限状态,操作系统一般使用其中两个,这就是所谓的用户态与内核态,我们写的程序运行在用户态,操作系统运行在内核态。
在一些场景下,像我们读写文件、收发网络数据等都需要操作系统的帮助,也就是调用操作系统提供的服务,这个过程就是所谓的系统调用,关于系统调用我们在之前的文章中已经多次讲解过了,在系统调用这个场景下就涉及从用户态切换到内核态。
此外还有其它场景涉及用户态与内核态的切换,像中断处理以及异常处理等。
既然你知道我们的程序运行时需要频繁的进行用户态与内核态切换那么剩下的就简单了。

如果内核与用户态程序位于不同的地址空间,那么当用户态与内核态进行切换时就势必涉及页表的切换——从用户态进入内核态需要将用户进程的页表切换为内核页表,而如果从内核态退出回到用户态就涉及将内核页表切换为用户进程页表,切换页表对于计算机系统来说算是一个不小的开销。
而如果内核与用户态程序位于同一个地址空间中,那么上述页表切换的开销就可以避免了,这就是为什么内核要将自己映射到进程地址空间的重要原因。
好啦,这篇就到这里,希望对大家理解进程地址空间有所帮助。

<END>

程序员专属T恤

商品直购链接 

相关阅读

  • 同事要给Redis申请32个GB内存,被技术总监暴骂!

  • 原价299元,现在参加拼团活动立享优惠价仅 199 元,赶快一起参团吧!《Redis内核原理深度剖析专家课》=== 课程内容 ===现在大部分的公司在开发系统的时候都会用到缓存技术,而最流
  • 今日逗图:真 能 拉 丝

  • ‍本文图片均转载自网络不代表电手认同其观点或证实其描述如有侵权,请联系我们删除本文内容只为博君一笑,请勿当真吃上一口长生不老神话故事!不仅能吃还能变着法用全网征集
  • 今日逗图:非 成 人 玩 具

  • 本文图片均转载自网络不代表电手认同其观点或证实其描述如有侵权,请联系我们删除本文内容只为博君一笑,请勿当真哪个男人不喜欢看变身给你推是觉得你有钱橘猫模仿大赛中橘猫夺
  • 万文解析openvswitch中流表转发原理

  • 在过去10几年里面,虚拟化已经改变了应用,数据,服务的实现部署方式。据Gartner 2016的报道[1],80%的x86 workload已经是虚拟化,其中大部分是虚拟机,但是容器所占比例正以极快的增长
  • 今日逗图:发 情 宾 馆

  • 本文图片均转载自网络不代表电手认同其观点或证实其描述如有侵权,请联系我们删除本文内容只为博君一笑,请勿当真芜湖~蚌埠住了“我这站不动一样把戏给抢过来”《猛娜力沙》有
  • 今日逗图:歧 视 人 类

  • ‍本文图片均转载自网络不代表电手认同其观点或证实其描述如有侵权,请联系我们删除本文内容只为博君一笑,请勿当真变化真大有画面了你也装个铁栏
  • 今日逗图:使 劲 操 作

  • 本文图片均转载自网络不代表电手认同其观点或证实其描述如有侵权,请联系我们删除本文内容只为博君一笑,请勿当真好怪,再看一眼拿回来...送我你女朋友喜欢狼?被发现了系绳匕首(★)
  • 今日逗图:露 出,马 眼

  • 本文图片均转载自网络不代表电手认同其观点或证实其描述如有侵权,请联系我们删除本文内容只为博君一笑,请勿当真银河护胃队夸他黑色眼镜腿好看这葡萄长挺帅是我们成都啊,那没事
  • 今日逗图:从 小 抓 起

  • ‍本文图片均转载自网络不代表电手认同其观点或证实其描述如有侵权,请联系我们删除本文内容只为博君一笑,请勿当真物尽其用身价倍增!谁看了不沉默!始皇摔得最惨的一次
  • 今日逗图:老 师 夸 我

  • 本文图片均转载自网络不代表电手认同其观点或证实其描述如有侵权,请联系我们删除本文内容只为博君一笑,请勿当真@梵高地狱笑话敌方:对面一个甄嬛 我没开玩笑电子答辩个个都是人

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四
  • 美国对华2000亿关税清单,到底影响有多大?

  • 1 今天A股大跌,上证最大跌幅超过2%。直接导火索是美国证实计划对华2000亿美元产品加征25%关税。 听起来,2000亿美元数目巨大,我们来算笔账。 2000亿美元,按现在人民币汇率

最新文章

  • 30年不评职称的教师,获评副教授

  • 30年不评职称的华中科技大学教师杨汉文,已经获评副教授。4月24日,澎湃新闻记者查询发现,华中科技大学航空航天学院官网“副教授”一栏更新信息显示,杨汉文职称已标注为副教授。
  • 为什么进程地址空间中包括操作系统?

  • 将 脚本之家 设为“星标⭐”第一时间收到文章更新出品 | 码农的荒岛求生 (ID:escape-it)已获得原公众号的授权转载大家好,今天聊聊进程地址空间这点小事。说到进程的地址空间,大
  • 《南阳师范学院学报》投稿指南

  • 《南阳师范学院学报》是由南阳师范学院主办的文理综合性学术期刊,双月刊,第2、5期为社会科学版,第1、3、4、6期为自然科学版。社会科学版开设有“思想文化研究”“政治研究”“