第4章 存储管理

4.1存储器的工作原理

存储管理是操作系统的重要组成部分,负责管理计算机系统的重要资源——内存储器。
存储管理包含以下功能:
1)存储分配为进程分配内存空间以便运行,完成内存区的分配和去配工作。在虚存管理系统中,由于运行程序部分处于内存,部分位于外存,故不仅涉及内存也涉及外存空间的申请与释放工作。
2)地址映射:内存被抽象成一维地址空间,使得进程认为分配给它的地址空间是一个大且连续地址所组成的数组,或者把内存抽象成二维地址空间,以支撑模块化程序设计;同时建立抽象机制支持进程使用逻辑地址来访问物理内存单元,实现地址映射
3)存储保护:系统负责隔离分配给进程的内存区,使之互不干扰免遭破坏,确保进程对存储单元的独占式使用,防止地址越界或操作越权,以实现存储保护功能。
4)存储共享:为了节省内存空间和实现进程通信,系统允许多个进程共享内存区。在这种情况下,超越隔离机制并授权进程允许共享访问,达到既能共享内存区信息又能提高内存利用率的目的
5)存储扩充:内存速度快但容量小,外存容量大却速度慢,应用程序的大小不应受到物理内存容量限制。为此,操作系统把内存和外存结合起来,形成一个容量近似外存,速度近似内存的虚拟存储器,允许用户的逻辑地址空间大于内存物理地址空间,虚存管理自动在内存和外村之间移动信息。

4.1.1存储器层次

计算机系统的存储器层次结构自上至下依次分为:寄存器,缓存,内存,磁盘,磁带。
存储介质的访问速度由下而上越来越快,容量越来越小,价格越来越高。
在这里插入图片描述
寄存器:访问速度最快但价格昂贵,用于加速存储访问速度。
高速缓存:容量较寄存器稍大,其访问速度快于内存,多用来存放内存中经常访问的信息。

4.1.2地址转换与存储保护

应用程序如何在计算机系统上执行?源程序不能直接在计算机运行,需用经过如图的三个阶段处理:程序编译程序链接程序装载
程序的编译
1.程序编译
源程序经过编译程序或汇编程序的处理生成目标代码。
2.程序链接
链接程序的作用是根据目标模块之间的调用和依赖关系,将主调模块,被调模块以及所用到的库函数装配和链接成一个完整的可装载执行模块。根据程序链接发生的时刻和链接方式,程序连接可分成以下三种方式。
1)静态链接:在程序装载到内存运行前,就已将它的目标模块及所需要的库函数进行链接和装配成一个完整的可执行程序且此后不再拆分。
2)动态链接:在程序装入内存前并未是事先进行程序各目标模块的链接,而是在程序装载时一边装载一边链接,生成一个可执行程序。
3)运行时链接:将某些目标代码或库函数的链接推迟到执行时才运行
3.程序装载
装载程序把可执行程序装入内存的方式有三种:
1)绝对装载:装载模块中的地址始终与其内存中的地址相同
2)可重定位装载:根据内存当时使用情况,决定将装载代码模块放入内存的物理位置。
3)动态运行时装载:为了提高内存利用率,将装入内存的程序可换出到磁盘上,适当时候再放入内存中,对换前后程序在内存中的位置可能不同,即允许进程的内存映像在不同时候处于不同的位置,此时模块内使用的必为相对地址。
可执行程序逻辑地址转换为物理地址的过程称为地址重定位、地址映射或地址转换,基于上述程序装入方式,可区分三种地址重定位。
1)静态地址重定位
2)动态地址重定位
3)运行时链接地址重定位

4.2连续存储管理

4.2.1固定分区存储管理

固定分区存储管理:又称静态分区模式,基本思想是:内存空间被划分成数目固定不变的分区,各分区大小不等,每个分区只装入一个作业,若干个分区中都装有作业,则他们可以并发执行,这是支持多道程序设计最简单的存储管理技术。
优点:实现简单
缺点:不方便,利用率低,浪费,内部碎片大。

4.2.2可变分区存储管理

