操作系统存储管理

news2024/12/24 2:20:52

目录

存储管理(1)

第一节 存储管理概述(内存管理)

一、存储体系

二、存储管理的任务 

三、地址转换 

存储管理(2)

第二节 分区管理方案

一、固定分区

二、可变分区 

三、分区管理方案的优缺点

第三节 覆盖与交换技术

一、覆盖技术

二、交换技术 

存储管理(3)

第四节 虚拟页式存储管理方案

一、虚拟存储技术

二、虚拟页式存储管理 

 三、物理内存的分配与回收

存储管理(4)

四、虚拟页式存储地址转换过程

存储管理(5)

五、虚拟页式存储管理优点缺点

六、虚拟存储管理得性能问题


存储管理(1)

第一节 存储管理概述(内存管理)

一、存储体系

 

二、存储管理的任务 

内存空间一般分为两个区域:
(1)系统区,存放操作系统常驻内存部分,用户不能占用这部分空间
(2)用户区,分配给用户使用,用于装入和存储用户程序和数据,随时变化。
存储管理的实质:用户空间管理
内存管理问题主要包括:
①内存管理方法
②内存的分配和释放算法
③虚拟存储器的管理
④控制内存和外存之间的数据流动方法
⑤地址变换技术
⑥内存数据保护和共享技术 

1.内存的分配和回收
(1)功能:①记住每个存储区域的状态,空闲与否;②实施分配,用户提出请求,分配内存;③回收,回收用户释放的区域
(2)内存分配表:①位视图表示法;②空闲页面法;③空闲块表法;
(3)内存分配方式:①静态分配:程序运行前分配内存,不允许“搬家”;②动态分配:程序运行时允许动态分配内存,且允许“搬家”。
2.存储共享
所谓存储共享是指两个或多个进程共用内存中相同区域。
包括:代码共享和数据共享。
目的:节省内存空间,提高内存利用率;通过内存共享实现进程通信。
3.存储保护
目的:为多个程序共享内存提供保障,使在内存中的各道程序,只能访问自己的区域,避免各道程序互相干扰。
方法:(1)地址越界保护;(2)权限保护;
4.“扩充”内存容量
用户在编制程序时,不应该受内存容量的限制,所以要采用一定技术来“扩充”内存的容量,使得用户得到比实际内存容量大得多得内存空间。
借助虚拟存储技术或交换技术完成,达到在逻辑上扩充内存容量得目的。 

三、地址转换 

(1)绝对地址:存储器以字节为单位编址,每个字节都有对应的地址。假定内存容量为n,则编号顺序为0,1,2,……,n-1,该地址称为物理地址或绝对地址。
(2)物理地址空间:由绝对地址对应的内存空间称为“物理地址空间”。
(3)逻辑地址:在多道程序系统中,内存中同时存储了多个用户程序,每个用户不能预先知道他的程序存储到了什么地方。为了方便,每个用户都可以认为自己的程序和数据存储在一组“0”地址开始的连续空间中,用户程序中使用的地址,称为“逻辑地址”或相对地址。
(4)逻辑地址空间:由逻辑地址对应的存储空间称为逻辑地址空间。 

1.地址重定位,当用户把程序装入内存时,存储管理为他分配的内存空间可能是从某一单元开始的一组连续的地址空间,它的起始地址不固定,即逻辑地址与物理地址经常不一致。
把逻辑地址转换为绝对地址的工作称为“地址重定位”,分为“静态重定位”和“动态重定位”两种。
2.静态重定位,内存在装入一个程序时,把程序中的指令和数据地址全部转换为绝对地址,该过程在程序运行前进行,程序运行过程中无需再转换,这种转换方式称为“静态重定位”。


3.动态重定位,内存在装入程序时,不进行地址转换,而是直接把程序装入到分配的内存中,程序在执行过程中完成地址的转换,这种转换方式称为“动态重定位”。  

存储管理(2)

第二节 分区管理方案

一、固定分区

