操作系统(3)- 存储管理

存储管理的主要模式

逻辑地址(相对地址):用户编程所使用的地址空间,从0开始编号,有两种形式:
①一维逻辑地址(地址)
②二维逻辑地址(段号:段内地址)
段式程序设计:把一个程序设计成多段,代码段,数据段,堆栈段等等,用户可以自己应用段覆盖技术扩充内存空间使用量(这是程序设计技术,不是OS存储管理的功能)
物理地址(绝对地址):即程序执行所使用的地址空间,处理器执行命令时按照物理地址进行
主存储器的复用: 多道程序设计需要复用主存
①按分区复用:主存划分为多个固定/可变尺寸的分区,一个程序/程序段占用一个分区
②按照页架复用:主存划分为多个固定大小的页架,一个程序/程序段占用多个页架
存储管理的基本模式

存储管理的基本模式
①单连续存储管理:一维逻辑地址空间的程序占用一个主存固定分区或者可变分区;
②段式存储管理:段式二维逻辑地址空间的程序占用多个主存可变分区;
③页式存储管理:一维逻辑地址空间的程序占用多个主存页架区;
④段页式存储管理:段式二维逻辑地址空间的程序占用多个主存页架区。

存储管理模式示意图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200719151116195.png?x-oss-process=image/w在这里插入图片描述

存储管理的功能

地址转换:又称重定位,即把逻辑地址转换为绝对地址
静态重定位:在程序装入内存时进行地址转换,由装入程序执行
动态重定位:在cpu执行过程时进行地址转换,从效率出发,依赖硬件地址转换机构

主存储器空间分配与去配
在这里插入图片描述
主存储器空间的共享
在这里插入图片描述
存储保护:为避免主存中的多个进程相互干扰,必须对主存中的程序和数据进行保护
①私有主存区的信息:可读可写;
②公共区的共享信息:根据授权;
③非本进程信息:不可读写。
这一功能需要软硬件协同完成,不允许则会
产生地址保护异常
,由os进行相应的处理
主存储器空间的扩充
存储扩充:把磁盘作为主存扩充,只把部分进程或者进程的部分装入内存,这一工作需要软硬件协作完成
①对换技术:把部分不运行的进程调出
对换进程决定对换,硬件机构调入
②虚拟技术:只调入进程的部分内容
访问到不在主存的地址时,发出虚拟地址异常,os将其调入,重新执行命令

虚拟存储器概念

主存容量的限制带来很多局限:如用户编写程序必须考虑主存容量的限制,多道程序设计的道数受到限制
虚拟存储器的基本思想:存储管理把进程全部信息放在辅存,执行时先将其中一部分装入主存,以后根据执行行为随用随调入
如果主存中没有空余的空间了,存储管理器需要根据执行行为把主存中暂时不用的信息调出到辅存中
虚拟存储器的实现思路:需要建立与自动管理两个地址空间
①(辅存)虚拟地址空间:容纳进程装入
②(主存)实际地址空间:承载进程的执行
对于用户而言,计算机系统具有了一个容量大得多的主存空间,即虚拟存储器,这是一种地址空间扩展技术,通常意义上对用户编程是透明的,除非用户需要进行高性能的程序设计才考虑虚拟存储器,多数情况下不用考虑是否在虚拟存储上运行。

存储管理的硬件支撑

存储器的组织层次
在这里插入图片描述
存储管理涉及到的存储对象:存储管理是OS管理主存的软件部分,为了获得更好的处理性能,部分主存程序与数据(特别是关键数据)被调入Cache,存储管理需要对其进行管理,甚至包括对联想存储器的管理。
为了获得更大的虚拟地址空间,存储管理需要对存放在硬盘、固态硬盘、甚至网络上的虚拟存储文件进行管理。

高速缓存存储器(Cache)
Cache是介于CPU和主存储器间的高速小容量存储器,由静态存储芯片SRAM组成,容量较小但比主存DRAM技术更加昂贵和快速,接近CPU的速度。
组成部件:高速存储器、联想存储器(根据内容进行寻址的存储器)、地址转换部件、替换逻辑(通过联想存储器建立目录表以实现快速地址转换,命中时直接访问cache,未命中时从内存读取放入cache)等