可变分区存储管理:又称动态分区模式,按照作业大小来划分分区,但划分的时间,大小,位置都是动态的。
优点:能解决资源浪费问题,有利于多道程序设计,提高内存资源利用率
缺点:程序仍旧要全部装入内存,要有相应的硬件支持,没有足够的内存,程序就不能执行
可变分区的分配算法:
1)最先适应算法
该算法顺序查找未分配区表或链表,直至找到第一个能满足长度要求的空闲区为止,分割此区域,一部分分配给作业,另一部分仍为空闲区。
2)下次适应算法
改算法总是从未分配区的上次扫描结束处顺序查找未分配区表或链表,直至找到第一个能满足长度要求的空闲区为止,分割这个未分配区,一部分分配给作业,另一部分仍为空闲区(若有)
3)最优适应算法
该算法扫描整个未分配区表和链表,从空闲区中挑选一个能满足用户进程要求的最小分区进行分配。其实就是将未分配区按照递增顺序排列
4)最坏适应算法
该算法扫描整个未分配区表或链表,总是挑选一个最大的空闲区分配给作业使用。其优点是使剩下的空闲区不致过小,对中小型作业有利。其实就是将未分配区按照递减顺序排列
5)快速适应算法
该算法为那些经常用到的长度的空闲区设立单独的空闲区链表
2.地址转换与存储保护
对固定分区采用静态地址重定位,进程运行时使用绝对地址,可由加载程序进行地址越界检查。
对可变分区则采用动态地址重定位,进程的程序和数据的地址转换由硬件完成。

4.2.3内存不足的存储管理技术

1.移动技术
当在未分配区表中找不到足够大的空闲区来装入新进程时,可采用移动技术把已在内存中的进程分区连接到一起,使分散的空闲区汇集成碎片,也叫内存紧凑。移动分配如图所示
在这里插入图片描述
2.对换技术
如果当前一个或多个驻留进程都处于阻塞态,此时选择其中一个进程,将其暂时移出内存,腾出空间给其他进程使用;同时将磁盘中的某个进程换入内存,让其投入运行,这种互换称为对换。
3.覆盖技术
覆盖是指程序执行过程中程序的不同模块在内存中互相替代,以达到小内存执行大程序的目的,基本的实现技术是:把用户空间分成固定区和一个或多个覆盖区,把控制或不可覆盖的部分放在固定区,其余按调用结构及先后关系分段并存放在磁盘上,运行时依次调入覆盖区。

4.3分页式存储管理

4.3.1分页存储管理基本原理

分页存储管理涉及的基本概念如下:
1)页面
进程逻辑地址空间分成大小相等的区,每个区称为页面或页,页号从0开始依次编号。
2)页框
页框又称页帧,把内存物理地址空间分成大小相等的区,其大小与页面大小相等,每个区是一个页框(物理块),块号从0开始依次编号。
3)逻辑地址
与此对应,分页存储器的逻辑地址由页号和页内位移两部分组成,格式如下:
在这里插入图片描述
前者表示地址所在页面编号,后者表示页内位移
4)内存页框表
该表长度取决于内存划分的物理块数,编号可与物理块号一致,页框表的表项给出物理块使用情况:0为空闲,1为占用。有的系统还会增加保护位。
5)页表
当进程的程序和数据被分散存放在内存中后,其页面与被分配的页框为了建立联系,让逻辑地址(页面)转换为物理地址(页框),在进程装入后的物理地址空间由连续编程分散后,为保证程序正确执行,仍采用动态地址重定位技术,让程序在执行时动态地进行变换,由于程序以页面为单位存储,所以为每一个页面设立一个重定位寄存器,这些重定位寄存器的集合称为页表
页表时操作系统为进程建立的,是程序页面和内存页框的对照表,页表中的每一栏指明程序中的一个页面和分得页框之间的对应关系。使用页表的目的是把页面映射成一个页框。
当CPU获得逻辑地址后,由硬件自动按设定的页面尺寸分成两部分:页面p页内位移d,先从页表基址寄存器找到页表基地址,再用页面p作为索引查页表,得到对应的页框号,有公式:
物理地址=页框号*块长+页内位移
在这里插入图片描述

4.3.2翻译快表

翻译快表:为了提高运算速度,在硬件中设置相关联的相连存储器,用来存放进程最近访问的部分页表项,也称转换后缓缓冲或翻译快表,它是分页存储管理的重要组成部分。

4.3.3分页存储空间分配和去配