1.基本思想,多道程序环境下,整个用户空间划分为若干个固定大小的区域,每个分区只装入一道作业(一个程序对应一个分区),分区大小可以相同,也可以不同。
2.内存分配表与分区的分配、回收
内存分配表是一张分区说明表,记录分区号、分区大小、分区起始地址及使用状态等。
分配时按照进程的内存需求,按一定策略从分区表中找到空闲分区进行分配。
回收时,将内存分区登记在分区说明表(内存分配表)中,并将其状态置为空闲状态。
示例:图6-4

二、可变分区 

1.基本思想,系统不预先划分固定分区,而是在装入程序时划分内存分区,使为程序分配的内存区的大小正好等于程序的需求量,且分区的个数是可变的。
2.紧缩技术,内存经过一段时间分配后,会存在很多很小的空间。如右边的图,假定此时有进程E(40KB),此时空闲分区都不能满足它的需求。
解决办法:紧缩(剩余空闲分区合并为新的分区分配给进程)
紧缩后


紧缩应注意的问题:
(1)增加系统开销
(2)移动是有条件,比如进程正在与设备交换信息,此时不能移动。所以,采用紧缩技术时,应该尽可能减少需要移动的进程数和信息量。
3.可变分区的实现
(1)硬件支持,两个专用控制寄存器:基址寄存器和限长寄存器。
(2)绝对地址形成,程序装入内存后,分区的起始地址和长度装入两个寄存器,程序执行后,取出指令中的逻辑地址,绝对地址=逻辑地址+基址寄存器内容
(3)地址越界,当逻辑地址>限长寄存器值时,产生“地址越界”中断。
(4)地址转换过程,图6-8所示

(5)内存分配表:两个表格 

4.可变分区的分配策略
(1)首次适应算法
思想:当接到内存申请时,查找分区说明表(内存分配表),直到找到一个大小能满足要求的空闲分区为止,将其分割并分配。
优点:简单,可以快速做出分配决定。
(2)最优适应算法
思想:当接到内存申请时,查找分区说明表(内存分配表),找到一个大小能满足要求的最小空闲分区,将其分割并分配。
优点:节约空间
缺点:形成许多小碎片
(3)最坏适应算法
思想:当接到内存申请时,查找分区说明表(内存分配表),直到找到一个大小能满足要求的最大空闲分区,将其分割并分配。
优点:碎片少
缺点:分割了大的空间,遇到较大申请,无法满足。
5.分区的回收,当用户程序执行结束后,系统回收已使用完毕的分区,将其记录在空闲区表中。假定归还的分区起始地址为S,长度为L。考虑如下四种可能性:


①回收分区与插入点的上邻空闲分区F1相邻接
②回收分区与插入点的下邻空闲分区F2相邻接
③回收分区同时与插入点的上下、两个空闲分区相邻接
④回收区既不与F1邻接,又不与F2邻接
6.分区的保护
两种方法:(1)系统设置界限寄存器,包括:上、下界寄存器或基址,限长寄存器。
(2)保护键方法 

三、分区管理方案的优缺点

优点:简单、表格不多,实现起来容易,内存额外开销小,保护措施也简单。在内存利用率方面可变分区比固定分区高。
缺点:碎片多,不能为用户提供“虚存”,每个用户程序的存储受物理存储的限制。

第三节 覆盖与交换技术

一、覆盖技术

1.概念,是指一个程序若干程序段,或几个程序的某些部分共享某一存储空间。
2.实现,把程序划分为若干个功能上相对独立的程序段,按照其自身逻辑结构使那些不会同时执行的程序段共享同一块内存区域。
3.解决的问题,从用户级彻底解决内存小装不下程序的问题。


4.优点:打破了需要将一个程序的全部信息装入内存后程序才能运行的限制,在逻辑上扩充了内存空间,从而在某种程度上实现了在小容量内存上运行较大程序的功能。
缺点:对用户不透明,增加了用户的负担。

二、交换技术 

1.交换的含义,进程从内存移到磁盘,并再移回内存。
2.适用场合,分时系统和大多数现在操作系统,是虚拟存储系统的基础。
3.主要内容:(1)换出进程的选择;(2)交换时机的确定;(3)交换空间的分配;(4)换入进程换回内存时位置的确定。

存储管理(3)

