操作系统梳理(二)内存

本文将总结最近梳理的一些操作系统的知识,方便后续面试。其实随便找一本操作系统的课本,都会包含操作系统的几大模块,但这篇文章更像是我自己按照面试的常考题目要求,梳理、归纳、总结的,力求简单、直白、易于理解。其中会保留网上那些有利于理解的链接,方便自己后续复习。如果写到重要知识点处,我也可能会画一些图辅助理解。 本文是第二篇 《内存》

目录:

内存.png

下面开始整理:

1 从内存角度看实模式与保护模式、物理地址与逻辑地址

A 网络知识整理

实模式:就是直接操作实际的物理内存地址。在实模式下,程序运行是需要从内存中分配出足够多的连续的内存,然后把整个程序装载进去。
这样会带来如下问题:

  • 地址空间不隔离, 直接操作物理地址,可能发生程序A直接操作程序B物理内存的情况。
  • 程序运行时候的地址不确定:因为我们程序每次要运行的时候,都是需要装载到内存中的,假设你在程序中写死了要操作某个地址的内存,例如你要地址A。但是问题来了,你能够保证你操作的地址A真的就是你原来想操作的那个位置吗?很可能程序第一次装载进内存的位置是A,而程序第二次运行的时候,这个程序装载进内存的位置变成了B,而你操作的A地址压根就不是属于这个程序所占有的内存。
  • 内存使用率低下: 程序要运行,需要得到一个完整的物理内存,有可能当前计算机中没有对应的连续内存地址,即使分隔成多段的不连续内存总和满足大小也不行,那么就不能执行,或者需要将某些程序换出。

保护模式:则从程序的角度,分配一块虚拟的地址,这些虚拟的地址会映射到具体的物理地址上,这样每个程序,都会有自己的虚拟内存范围,就具有很好地隔离性了。我们后面讲的分段、分页、段页式 都是基于保护模式来讲的。

B 参考自

怎样通俗的理解操作系统中内存管理分页和分段? - Oo鮭鮭魚的回答 - 知乎
https://www.zhihu.com/question/50796850/answer/522734117

2 保护模式下的分段、分页、段页式

A 网络知识整理

分段:

这是为了满足用户要求而形成的一种储存管理方式。它把用户程序的地址空间分为若干个大小不同的段,每段可定义一组相对完整的信息。在储存器分配时,以段为单位,这些段在内存中可以不相邻接,所以也同样实现了离散分配。

分页:

在该方式中,将用户程序地址空间分为若干固定大小的区域,称为“页”或“页面”。典型的页面大小为1KB。相应的,也将内存空间分为若干个物理块或页框(frame),页和块的大小相同。这样可将用户程序的任一页放入任一物理块中,实现了离散分配。

分页与分段的比较:

  • 对程序员透明:分页透明,但是分段需要程序员显式划分每个段。
  • 地址空间的维度:分页是一维地址空间,分段是二维的
  • 大小是否可以改变:页的大小不可变,段的大小可以动态改变
  • 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护

段页式:

这是分页和分段两种储存管理方式相结合的产物。程序的地址空间划分为多个拥有独立地址空间的段,每个段上的地址空间划分为大小相同的页。这样既拥有分段系统的共享保护,又拥有分页系统的虚拟内存功能。它兼具两者的优点,是目前应用较为广泛的一种储存管理方式。

B 参考自

https://www.jianshu.com/p/a805e2410fbe

3 内存连续分配的算法

A 网络内容整理
  • 首次适应(First Fit)算法:空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区。
  • 最佳适应(Best Fit)算法:空闲分区按容量递增形成分区链,找到第一个能满足要求的空闲分区。
  • 最坏适应(Worst Fit)算法:又称最大适应(Largest Fit)算法,空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,也就是挑选出最大的分区。
B 参考自

https://juejin.im/entry/592257b62f301e006b183b95

4 内存置换算法

A 网络内容整理

为什么要地址转换

进程载入到真实内存才可以运行,而进程代码使用的是逻辑地址,所以牵扯到一个地址转换的问题

为什么要内存置换

假设某一时刻某个程序的内存页帧已经被写满了,但这时又需要将一个页写到物理内存中,就需要将原本在物理内存中的某一页换出来。如果置换不当,就会导致刚刚被换出到硬盘的页又要被写回内存,减慢系统运行的速度。页面置换算法就是考虑将哪一页换出来以获得优良性能的方法

内存置换算法

  • FIFO : FIFO算法的思想很简单,就是置换出当前已经待在内存里时间最长的那个页
  • LRU(Least Recent Used, 最近最少使用)算法: 由于当前时间之后需要用到哪些页无法提前获知,于是记录当前时间之前页面的使用情况,认为之前使用过的页面以后还会被用到。在置换时,将最近使用最少的页面换出内存。此种方法的开销比较大。
  • Clock算法(时钟轮转法): 为了节约Second Chance算法一个接着一个检查使用位的开销,时钟轮转法又提出了改进。时钟轮转法将所有的页组成一个圆,圆心的指针指向下一个要被置换的页面,置换前同样检查使用位,如果使用位为1,同样将其使用位置为0,随后将顺指针旋转,检查下一个页面,直到发现某页的使用位为0,将此页置换出内存。很容易理解此算法为什么叫“时钟”轮转法。
B 参考自

https://www.cnblogs.com/yongheng20/p/4967213.html

5 虚拟内存

A 网络内容整理

如果存在一个程序,所需内存空间超过了计算机可以提供的实际内存,那么由于该程序无法装入内存所以也就无法运行。单纯的增加物理内存只能解决一部分问题,但是仍然会出现无法装入单个或者无法同时装入多个程序的问题。但是可以从逻辑的角度扩充内存容量,即可解决上述两种问题。

基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。

** 虚拟存储器的特征:**

  • 多次性:一个作业可以分多次被调入内存。多次性是虚拟存储特有的属性
  • 对换性:作业运行过程中存在换进换出的过程(换出暂时不用的数据换入需要的数据)
  • 虚拟性:虚拟性体现在其从逻辑上扩充了内存的容量(可以运行实际内存需求比物理内存大的应用程序)。虚拟性是虚拟存储器的最重要特征也是其最终目标。虚拟性建立在多次性和对换性的基础上行,多次性和对换性又建立在离散分配的基础上
B 参考自

https://juejin.im/entry/592257b62f301e006b183b95

6 内存对齐的规则和作用

A 网络内容整理

内存对齐的主要作用是:

1、 平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
2、 性能原因:经过内存对齐后,CPU的内存访问速度大大提升。

** 内存对齐的规则:**

1、 对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据成员的偏移量必须是min(#pragma pack()指定的数,这个数据成员的自身长度) 的倍数。
2、 在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。

B 参考自

http://www.cppblog.com/snailcong/archive/2009/03/16/76705.html

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

推荐阅读更多精彩内容