范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

内存管理(操作系统是如何管理内存的)

  内存管理(操作系统是如何管理内存的)
  在计算机的世界里,有两个比较宝贵的资源,CPU和内存。这是每个进程都要争抢的资源。这篇文章说说操作系统是怎样进行内存管理的。 因水平有限,加之内存管理涉及的细节又很多,所以这里只是简单的介绍内存管理的一些关键概念及发展过程。直面物理内存
  在很久很久以前,内核与用户进程都是直接操作物理内存的。那个时候的物理内存模型大概可以简化成这样。物理内存按照固定大小编号,每个编号代表一个固定的二进制位。我们就像使用门牌号一样使用物理内存编号。这种模型的特点就是简单直接,但是带来的问题也很多而且很严重。问题1:用户进程之间内存冲突。
  在这个模型中,如果同时运行多个进程,就会引发内存冲突。比如进程A访问16号物理内存,而这时进程B很有可能也访问16号物理,引发冲突。相当于你想进入16号房间,另一个人也想进入同样的房间,最后你俩肯定干起来。问题2:破坏操作系统。
  因为内核跟用户进程都是直接操作物理内存,所以难免用户程序就跑去操作内核使用的内存了,引发系统瘫痪。
  其实这个模型也不是一无是处。因为足够简单,而且直接操作硬件,所以在简单的嵌入式系统,收音机,微波炉的电脑版里,还是采用的这种方式。对了BIOS也是采用的这种方式。
  继续前进,既然这种方案有诸多严重问题,那么我们就需要找到一个新的方案。注意,我们要解决的问题是同时运行多个进程,但不会造成访问物理内存地址冲突。地址空间
  地址空间:一个进程可用于寻址内存的一套地址空间。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了一些特殊情况可以共享)。
  地址空间的概念,形象一点儿说类似于我们的电话号码,比如我们的手机号就是一个11位的阿拉伯数字组成的地址空间。生活中还有很多其他的地址空间概念的应用。基址寄存器与界限寄存器
  虽然每个进程都有自己的地址空间(如下图a与b),但是还没有解决访问物理地址冲突的问题。因为进程A的16号内存跟进程B的16号内存很有可能还是同一块内存。
  为了解决这个问题,发明了两个特殊的硬件,基址寄存器和界限寄存器。(关键时刻还得硬件工程师)
  基址寄存器:存储进程访问内存的起始地址。
  界限寄存器:存储进程的内存长度。举个例子
  当第一个程序运行时,基址寄存器和界限寄存器的值分别为0,16384,运行第二个进程的的时候,这些值分别是16384和32768。如果第三个16KB的程序进来那么基址寄存器的值是32768和16384。如下图所示
  每个进程的内存地址在送到物理内存之前。都会自动加上基址寄存器的值。这样每个进程都会在固定的内存范围内活动,这样就可以解决多个进程同时在内存中的问题。 为了避免用户进程随意更改寄存器中的值引起内存访问错误,很多系统中基址寄存器和界限寄存器都是只有操作系统可以访问。
  这个模型看起来完美解决了多道程序运行问题,但是问题在于,每次访问内存都要做加法跟比较运算,加法运算速度太慢了。而且进程的内存都是动态变化的,所以这个方法也不是最优解。交换内存
  我们先来看另外一个问题----内存超载。 每个程序员都希望有一块无限大的内存,但是这不现实。就像你想拥有无限多的钱一样。软件膨胀的速度,跟人的欲望是一样的,永远得不到满足。
  交换内存:把一个进程完全载入内存,运行一段时间之后存入磁盘。然后将另外一个进程载入内存,继续运行。周期性进行交替,把空闲进程主要存储在磁盘上。
  这个方案既可以解决同时运行多进程的问题,又可以解决内存超载问题。因为要频繁地往磁盘写入数据,但硬盘的写入速度又远没有内存快。所以这个方案一样不是我们寻找的最优解。 值得一提的是,虽然这个方案不能作为主流的内存管理方案,但是交换内存的概念还是被保留了下来,并且在实际应用中发挥了很大作用,后面还会提到。虚拟内存
  为了解决同时运行多个程序,以及内存超载问题。所有操作系统的终极解决方案——虚拟内存。虚拟内存概念厉害之处在于,使程序只有一部分载入内存的情况下就可以运行。不用像上面介绍的那些模型一样,要全部载入内存,才能运行进程。
  虚拟内存:每个程序拥有自己的虚拟地址空间,这个空间被分割成多块,每一块被称为一页或者页面(page)。每一页有连续的地址空间。这些也被映射到物理内存。但是并不是所有页都必须在内存中才能运行程序。当程序引用的页在物理内存时,由操作系统完成映射。当程序访问的页不在物理内存时(缺页中断),由操作系统负责把需要的页载入内存。当一个程序等待一部分内容读入内存时,可以把CPU交给其他进程。
  上面这段话,有几个关键点,我帮大家梳理一下。虚拟地址
  程序能够寻址的最大空间,所谓虚拟地址就是逻辑上假想出来的,真实没有那么大。32位操作系统最大的虚拟寻址空间就是2^32 大概是4G的空间 ,64位的操作系统最大虚拟寻址空间是2^64,抱歉我算不出来有多大。页面
  虚拟地址空间按照固定大小划分成称为页面(page)的若干单元。页框
  在物理内存中与虚拟页面一一对应的单元称为页框(page frame)。页面和页框的大小通常是一样的。如何映射--内存管理单元及页表。
  将虚拟地址发送到内存管理单元(Memory Management Unit,MMU包含在CPU里),然后通过页表把虚拟地址映射为物理地址。页表的本质是个函数,输入虚拟地址,输出真实物理地址。缺页中断
  我们知道进程的虚拟寻址空间很大,但是物理内存肯定没有那么大,也就是虚拟地址不可能全部映射到物理内存。当访问的页面不在物理内存时,就发生了页面中断,这个时候需要页面调度算法帮忙,把暂时不需要的页面置换到交换区,把需要的页面加载进内存。在等待换入页面的过程中,CPU会去处理其它进程。Linux会在磁盘中专门开辟出一个区域作为内存的交换区,以区别于IO系统的磁盘空间。举个例子
  我们来简单看一下,如何把虚拟内存地址映射为真实的物理内存地址。假设有一台可以产生16位地址的计算机,最大寻址范围是0到64K(2^16),这台计算机实际物理内存是32K。我们虽然可以编写64K的程序,但他们却不能完全被载入内存。在磁盘上必须有一个64K大的空间,保证程序片段在需要时可以被载入内存。如下图
  共享内存
  为了更高效地使用内存,我们希望更多的共享内存。
  多进程共享页面
  在实际操作中,通常将指令空间和数据空间分开。指令空间的页面很方便共享,因为指令空间的内容是只读的。如果是数据空间共享页面,要么保证数据是只读的,要么在进行数据空间进行写操作时,复制一份副本出来。比如fork调用,只要有一个进程进行了写操作,就会拷贝一份副本,这样每个进程都是可读写的。这个过程叫做写时拷贝。
  多进程共享库
  这是共享内存的另外一个维度,共享页面是按照页面维度共享,这个是按照库的维度,有很多进程都会用到同样的底层库,比如windows的动态链接库(DLL).这样内存中只载入一份就OK了,大大节省了内存空间。结束
  上面的内容大概介绍了一下操作系统管理内存的基本知识,还有很多细节没有涉及,比如页面置换算法,如何更快的将虚拟地址映射到物理地址。如何处理进程动态内存增长等问题,感兴趣的可以私下跟我交流,或者查阅相关书籍。