第四节 虚拟页式存储管理方案

一、虚拟存储技术

1.基本思想,利用大容量外存(如硬盘)来扩充内存,产生一个比有限的实际内存空间大的多的、逻辑的虚拟虚拟内存空间,简称虚存。
采用二级存储器方式(内存、外存)
是一种设计技巧,受外存容量的限制。
2.虚拟存储器需要硬件支持:(1)系统有容量足够大的外存;(2)系统有一定容量的内存;(3)实现虚-实转换的地址映射机制(如物理地址到逻辑地址,逻辑地址到物理地址)
3.工作原理,程序部分装入内存便可运行,其他部分需要运行时再装入内存。
4.与交换技术的区别:(1)交换技术交换单位是进程;(2)虚拟内存以页为单位进行交换
虚拟存储技术和交换技术很像,乍一看都是换入换出,把暂时不需要用的数据换出内存,将需要用到的数据换入内存,从而实现逻辑上内存的扩充。二者之间的区别是,虚拟存储技术是在一个作业运行的过程中,将作业的数据进行换入换出。王道老师举得例子就是玩儿游戏。这儿换一个游戏,比如玩儿DOTA,停留在场景A的时候,场景B的数据不需要用到,所以不放在内存,转换到场景B的时候再把场景B的数据放入内存。而交换技术是内存紧张时,换出某些进程,腾出内存空间,换入其他进程。换而言之,交换技术是在不同的进程(作业)间的,虚拟存储技术是在一个作业间的。另外提一嘴,覆盖技术也是在同一个程序或进程中的。

二、虚拟页式存储管理 

1.物理页面和页面
物理页面:将内存分成大小相等的许多区,每个区称为一个“物理页面”。(物理块、页帧、页框)
页面:将程序中的逻辑地址也进行分页,页的大小和物理页面大小一致。
2.虚拟地址(逻辑地址)组成,虚拟页号和页内地址

 

 

 三、物理内存的分配与回收

1.位示图,位示图中的每一位与一个物理块对应,其值为0/1,表示空闲/占用。


2.内存分配与回收
分配:在位示图中找出空闲页面数,如果能满足,则分配,并把相应位置为1,计算物理页面号
物理页面号=字号*字长+位号
回收:当归还物理页面时,计算归还页面在位示图中对应位置,将1改为0。
字号=[i/字长],位号=i mod 字长;[]表示取整,mod表示取余
在位示图中,字号相当于行号,位长相当于列号

 

存储管理(4)

四、虚拟页式存储地址转换过程

1.页式存储管理的地址转换
页表:记录装入内存的逻辑页面与物理页面的对应关系,是硬件进行地址转换的依据。


硬件支持:页表始址寄存器和页表长度寄存器,分别用来存储正在运行程序的页表在内存的起始地址和页表的长度。
地址转换过程:(1)在执行检索前,先将页号(页表中的页号)与页表长度进行比较,若页号(页表中的页号)大于或等于页表长度,则地址越界。


(2)若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加(即页表始址+页号*页表项长度),则找到该表项在页表中的位置,找到该页的物理页号。
(3)将有效地址的页内地址送入物理地址寄存器的块内地址字段中
(1)十进制计算:物理地址=物理页面号*块长+页内地址
(2)二进制计算:物理页面号作为绝对地址的高位地址,页内地址作为它的地址部分。
2.页表项
物理页面号:页面在内存对应的物理页面号
有效位:页面是在内存还是外存
访问位:页面在内存中是否被访问过
修改位:页面在内存中是否被修改过
保护位:页面能否读/写
3.页表:分为多级页表、散列页表、反置页表
4.转换检测缓冲区(TLB),高速缓存,也称为快表,登记了页表中的部分页号和物理页面的对应关系。
地址转换过程及原理,图6-17所示:


5.缺页异常处理
缺页异常:若在页表中发现所要访问的页面不在内存,则产生缺页异常。
处理:查看有无空闲页面,若有,把要访问的页面调入内存;若无,选择一页换出内存;再把要访问的页面调入内存。

