第3章 内存管理

王道学习

考纲内容

(一)内存管理基础
           内存管理概念:逻辑地址与物理地址空间,地址变换,内存共享,内存保护,内存分配与回收
           连续分配管理方式;页式管理;段式管理;段页式管理
(二)虚拟内存管理
           虚拟内存基本概念;请求页式管理;页框分配;页置换算法
           内存映射文件(Memory-Mapped Files);虚拟存储器性能的影响因素及改进方式

复习提示

        内存管理和进程管理是操作系统的核心内容,需要重点复习。本章围绕分页机制展开,通过分页管理方式在物理内存大小的基础上提高内存的利用率,再进一步引入请求分页管理方式,实现虚拟内存,使内存脱离物理大小的限制,从而提高处理器的利用率。

3.1 内存管理概念

在这里插入图片描述

3.1.1 内存管理的基本原理和要求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

        内存管理的主要功能有:
         - 内存空间的分配与回收。由操作系统负责空间的分配和管理,记录内存的空闲空间、内存的分配情况,并回收已结束进程所占用的内存空间。
         - 地址转换。由于程序的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,将逻辑地址转换成相应的物理地址。
         - 内存空间的扩充。利用虚拟存储技术从逻辑上扩充内存。
         - 内存共享。指允许多个进程范文内存的 同一部分。例如,多个合作进程可能需要访问同一块数据,因此必须支持对内存共享区域进行受控访问。
         - 存储保护。保证各个进程在各自的存储空间内运行,互不干扰。

        在进行具体的内存管理之前,需要了解进程运行的基本原理和要求。

        1、程序的链接与装入
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

        当将一个装入模块装入内存时,有以下三种装入方式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

        2、逻辑地址与物理地址
在这里插入图片描述
        3、进程的内存映像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

        4、内存保护
        确保每个进程都有一个单独的内存空间。内存分配前,需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响。内存保护可采取两种方法:
在这里插入图片描述
在这里插入图片描述
        5、内存共享
在这里插入图片描述
        6、内存分配与回收
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.2 连续分配管理方式

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.3 基本分页存储管理

基本分页管理介绍

        固定分区会产生内部碎片,动态分区会产生外部碎片,这两种技术对内存的利用率都比较低。我们希望内存的使用能尽量避免碎片的产生,这就引入了分页的思想:将内存空间分为若干固定大小(如4KB)的分区,称为页框、页帧或物理块。进程的逻辑地址空间也分为与块大小相等的若干区域,称为页或页面。操作系统以叶框为单位为各个进程分配内存空间。
        从形式上看,分页的方法像是分区相等的固定分区技术,分页管理不产生外部 。但它又有本质的不同点:块的大小相对分区要小很多,而且进程也按照块进程划分,进程运行时按块申请主存可用空间并执行。这样,进程只会在为最后一个不完整的块申请一个主存块空间时,才产生主存碎片,所以尽管会产生内部碎片,但这种碎片相对于进程来说也是很小的,每个进程平均只产生半个块大小的内部碎片(也称页内碎片)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本地址变换机构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

具有快表的地址变换机构

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

两级页表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.4 基本分段存储管理

        分页管理方式是从计算机的角度考虑设计的,目的是提高内存的利用率,提升计算机的性能。分页通过硬件机制实现,对用户来说是完全透明的。分段管理方式的提出则考虑了用户和程序员,一满足方便编程、信息保护和共享、动态增长及动态链接等多方面的需要。

在这里插入图片描述

基本分段存储介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分页和分段的对比

在这里插入图片描述

在这里插入图片描述

段的共享和保护

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.5 段页式存储管理

        分页存储管理能有效地提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于端的共享和保护。将这两种存储管理方法结合起来,便形成了段页式存储管理方式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.6 本节小结

在这里插入图片描述

3.1.7 本节试题精选

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 虚拟内存管理

在这里插入图片描述

3.2.1 虚拟内存的基本概念