cache的成本分级:L1.L2,L3三个级别
在这里插入图片描述

单连续分区存储管理

含义:每个进程占用一个物理上完全连续的存储空间(区域),分为:
①单用户连续分区存储管理:适用于单用户单任务操作系统,如DOS,
在这里插入图片描述
②固定分区存储管理:支持多个分区,分区数量、大小固定,可采用静态/动态重定位
缺点:存储管理不够灵活,既不适用大尺寸程序,又存在内存零头,有浪费。
在这里插入图片描述
在这里插入图片描述

③可变分区存储管理
根据实际实际内存需求动态划分分区,并允许分区个数可变。

可变分区存储管理

根据进程的内存需求动态划分分区,分区个数是随机的
可变分区方式的主存分配表:已分配区表和未分配区表,采用链表
分配算法:
①最先适应分配算法
②临近适应分配算法
③最优适应分配算法
④最坏适应分配算法
地址转换与存储保护
可变分区的内存零头:固定分区方式会产生内存内零头,可变分区方式也会随着进程的内存分配,产生一些小的不可用内存分区,成为内存外零头。任何适配算法都不可避免产生外零头。
移动技术(程序浮动技术):需要动态重定位,移动分区以解决内存外零头问题

页式存储管理的基本原理

把主存划分为多个大小相等的页架,程序大小受到页架尺寸大小的影响,页架不需要连续。
逻辑地址:页号和单元号,物理地址:页架号和单元号。
位示图:记录主存分配情况,建立进程页表维护主存逻辑的完整性

页的共享:页式存储管理允许多个进程共享程序和数据,不同的进程可以使用不同的页号共享数据页,不同进程使用相同页号共享代码页。

页式存储管理的地址转换

页表存放在主存:每次地址转换必须访问两次主存
①按页号读出页表中相应的页架号
②按计算的绝对地址进行读写
致使存取的速度降低,解决方法:利用cache存放部分页架

页式存储管理的快表:为提高地址转换速度,设置页表专用的高速存储器,用来存放页表的一部分,即快表,存放在高速存储器中的页表部分,包含页号和页架号。
这种高速存储器是联想存储器,即按照内容寻址,而不是按地址访问。

引入快表后的地址转换代价:

基于快表的地址转换流程:
①按逻辑地址中的页号查快表
②若该页已在快表中,则由页架号和单元号形成绝对地址
③若该页不在快表中,则再查主存页表形成绝对地址,同时将该页登记到快表中
④当快表填满后,又要登记新页时,则在快表中按一定策略淘汰一个旧登记项

多道程序环境下的进程表
进程表中登记了每个进程的页表;
进程占有处理器运行时,其页表起始地址长度送入页表控制寄存器

页式虚拟存储管理(现代OS主流)

基本思想:把进程全部页面装入虚拟存储器,执行时先把部分页面装入实际内存,然后根据执行行为,动态调入不在主存的页,同时进行必要的页面调出。现代OS主流存储管理技术

请求页式存储管理:首次只把进程的第一页装入主存

页式虚拟存储管理的页表:
每页的虚拟地址,实际地址;主存驻留标志、写回标志、保护标志、引用标志、可移动标志
实现:
①cpu处理地址,若页驻留,则获得块号形成绝对地址;不存在,则cpu发出缺页中断
②OS处理缺页中断
若有页架空闲,则根据辅存地址调入页,更新页表与快表;若无空闲页架,则淘汰页,调出已修改页,调入页,更新页表与快表。
在这里插入图片描述
在这里插入图片描述

页面调度

当主存空间已满,而又需要装入新页时,页式虚拟存储管理必须按照一定的算法把已在主存的一些页调出去,选择淘汰页的工作称为页面调度。选择淘汰页的算法称为页面调度算法

抖动颠簸:页面调度算法设计不当导致,刚被淘汰的页面立即又要调入,并反复进行。

评价指标:缺页中断率
概念表述:假定进程P共n页,系统分配的页架数m个;P运行时成功访问次数为S,访问失败次数为F,总访问次数为A,则缺页中断率定义为
f=F/A
缺页中断率是衡量存储管理性能和用户编程水平的重要依据