分页存储管理中,系统建立一张内存物理块表,用来记录页框状态,管理内存物理快的分配,所包含的信息有内存总块数,哪些为空闲块,哪些已分配及分配给哪个进程等,最简单的可用位示图来来记录分配情况,每位与一个页框对应,用0/1表示对应页框为空闲/已占用,用另一专门的字记录当前空闲块数,如图所示:
在这里插入图片描述

4.3.4分页存储空间页面共享和保护

1.页面共享和保护
2.运行时动态链接

4.3.5多级页表

多级页表就是指页表也需要分页
如图是一个二级页表地址转换的过程:
在这里插入图片描述

4.3.6反置页表

反置页表地址转换过程如下:
在这里插入图片描述

4.4分段存储管理

4.4.1程序分段结构

这是一种二维地址结构,程序更多采用的是分段结构

4.4.2分段式存储管理基本原理

分段存储管理把进程的逻辑地址分成多段,提供如下形式的二维逻辑地址:
在这里插入图片描述
分段方法的基本原理:
分段方法是以段为单位来划分和连续存放的,为作业的各段分配一个连续内存空间,而各段之间不一定连续。在进行存储分配时,应为进入内存的作业建立段表,各段在内存中的情况可由段表来记录,它指出内存中给分段的段号,段起始地址和段长度。撤销进程时,回收所占用的内存空间, 并清除此进程的段表。
在这里插入图片描述

4.4.3分段存储管理共享和保护

为了方便共享,系统中常建立一张段表来记录所有共享段,内容包括段名,共享计数,段长,段首址,保护位等
当多个进程共享同一段时,这些进程的段表中的表项指向共享段表中的同一表目。保护位用来对共享段实施保护,如禁写,禁修改等等。

4.4.4分段和分页比较

分段是信息的逻辑单位,由源程序的逻辑结构及含义所决定,是用户可见的,段长由用户根据需要来确定,段起始地址可从任何内存地址开始。在分段方式中,源程序(段号,段内位移)经链接装配后仍保持二维(地址)结构,引入目的是满足用户模块化程序设计的需要。
分页是信息的物理单位,与源程序的逻辑结构无关,是用户不可见的,页长由系统(硬件)确定,页面只能从页大小的整数倍地址开始。在分页方式中,源程序(页号、页内位移)经链接装配后变成一维(地址)结构,引入目的是实现离散分配并提高内存利用率。

4.5虚拟存储管理

4.5.1虚拟存储器概念

虚拟存储管理技术的基本思路:
把物理内存扩大到大容量磁盘上,把磁盘空间当作内存的一部分,进程的程序和数据通常部分放在内存中,部分放在磁盘上。程序运行时,它执行的指令或访问的数据究竟在哪儿则由存储管理负责判断,并针对情况采取相应的步骤。
虚拟存储器定义:
在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理内存容量大的多,可寻址的“内存储器”。
虚存的实质是对内存资源的时分复用
在这里插入图片描述

4.5.2请求分页虚拟存储管理

1.请求分页虚存管理的硬件支撑
操作系统的存储管理依靠低层硬件支撑来完成任务,此硬件称为存储管理部件(MMU)它提供地址转换和存储保护功能并支持虚存管理。MMU由一组集成电路芯片组成,逻辑地址作为输入,物理地址作为输出,直接送达总线,对内存单元进行寻址,其位置和功能及其内部执行过程如图所示
在这里插入图片描述
其主要功能列举如下:
1)管理硬件页表基址寄存器
2)分解逻辑地址
3)管理快表
4)访问页表
5)发出异常
6)管理特征位
2.请求分页虚存管理的基本原理
请求分页虚存管理是将进程信息存放在外存中,当他被调度投入运行时,程序和数据没有全部装进内存,仅装入当前使用页面,进程执行过程中访问到不存在的页面时,再由系统调入。
用的较多的分页虚存管理技术是请求分页,当需要执行某条指令或使用某个数据而发现它们不在内存时产生缺页异常。
缺页异常:由于发现当前访问的页面不在内存时所产生的一种特殊中断信号,是在指令执行期间产生并由系统处理的。
在这里插入图片描述
以下是MMU的地址转换过程:
在这里插入图片描述
在分页虚存系统中,由于页面在需要时是根据进程请求装入内存的,因此称为请求分页虚存管理。
其优点是:进程的程序和数据可按页分散存放在内存中,既有利于提高内存利用率,又有利于多道程序运行。
缺点是:要有一定硬件支持,要进行缺页异常处理,机器成本增加,系统开销加大,此外,页内会出现碎片,如果页面较大,则内存仍有一定损失。
3.交换区
交换区由磁盘上的一个或多个磁盘组成,系统在安装配置时就已保留好若干磁盘区作为交换区。
4.页面装入策略和清除策略
页面装入策略决定何时把页面装入内存,有两种基本策略:请页式预调式
请页式是当产生缺页异常时调入页面。
该策略的优点为确保只有被访问页面才会调人,节省内存空间;
缺点是缺页异常处理次数多,调页系统开销大。由于每次仅调用一页,磁盘I/O操作次数猛增
预调式在使用页面前预先调人内存,操作系统依据某种算法动态预测进程最可能要访问的页面。尽量做到进程要访问的页面已经调人内存,且每次调入若干页面而不是仅调入一页。
该策略的优点为减少磁盘VO启动次数,节省寻道和搜索时间;
缺点是如果所调页面大多未被使用则效率就很低,可见,预调页要建立在可靠预测的基础之上