在这里插入图片描述
在这里插入图片描述
        1、传统存储管理方式的特征
        3.1节讨论的各种内存管理策略都是为了同时将多个进程保存在内存中,以便允许进行多道程序设计。它们都具有以下两个共同的特征:
        1)一次性。作业必须一次性全部装入内存后,才能开始运行。这会导致两个问题:①当作业很大而不能全部被装入内存时,将是作业无法运行;②当大量作业要求运行时,由于内存不足以容纳所有作业,只能使少数作业先运行,导致多道程序并发度的下降。
        2)驻留性。作业被装入内存后,就一直驻留在内存中,其任何部分都不能被换出,直至作业运行结束。运行中的进程会因等待I/O而被堵塞,可能处于长期等待状态。
        由以上分析可知,许多在程序运行中不用或暂时不用的程序(数据)占据了大量的内存空间,而一些需要运行的作业又无法装入运行,显然浪费了宝贵的内存资源。

在这里插入图片描述
        2、局部性原理
        要真正理解虚拟内存技术的思想,首先必须了解著名的局部性原理。从广义上讲,快表、页高速缓存及虚拟内存技术都属于高速缓冲技术,这个技术所依赖的原理就是局部性原理。局部性原理既适用于程序结构,又适用于数据结构。局部性原理表现在以下两个方面:
        1)时间局部性。程序中的某条指令一旦执行,不久后该指令可能再次执行;某数据被访问后,不久后该数据可能再次被访问。产生的原因是程序中存在着大量的循环操作。
        2)空间局部性。一旦程序访问了某个存储单元,在不久后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,因为指令通常是顺序存放、顺序执行的,数据也一般是以向量、数组、表等形式簇聚存储的。
        时间局部性通过将近来使用的指令和数据保存到高速缓存中,并使用高速缓存的层次结构实现。空间局部性通常使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。虚拟内存技术实际上建立了“内存-外存”的两级存储器结构,利用局部性原理实现高速缓存。
在这里插入图片描述
        3、虚拟存储器的定义和特征
        基于局部性原理,在程序装入时,仅需将程序当前运行要用到的少数页面(或段)装入内存,而将其余部分暂留在外存,便可启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序,这个过程就是请求调页(或请求调段)功能。当内存空间不够时,由操作系统负责将内存中暂时用不到的信息换出外存,从而腾出空间存放将要调入内存的信息,这个过程就是页面置换(或段置换)功能。这样,系统好像为用户提供了一个比实际内存容量大得多的存储器,称为虚拟存储器。
        之所以将其称为虚拟存储器,是因为这种存储器实际上并不存在,只是由于系统提供了部分装入、请求调入和置换功能后(均对用户透明),给用户的感觉是好像存在一个比实际物理内存大得多的存储器。但容量大只是一种错觉,是虚的。虚拟存储器有以下三个主要特征:
        1)多次性。无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存,即只需将当前要运行的那部分程序和数据装入内存即可开始运行。以后每当运行到尚未调入的那部分程序或数据时,再将它们调入。多次性是虚拟存储器最重要的特征。
        2)对换性。在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将那些暂不使用的程序和数据从内存调至外存的对换区(换出),待以后需要时再将它们从外存调至内存(换进)。正是由于对换性,才使得虚拟存储器得以正常运行。
        3)虚拟性。从逻辑上扩充了内存的容量,使用户看到的内存容量,远大于实际容量。这是虚拟存储器所表现出的最重要特征,也是实现虚拟存储器的最重要目标。

在这里插入图片描述
在这里插入图片描述
        4、虚拟内存技术的实现
        虚拟内存技术允许将一个作业分多次调入内存。采用连续分配方式时,会使相当一部分内存都处于暂时或“永久”的空闲状态,造成内存资源的严重浪费,而且也无法从逻辑上扩大内存容量。因此虚拟内存的实现需要建立在离散分配的内存管理方式的基础上。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李贺梖梖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值