26考研——内存管理(3)
408答疑
文章目录
- 一、内存管理策略
- 二、虚拟内存管理
- 三、参考资料
- 鲍鱼科技课件
- 26王道考研书
- 四、总结
- 1、内存管理概念
- 2、虚拟内存管理
- 3、物理内存分配设计的评价维度
- 4、分页管理方式和分段管理方式的比较
一、内存管理策略
- 文章链接: 点击跳转
二、虚拟内存管理
- 文章链接: 点击跳转
三、参考资料
鲍鱼科技课件
b站免费王道课后题讲解:
网课全程班:
26王道考研书
四、总结
1、内存管理概念
- 为什么要进行内存管理?
- 在单道系统阶段,一个系统在一个时间段内只执行一个程序,内存的分配极其简单,即仅分配给当前运行的进程。
- 引入多道程序后,进程之间共享的不仅仅是处理机,还有主存储器。然而,共享主存会形成一些特殊的挑战。若不对内存进行管理,则容易导致内存数据的混乱,以至于影响进程的并发执行。因此,为了更好地支持多道程序并发执行,必须进行内存管理。
- 多级页表解决了什么问题?又会带来什么问题?
- 多级页表解决了当逻辑地址空间过大时,页表的长度会大大增加的问题。而采用多级页表时,一次访盘需要多次访问内存甚至磁盘,会大大增加一次访存的时间。
- 无论是段式管理、页式管理还是段页式管理,读者都只需要掌握下面三个关键问题:① 逻辑地址结构,② 页(段)表项结构,③ 寻址过程。搞清楚这三个问题,就相当于搞清楚了上面几种存储管理方式。再次提醒读者区分逻辑地址结构和表项结构。
2、虚拟内存管理
- 为什么要引入虚拟内存?
- 内存管理策略提到过,多道程序并发执行不仅使进程之间共享了处理器,同时还共享了主存。然而,随着对处理器需求的增长,进程的执行速度会以某种合理平滑的方式慢下来。
- 但是,若同时运行的进程太多,则需要很多的内存,当一个程序没有内存空间可用时,那么它甚至无法运行。所以,在物理上扩展内存相对有限的条件下,应尝试以一些其他可行的方式在逻辑上扩充内存。
- 虚拟内存(虚存)空间的大小由什么因素决定?
- 虚拟内存空间的大小只与虚拟地址的位数有关。
- 假设虚拟地址为 32 位,存储器按字节编址,则虚存空间的大小为 4GB(232B)4GB(2^{32}B)4GB(232B)。若虚存空间的大小超过 4GB,则 32 位的地址将无法访问全部虚存空间,也就是说 4GB 以后的空间会被浪费,相当于没有一样,没有任何意义。
- 虚拟内存是怎么解决问题的?会带来什么问题?
- 虚拟内存使用外存上的空间来扩充内存空间,通过一定的换入/换出,使得整个系统在逻辑上能够使用一个远远超出其物理内存大小的内存容量。因为虚拟内存技术调换页面时需要访问外存,会导致平均访存时间增加,若使用了不合适的替换算法,则会大大降低系统性能。
- 本节学习了 4 种页面置换算法,要将它们与处理机调度算法区分开。当然,这些调度法之间也是有联系的,它们都有一个共同点,即通过一定的准则决定资源的分配对象。在处理机调度算法中这些准则比较多,有优先级、响应比、时间片等,而在页面调度算法中就比较简单,即是否被用到过或近段时间内是否经常使用。在操作系统中,几乎每类资源都会有相关的调度算法,读者通过将这些调度算法作为线索,可将整个操作系统的课程连成一个整体。
3、物理内存分配设计的评价维度
-
物理内存分配设计有两个重要的评价维度。
-
一方面,物理内存分配器要追求更高的内存资源利用率,即尽可能减少资源浪费。这里先介绍内存碎片(fragmentation)的概念,内存碎片指的是无法被利用的内存,其直接导致内存资源利用率的下降。如何减少内存碎片是内存分配器设计者最关心的一个问题。内存碎片又被分为外部碎片(external fragmentation)和内部碎片(internal fragmentation)。
- 如果分配器设计未能很好地考虑避免外部碎片,外部碎片通常会在多次分配和回收之后产生。如下图所示,在多次分配和回收之后,物理内存上空闲的部分处于离散分布的状态。
- 此时,有可能出现一个内存分配请求、其请求的内存大小大于任意一个单独的空闲部分,却小于空闲部分的总和;
- 换句说,系统中存在足够的空闲内存,却无法满足这个请求。此时,这些无法使用的空闲物理内存被称为外部碎片。
- 一种直观的解决外部碎片的方式是,将物理内存以固定大小(能够满足最大分配请求)划分成若干块,然后每次用一个块服务一个分配请求。如此一来,外部碎片的问题看似迎刃而解,但是又可能会导致严重的内部碎片问题。
- 如下图所示,当分配的内存空间大于实际分配请求所需要的空间时,就会造成部分内存的浪费,这种被浪费的内存空间即为内部碎片。
- 如果分配器设计未能很好地考虑避免外部碎片,外部碎片通常会在多次分配和回收之后产生。如下图所示,在多次分配和回收之后,物理内存上空闲的部分处于离散分布的状态。
-
另一方面,物理内存分配器要追求更好的性能,主要是尽可能降低分配延迟和节约 CPU 资源。通过精密的算法细致地解决碎片问题固然能够有效提高内存资源利用率,但却可能会带来高昂的性能开销,比如会增加分配器完成分配请求的时间,或者由于过多后台处理而导致占用更多的 CPU 资源。
-
因此,一个优秀的物理内存分配器需要兼顾内存资源利用率和性能。
4、分页管理方式和分段管理方式的比较
分页管理方式和分段管理方式在很多地方是相似的,比如在内存中都是不连续的、都有地址变换机构来进行地址映射等。但两者也存在许多区别,如下图所示。