影响缺页中断率的因素:
①可用页架数越多,则缺页中断率越低;
②页面尺寸越大,则缺页中断率越低;
③用户编程时,大数据量对缺页中断率影响也很大。
页面调度算法
①OPT页面调度算法(Belady算法)
(1)先进先出FIFO页面调度算法:总是淘汰最先调入主存的那一页,或者说主存驻留时间最长的那一页(常驻的除外),模拟的是程序执行的顺序性,有一定合理性
(2)最近最少用LRU调度算法:淘汰最近一段时间较久没有被访问的那一页,即那些刚刚被使用过的页面,可能马上还要被使用到。(设计优先队列工作量大)
(3)最不常用LFU页面调度算法:淘汰最近一段时间访问次数较少的页面,对OPT的模拟比LRU要好(设置访问计数)。
(4)时钟CLOCK页面调度算法:采用循环队列机制构造页面队列,形成一个类似于钟表的环形表。队列指针相当于钟表上的表针,指向可能淘汰的页面,使用页引用标志位。
工作流程:
a.页面调入主存时,其引用标志位置1;
b.访问主存页面时,其引用标志位置1;
c.淘汰页面时,从指针当前指向的页面开始扫描循环队列:
遇到引用标志位是1的页面,其引用标志位清0,并跳过;
遇到引用标志位是0的页面,淘汰该页,指针推进一步;

反置页表

内存管理单元(MMU):cpu管理虚拟/物理存储器的控制线路,把虚拟地址映射为物理地址,并提供存储保护,必要时确定淘汰页面。
反置页表IPT:MMU使用的数据结构
反置页表的基本设计思想:
针对内存的每一个页架建立一个页表,按照块号排序,表项包括
①正在访问的进程标识:使用该页的进程号(页号和进程标识符结合起来标志一个特定进程的虚拟地址空间的一页)
②页号:虚拟地址的页号
③标志位:有效、引用、修改、保护和锁定等标志信息
④链指针:哈希链
用于完成内存页架到访问进程页号的对应,即物理地址到逻辑地址的转换

基于反置页表的地址转换过程:
①MMU通过哈希表把进程标识和虚页号转换成一个哈希值,指向IPT的一个表目
②MMU遍历哈希链找到所需的虚页号,该项的索引就是页架号,通过拼接位移便可以生成物理地址;
③若遍历整个反置页表但没有找到匹配的页表项,说明该页不在内存,产生缺页中断,请求OS调入
在这里插入图片描述

段式存储管理

每个程序可由若干段组成,每段都可以从“0”开始编址(二维),段内的地址是连续的
分段存储器的逻辑地址由两部分组成:
段号,单元号
这两者是用户自己设计(与页式不同)
基本思想:
①段式存储管理基于可变分区存储管理实现,一个进程要占用多个分区;
②硬件需要增加一组用户可见的段地址寄存器(代码段,数据段,堆栈段,附加段),供地址转换使用;
③存储管理需要增加设置一个段表,每个段占用一个段表项,包括:段始址、段限长,以及存储保护、可移动、可扩充等标志位

段的共享:通过不同进程段表的项,指向同一个段基址来实现
对共享段的信息必须进行保护,如规定只能读出不能写入,不满足保护条件则产生保护中断。
在这里插入图片描述

在这里插入图片描述

段式虚拟存储管理

基本思想:
把进程所有分段都存储在辅存中,进程运行时先把当前需要的一段或者几段装入主存,在执行过程中访问到不在主存的段时,再把他们动态装入。
段式虚拟存储管理中段的调进调出是由OS自动实现的,对用户透明。段覆盖技术不同,这是用户自己控制的主存扩充技术,OS不感知。

段表扩充:
在这里插入图片描述

在这里插入图片描述

段页式存储管理

基本思想:段式存储管理可以基于页式存储管理实现;
每一段不必占用连续的存储空间,可以存放在不连续的主存页架中;
能够扩充为段页式虚拟存储管理;
装入部分段,或者装入段中的部分页面
在这里插入图片描述
1111述
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值