6.页面调度策略
调入策略:决定什么时候将一个页由外村调入内存。两种方法:请求调页和预调页。
置页策略:当产生缺页时,将所调入的页面置于何处。
置换策略:如果内存已满,确定哪个页面从内存中移出,为新的页面腾出空位。三种方法:固定分配局部置换、可变分配全部置换、可变分配局部置换。

7.页面置换算法
“抖动”或“颠簸”刚被换出的页面又立即要用,把它装入内存后,不久又被换出,换出不久又被调入内存,如此反复,使调度非常频繁。这种现象称为“抖动”或“颠簸”。
算法:OPT、FIFO、第二次机会页面置换算法、CLOCK、LRU算法。
(1)OPT--理想页面置换算法,由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的,或者是在最长(未来)时间内不再被访问的页面。采用OPT算法,通常可保证获得最低得缺页率。
(2)FIFO--先进先出,总是选择最先装入内存得页面调出,或者说,把驻留在内存中时间最长得那一页调出。
(3)LRU--最近最少使用,总是选择距离现在最长时间内没有被访问过的页面先调出。
8.缺页率
缺页率计算:f=F/A(f=F除以A),F为缺页次数,A为页面总访问次数。
影响缺页率的因素:
(1)分配给程序的物理页面数
(2)页面的大小
(3)程序编制方法
(4)页面调度算法

存储管理(5)

五、虚拟页式存储管理优点缺点

优点:不要求进程的程序段和数据段在内存中连续存放,有效解决了碎片问题,提高了内存利用率。
缺点:存在页面空间的浪费,程序的最后一页往往有一部分得不到利用。

六、虚拟存储管理得性能问题

(1)颠簸问题,缺页率高引起,如果页面置换算法不合理。
“活动”页面:进程在一段时间内集中访问的一些页面,与程序的局部性有关。
如果分配给进程的物理页面少,则活动页面不能全部装入内存,可能频繁产生缺页,从而导致“颠簸”。
(2)工作集模型,采用工作集模型可以解决颠簸问题
解决方法:操作系统为每一个进程保持一个工作集,并为该进程提供与工作集大小相等的物理页面数,这一过程可动态调整。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Web的足球青训俱乐部管理后台系统的设计与开发

目录 前言 一、技术栈 二、系统功能介绍 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统…

安果清理大师-不用的时候我真的不给你推荐这种软件

下载地址:安果移动 视频演示:安果清理大师-不用的时候我真的不给你推荐这种软件_哔哩哔哩_bilibili 全能手机助手:四大功能,全面呵护您的手机!☆ 在如今的数字时代,手机已经成为我们生活中不可或缺 的伴侣…

1795_ChibiOS网络书籍阅读_实时系统的一些概念

全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 不同的OS在介绍自己的机理的时候都有自己的模型或者抽象概念,ChibiOS也不例外。这里的几个概念需要做一个基本的理解: 1. 进…

如何使用Selenium进行自动化测试

前言 对于很多刚入门的测试新手来说,大家都将自动化测试作为自己职业发展的一个主要阶段。可是,在成为一名合格的自动化测试工程师之前,我们不仅要掌握相应的理论知识,还要进行大量的实践,积累足够的经验,…

RGB格式

Qt视频播放器实现(目录) RGB的使用场景 目前,数字信号源(直播现场的数字相机采集的原始画面)和显示设备(手机屏幕、笔记本屏幕、个人电脑显示器屏幕)使用的基本上都是RGB格式。 三原色 RGB是…

【51单片机】6-静态和动态控制数码管

1.什么是数码管 1.几方面看数码管 1. 外观 2.作用 数码管是显示器件,用来显示数字的 3.分类 单个(1位),连排(2位,4位,8位) 2.工作原理 1.亮灭原理 其实是内部的照明LED 2.显示数字 原理&…

速码!!BGP最全学习笔记:BGP概述

一、BGP概述 BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP-4…

【一人之下】杀了七个男童,只为修炼邪术!肖哥这一战可以封神!

Hello,小伙伴们,我是小郑继续为大家深度解析一人之下国漫。 在一人之下中,老肖是临时工里战力数一数二的存在,也是十佬之一解空大师的弟弟,平常看起来像一个热心肠的大哥,但却嗜好杀人,常挂在嘴边的一句话就…

