操作系统简明-5.0:内存管理 干货整理

cache

cpu只能访问内存和处理器内部的寄存器,如果某些数据不在内存中,那么,必须要移到内存后才能供cpu访问,比如某些机器指令,数据
我们来看一组访问速度对比

|内置寄存器|寄存器|内存|
|-|-|
|极快|快|...|

  • 内置寄存器:往往在一个cpu时钟周期就能完成访问
  • 寄存器:一个时钟周期可以执行多个指令
  • 内存:多个时钟周期完成访问

但是,有句话叫做不作就不会死,内存越慢,我们越要频繁使用,为此需要在cpu与内存之间增加cache(高速缓存)

进程访问保护

除了增加内存访问速度,还确保操作系统不能被用户进程访问到,以及用户间不能相互访问,这里介绍一种硬件实现方案:

  1. 每个进程有独立的内存空间
  2. 确定进程可以访问的合法地址范围


硬件方案:我们用基地址寄存器以及界限地址寄存器确定这个范围,比如进程3,可访问的范围是300040~420940


不知少侠们对这个解决办法还满意否☺

连续内存管理

内存分为两个区域:操作系统与用户进程



通常来说,中断向量的位置决定了操作系统的位置,本来操作系统既可以驻留在低内存,又可以跑到高内存玩耍(中断向量在低内存)
如果将多个进程同时放在内存中,就需要考虑如何分配内存空间,因此采用连续内存分配--->每个进程处于一个连续内存区域内

连续的内存管理算法:best fit,first fit

但是面临的困难是:在极端情况下,可能总内存满足需求,但是由于内存碎片分布,因此实际无法满足需求
好比:这有100M内存,但是仅仅50M连续,剩下50M平均1k分布,这样的话就很尴尬了

非连续内存处理办法

分页管理

通常是把小碎片连在一起,便可以扩大内存,但是这么做总会消耗时间,因此不采用,下面我们来提出更好的办法:分页管理

每个座位是一个单位,我要100个座位(100M),因此我给你不连续或连续的座位都无所谓

对于进程来讲,看到的却是是单一,线性,连续的内存

页表:是一个线性数组,存放逻辑页与物理页的对应关系,从逻辑上来讲,是一个映射关系

有这么几个好处

  • 保护功能:因为页表是一个虚拟映射,每个进程都有自己的页表,那我要求M(p1)∩M(p2)=∅,如此一来,进程间就不可相互访问了
  • 大大简化内存分配:操作系统只需要记住哪些物理内存被分配出去,哪些没有被分配出去即可(你要内存,我只需从物理内存的头找到尾)
  • 可以避免碎片化,因为假设逻辑页最少10k,你要5k,我给你10k,你好我好大家好

有这么几个坏处

  • 对于每次内存访问,我们需要做两次物理内存访问:第一次访问页表,查出物理位置,然后再访问对应位置(这是很致命的问题)

处理器速度是最快的(访问寄存器),而对应的,访问内存会比之慢两个数量级:飞机速度800公里/小时,两个数量级是8公里/小时

TLB:我们要设计高速缓存TLB解决上述问题,TLB是页表的子集

页表 物理页
xxx xxxx

如果页表不在TLB内,要持续更新页表和物理页

两个进程要通信,共享内存是一个很好的方法(页表指向同一个物理内存上,M(p)∩M(q)≠∅)

综上:页表的好处多多,无论从内存分配,还是地址保护,异或是内存共享都是一个完美的解决方案

分级页表

借鉴一位大神

虚拟内存

运行一个进程时,要把进程指定的数据,指令放到机器内部中,因为运行中要访问这些数据,指令。但是并不需要把全部的指令和数据都要放到机器中,有些并不会用到:比如代码的异常处理,只有异常出现时,才会做出应对

虚拟内存:做分页管理时,把某些页放到磁盘上,需要时再弄回来,也就是说,我可以把磁盘和内存整合到一起,内存不够时,调来磁盘假装为内存(让物理页指向磁盘)

磁盘块的大小与页的大小应该一致



早期时候,由于磁盘比较小,因此要留一些空间来存放页,如果要访问已经交换出去的页,操作系统要到磁盘上去,把他读回来

好处:

  • 可以跑一个进程,由于虚拟内存大于物理内存,因此他不受物理内存的限制
  • 进程可以自己共享某个内存:数学成绩不好,用物理成绩弥补,英语成绩不够,用化学成绩来补
  • 多个进程的内存总和,要大于物理内存的合

缺点:

  • 附加资源消耗
  • 空间:页表的存放需要占用空间,由于每个进程都有一个页表,100个进程就要有100个页表(后面会讲如何存放页表)
  • 时间 :从虚拟地址映射到物理地址上去,必然要消耗时间
  • 虽然我们一再强调,虚拟内存可以超过物理地址,但实际情况完成的并不怎么好:我们有40G物理内存,20G磁盘内存,而哈希表的特点是随机访问,如果哈希表大量的访问落到了磁盘上去,要知道磁盘慢6个数量级,真不敢想象

cache

主存是备用存储器的cache,备用存储器是主存的拓展
好比书包与图书馆:两者是互补关系

静态变量就是全局变量,只不过静态变量有作用域

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,653评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,321评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,833评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,472评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,306评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,274评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,658评论 3 385
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,335评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,638评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,697评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,454评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,311评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,699评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,986评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,254评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,647评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,847评论 2 335

推荐阅读更多精彩内容

  • word直接复制来了,格式就不改了。至于这门课怎么复习,只要平时实验都认真完成、报告认真写,平时分都很高;考试的话...
    Jozhn阅读 4,476评论 0 8
  • 第一章:概述 什么是操作系统? 是一段一直运行在计算机上的程序 是资源的分配者 向上管理软件向下管理硬件 为用户提...
    Moonsmile阅读 2,288评论 0 4
  • “我们一直忘了要搭一座桥,到对方心里瞧一瞧。” 从你的全世界路过中,猪头拉了燕子的手笑着敬完了酒,还是分了手。从燕...
    佳欣小丸子阅读 255评论 0 0