脑震荡多久能恢复正常(儿童撞到头怎么判断脑震荡)在临床当中脑震荡后遗症一般来讲两个周到三个周左右就能够完全好转,如果持续的时间过久,一定要定期的复查头部ct来明确颅内的病情变化,有很多可能是出现了一些新的病情改变从而造成的,所以脑震荡怎么办(有点脑震荡怎么办)坚持日更的自媒体医生,欢迎大家添加,了解更多神经外科知识,预防于未然!脑震荡在临床上非常常见,明确病情变化的趋势,及时复查头部CT。一般的脑震荡,它不会引起非常明显的临床症状,如果啄木鸟为什么不会脑震荡(啄木鸟啄树会脑震荡吗)资料图啄木鸟为了捕食或求偶,一生中数千次用喙部撞击树干。换成人类这么啄木,估计早就撞傻了,而啄木鸟竟然在地球上生存了约2500万年。不过,美国科学家最近研究发现,啄木或许真的对啄木苹果展示新Emoji表情符号文章来源科技讯7月17日是世界表情包日(WorldEmojiDay)苹果公司在这天提前对外展示一系列新Emoji表情符号它们将于今年秋季随着iOS14等新系统一同到来苹果几乎每年都超市给大白菜添加表情包这两天关于超市给大白菜添加表情包在网上的热度是非常高的,很多网友们也都是非常关注超市给大白菜添加表情包这个事情,为此小编也是在网上进行了一番搜索查阅相关的信息,那么如果说有感兴趣的概率计算(c上标3下标5怎么算)概率计算(c上标3下标5怎么算)今天用了一晚上研究,初步验算,由于数据量太大,小编在这里简单说下数据怎么看首先小编会将80个数字分成8组,每组10个数字,例如第一组(既110),第净利润怎么算(企业净利润具体是怎么计算的?)净利润怎么算(企业净利润具体是怎么计算的?)企业利润怎么算?在做企业的时候,利润肯定是非常重要的数据之一了,但是关于企业利润的算法,很多人还是一知半解,不是非常清楚,企业净利润具体c43怎么算(c63怎么算6下3上)近日,有外媒曝光了奔驰AMGC434MATIC的最新谍照,新车将于明年亮相。大家都知道全新奔驰C63将采用2。0T发动机电机组成的超级混动系统。所以全新C43自然不会搭载现款的3。成考数学怎么蒙40分(成考选择题全蒙C答对的概率)距离2019年10月成考考试仅剩三十来天成考中总有一些题目感觉无从下手时间紧张,做不到每道题都充分思考掌握一些蒙题技巧,也能在考试中多一分把握而且,李老师所说的蒙,还真不是瞎蒙成考Turing主流是我GIGABYTEGeForceGTX1660TiGAMINGOC6G测试报告锁定主流1080p电竞玩家,不追光也不算AI的技嘉GeForceGTX1660TiGAMINGOC6G显示卡,以WinForce3扇正逆转与热导管直触设计,给予玩家不错的入门选择。ToDreamToReach敢于梦想勇于实现的三阳工业全球经销商大会三阳工业于上周五(7月15日)假台北典华大直旗舰店举办57年来首次全球二轮经销商大会,邀请来自五大洲30多国经销商代表齐聚一堂,共同参与并实践本次大会精神主题mdashmdash敢
女人练习瑜伽的好处(女人练哪种瑜伽最好)女人练习瑜伽的好处(女人练哪种瑜伽最好)对于女人而言,坚持练瑜伽好处多多,不仅仅是在减肥瘦身增强免疫力和抵抗力的功能上,更多的是增加自信减轻压力提升记忆力。想知道女性常练瑜伽的好处练习瑜珈的好处(瑜伽有哪些好处)练习瑜珈的好处(瑜伽有哪些好处)瑜伽是一种古老的健身法,练习瑜伽可以达到很好的健身效果,不要看那样安安静静的,但是瑜伽可以在安静中消耗掉人体多余的脂肪,并且增加人的柔韧性和灵活性,练习瑜珈的好处(瑜伽有哪些好处)练习瑜珈的好处(瑜伽有哪些好处)对于女人而言,坚持练瑜伽好处多多,不仅仅是在减肥瘦身增强免疫力和抵抗力的功能上,更多的是增加自信减轻压力提升记忆力。想知道女性常练瑜伽的好处还有哪些怎么样练瑜伽(自我练习瑜伽不能忽略的这9点)怎么样练瑜伽(自我练习瑜伽不能忽略的这9点)自我练习是瑜伽练习者的必经之路,那么自我练习瑜伽时不能忽视的那些问题,你知道吗?1hr练习的时间瑜伽练习时间没有强制要求,最好规律,建议瑜伽练习时间(瑜伽到底几天练一次最好?)瑜伽练习时间(瑜伽到底几天练一次最好?)对于很多瑜伽练习者而言,经常会想问瑜伽到底几天练一次才好?练习瑜伽,是不是越多越好?其实这个问题,应该问问自己的身体,瑜伽练习频率应因人而异干咳吃什么药效果好(大蒜治咳嗽一夜见效)咳嗽是儿科常见病症,由上呼吸道感染,肺炎等很多疾病引起,病因很多,如病毒细菌感染,中医认为风寒暑湿燥火,伤食等等均可以引起。咳嗽的治疗方法也有很多办法,如西医中医,内治或是外治。今大蒜为什么臭(昨晚吃了大蒜第二天口臭严重)松仁嘴红肉汗享受美味的时候,你可能想不到身体会出现一些奇怪的症状。美国雅虎新闻网近日对这些因食物而引发的症状进行了总结。松仁嘴。这种松脆的小种子会对味蕾功能造成破坏,时间长达一个月大蒜哪个好(老蒜和新蒜哪个好)男人吃大蒜对身体有哪些好处哈哈哈,一个最近爱上了吃大蒜的女生来说说吃大蒜的好处吧,不知道你发现没有,生活中,好像男人更喜欢吃大蒜,比如我们家,每次吃面条,我爸我老公都要来上一头大蒜长智齿牙疼吃什么药?(智齿疼吃什么药能好转?)长智齿牙疼吃什么药?(智齿疼吃什么药能好转?)智齿发炎是比较常见的情况,而且有的人疼痛严重要求医生进行拔牙,不过也有人忍者疼痛不肯看医生的,心想可能吃点药就好了。那么一般吃什么药比牙齿痛吃什么药?(牙疼吃什么药好?)牙齿痛吃什么药?(牙疼吃什么药好?)正在玩手机的你,是否也感受过或者正在经历牙疼的困扰呢?牙龈炎实在太常见了!根据既往的全国性口腔健康调查,我国牙龈炎的患病率在1621之间1。如果胃痛吃什么药好(胃疼吃什么药立即止痛)现代生活的快节奏,饮食不规律,胃病找上门,如胃溃疡急慢性胃炎等,首先出现的不适就是胃痛。在药店,遇到这类顾客,店员荐药大都以西药为主,辅助以中成药治疗,而很多店员往往忽视了中成药胃