基于微信小程序食谱大全系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言用户微信小程序端的主要功能有:管理员的主要功能有:具体实现截图详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考论文参考源码获取 前言 💗博主介绍:✌…

解决typescript报错=》不能将类型“undefined”分配给类型“boolean”

报错如下: 然后看看isSearch的类型定义: isSearch的定义是可选属性,但是TypeScript 中将一个参数标记为可选时,它的默认值将是 undefined。可选参数表示你可以选择性地提供该参数,如果不提供,那么它将默认为…

python随手小练1

题目: 使用python做一个简单的英雄联盟商城登录界面 具体操作: print("英雄联盟商城登录界面") print("~ * "*15 "~") #找其规律 a "1、用户登录" b "2、新用户注册" c "3、退出系统&quo…

实验室仪器应该如何清洗?

梵英超声(fanyingsonic)实验室超声波清洗机 实验室中常见的玻璃器皿如量杯、试管、滴定管、移液管、量瓶等等,是化学实验操作的核心组成部分。但这些玻璃器皿在使用过程中很容易沾上各种污渍,如油渍、血渍、水垢、锈渍等等,如果用完之后没有及…

xx-job凌晨一点清除oss指定文件夹以及指定保留时间的文件

ps:文件下面还有文件夹,这代码不能完全保证是否遍历到所有该文件夹以及子文件夹的文件,因为不可能一点点上到服务器去数,只是代码上做到应该不会出现重复的文件夹以及出现死循环 public static void main(String[] args) {long st…

在Idea中调试本地Docker

报错: Error running myApp: Unable to open debugger port (localhost:5005): java.net.SocketException "Connection reset" 原因: Docker配置里边没有配置环境变量JAVA_TOOL_OPTIONS. 解决: 在Docker下加入运行时的环境变量JAVA…

解决0-1背包问题(方案一):二维dp数组

>>确定dp数组以及下标的含义 dp[i][j]表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少 (1)不放物品i 例如:当背包的容量是1kg,此时物品1和物品2都是无法放进去的。而物品0…

【前端】常用属性及实例

1. 盒子水平垂直居中 1&#xff09;flex布局实现水平垂直居中 <style>.box {background: yellow;width: 200px;height: 200px;/* 设置flex布局 */display: flex;/* 水平居中 */justify-content: center;/* 垂直居中 */align-items: center;}.col {margin: 1px;backgroun…

使用 queueMicrotask 创建微任务!

之前我们想尽一切办法来创建一个自定义的微任务&#xff0c;如 Promise.then、MutationObserver&#xff08;浏览器环境中的 API&#xff0c;用于监视 DOM 变动&#xff09;、async/await、process.nextTick&#xff08;仅Node.js支持&#xff0c;本质来说它不是事件循环的一部…

8+单基因+细胞凋亡+WGCNA+单细胞+实验验证

今天给同学们分享一篇单基因细胞凋亡WGCNA实验验证的生信文章“RASGRP2 is a potential immune-related biomarker and regulates mitochondrial-dependent apoptosis in lung adenocarcinoma”&#xff0c;这篇文章于2023年2月3日发表在Front Immunol期刊上&#xff0c;影响因…

JDK21新特性

JDK 21 于 2023 年 9 月 19 日正式发布。Oracle 提供GPL 下的生产就绪二进制文件&#xff1b;其他供应商的二进制文件也将很快推出。 Spring Boot 3.x 版本最低支持的 JDK 版本为 JDK 17&#xff0c;也就是说如果你还想用 JDK8的话&#xff0c;那能用的最高 Spring Boot 版本为…

按文件名称轻松管理文件!让文件管理更加高效!

文件管理是日常工作和生活中必不可少的一环&#xff0c;然而&#xff0c;面对众多的文件&#xff0c;如何快速找到所需文件&#xff0c;是一个具有挑战性的任务。现在&#xff0c;我们为您提供一种智能归类的解决方案&#xff0c;让您能够按文件名称轻松管理文件&#xff0c;让…