页面清除策略与装入策略相对应,考虑何时把修改过的页面写回外存,常用方法有:请页式预约式
请页式清除是仅当一页被选中进行替换且其内容被修改过才把它写回磁盘。
预约式清除是对于所有更改过的页面,在需要替换之前把它们都写回磁盘,可成批进行。

5.页面分配策略
固定分配;在进程生命周期中保持页框数固定不变,称为固定分配
可变分配:如果进程在生命周期中所分得的页框数可变,称为可变分配
页面替换可采用两种策略:局部替换和全局替换。
全局页面替换算法:(配合可变分配)
页面替换算法的作用范围是整个系统,不考虑进程属主。
局部页面替换算法:(配合固定分配)
作用范围局限于自身
6.缺页中断率
首先,定义缺页中断率(Linux系统中,缺页中断也称缺页异常),假定进程Р共计n页,此进程分得页框m块(m ,n均为正整数,且1≤m≤n) ,即内存中最多只能容纳进程的m页。如果进程P在运行中成功访问次数为S,不成功访问次数为F ,则总的访问次数A =S+F,定义
f= F/A
称f为缺页中断率。影响缺页中断率f的因素有:
(1)内存页框数:进程所分得的块数多,缺页中断率低,反之缺页中断率就高。
(2)页面大小:页面大,缺页中断率低,否则缺页中断率就高。
(3)页面替换算法:算法的优劣影响缺页异常次数。
(4)程序特性:程序局部性要好,它对缺页中断率有很大影响。
7.全局页面替换策略(具体算法步骤见习题整理)
1)最佳页面替换算法(OPT)
2)先进先出页面替换算法(FIFO)
3)最近最少页面使用算法(LRU)
4)第二次机会页面替换算法(SCR)
5)时钟页面替换算法(Clock)
8.局部页面替换算法
1)局部最佳页面替换算法
2)工作集模型和工作集置换算法
3)模拟工作集替换算法
4)缺页频率替换算法

4.5.3请求段页式虚拟存储管理

请求段页式虚拟存储管理的基本原理
(1)虚地址以程序的逻辑结构划分成段,这是段页式存储管理的段式特征。
(2)实地址划分成位置固定、大小相等的页框(块),这是段页式存储管理的页式特征。
(3)将每一段的线性地址空间划分成与页框大小相同的页面,于是形成段页式存储管理的特征。
(4)逻辑地址分为三个部分:段号s ,段内页号p页内位移d。对于用户而言,段式虚拟地址应该由段号s和段内位移d’组成,操作系统内部自动把d’解释成两部分:段内页号p和页内位移d ,也就是说,d’=p×块长+d。
(5)请求段页式虚存管理的数据结构较为复杂,包括作业表,段表和页表三级结构。作业表中登记进入系统的所有作业及此作业段表的起始地址;段表中至少包含此段是否在内存的信息及此段页表的起始地址;页表中包含页是否在内存的信息(中断位)、对应的内存块号。
在这里插入图片描述

4.6存储管理方案及虚存页面替换算法小结

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chase__young

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

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

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

打赏作者

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

抵扣说明:

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

余额充值