王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理

news2024/12/25 1:31:31

目录

内存管理概念

内存的基础知识

什么是内存?有何作用?

补充知识:几个常用的数量单位

指令的工作原理 

三种装入方式

绝对装入 

可重定位装入 

动态重定位 

从写程序到程序运行 

链接的三种方式 

总结

内存管理的概念

内存保护 

内存空间的扩充 

覆盖技术

交换技术

内存空间的分配与回收 

连续分配管理方式

 单一连续分配

固定分区分配 

动态分区分配

总结

动态分区分配算法

首次适应算法 

最佳适应算法 

最坏适应算法

邻近适应算法 

总结 

非连续分配管理方式

基本分页存储管理的基本概念 

基本地址变换机构 

具有快表的地址变换机构

两级页表 

基本分段存储管理

分段、分页管理的对比

段页式管理方式 

虚拟内存管理

传统存储管理方式的特征、缺点

虚拟内存的定义和特征 

如何实现虚拟内存技术

请求分页管理方式 

请求页表 

缺页中断

地址转换流程 

页面置换算法

最佳置换算法 (OPT)

先进先出置换算法 (FIFO) 

最近最久未使用置换算法(LRU)

时钟置换算法 (CLOCK)

改进型CLOCK算法 

页面分配策略

驻留集

页面分配、置换策略 

页面调动时机策略

页面调动位置策略 

抖动(颠簸)现象 

内存映射文件 

传统文件访问方式


内存管理概念

内存的基础知识

什么是内存?有何作用?

程序执行前需要先放到内存中才能被CPU处理——缓和CPU与硬盘之间的速度矛盾

补充知识:几个常用的数量单位

指令的工作原理 

三种装入方式

绝对装入 

可重定位装入 
动态重定位 

从写程序到程序运行 

链接的三种方式 

  • 静态链接:程序运行之前,将库函数连接成一个完整的可执行程序
  • 装入时动态链接:将用户源程序编译后得到目标模块,装入内存时,采用边装入边链接的方式
  • 运行时动态链接:对于某些目标模块的链接,程序需要时才会对其链接 ,便于修改和更新,便于实现对目标模块的共享

总结 


内存管理的概念

内存保护 


内存空间的扩充 

覆盖技术


交换技术

注意: PCB 会常驻内存,不会被换出外存 

  • 应该在外存(磁盘)的什么位置保存被换出的进程?
    • 具有对换功能的操作系统中,通常把磁盘空间分为文件区对换区两部分。文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式: 对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式(学过文件管理章节后即可理解)。总之,对换区的I/O速度比文件区的更快。
  • 什么时候应该交换?
    • 交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;如果缺页率明显下降,就可以暂停换出。
  • 应该换出哪些进程?
    • 可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间


内存空间的分配与回收 

连续分配管理方式

        连续分配:指为用户进程分配的必须是一个连续的内存空间

 单一连续分配

固定分区分配 

动态分区分配

动态分区分配没有内部碎片,但是有外部碎片。

  • 内部碎片,分配给某进程的内存区域中,如果有些部分没有用上。
  • 外部碎片,是指内存中的某些空闲分区由于太小而难以利用。

如果内存中空闲空间的总和本来可以满足某进程的要求但由于进程需要的是一整块连续的内存空间,因此这些“碎片”不能满足进程的需求可以通过紧凑(拼凑,Compaction) 技术来解决外部碎片。 


总结


动态分区分配算法

在动态分区分配方式中,当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?

首次适应算法 

算法思想:  每次都从低地址开始查找,找到第一个能满足大小的空闲分区。

如何实现:  空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

最佳适应算法 

算法思想:  由于动态分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,可以尽可能多地留下大片的空闲区即,优先使用更小的空闲区。
如何实现:  空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

最坏适应算法

又称 最大适应算法 (Largest Fit)

算法思想:  为了解决最佳适应算法的问题-一即留下太多难以利用的小碎片,可以在每次分配时优先使用最大的连续空闲区,这样分配后剩余的空闲区就不会太小,更方便使用。

如何实现: 空闲分区按容量递减次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

邻近适应算法 

算法思想:  首次适应算法每次都从链头开始查找的。这可能会导致低地址部分出现很多小的空闲分区,而每次分配查找时,都要经过这些分区,因此也增加了查找的开销。如果每次都从上次查找结束的位置开始检索,就能解决上述问题。

如何实现:  空闲分区以地址递增的顺序排列 (可排成一个循环链表)。每次分配内存时从上次查找结束的位置开始查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

总结 


非连续分配管理方式

为用户进程分配的可以是一些分散的内存空间

基本分页存储管理的基本概念 

页表

        记录了页面实际存放的内存块之间的映射关系

        为了便于在内存中找到进程的每个页面对应的物理块,系统为每个进程建立一张页表,记录页面在内存中对应的物理块号,页表一般放在内存中

页表项:

        页号+物理内存中的块号(不要与地址结构搞混)页表项的物理内存块号+地址结构中的页内偏移=物理地址

总结


基本地址变换机构 

用于实现逻辑地址到物理地址转换的一组硬件机构

总结


具有快表的地址变换机构

局部性原理

TLB和普通Cache 的区别--TLB 中只有表项的副本,而普通Cache 中可能会有其他各种数据的副本 


两级页表 
  • 根据页号查询页表的方法: K 号页对应的页表项存放位置 = 页表始址 + K*4要在所有的页表项都连续存放的基础上才能用这种方法找到页表项
  • 根据局部性原理可知,很多时候,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此没有必要让整个页表都常驻内存。

由上述分析可得到单级页表的问题如下: 

  • 页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框.
  • 没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。


基本分段存储管理

与“分页”最大的区别就是--离散分配时所分配地址空间的基本单位不同


分段、分页管理的对比

分段比分页更容易实现信息的共享和保护 

不能被修改的代码称为纯代码或可重入代码 (不属于临界资源),这样的代码是可以共享的。可修改的代码是不能共享的(比如,有一个代码段中有很多变量,各进程并发地同时访问可能造成数据不一致)


段页式管理方式 


虚拟内存管理

传统存储管理方式的特征、缺点

虚拟内存的定义和特征 

  • 多次性:作业在运行时,分多次调入内存运行
  • 对换性:作业不必一直驻留内存,允许作业在运行过程中进行换进换出
  • 虚拟性:从逻辑上扩充内存容量,使用户看到的内存容量远大于实际的内存容量

如何实现虚拟内存技术

        虚拟内存技术,允许一个作业分多次调入内存。如果采用连续分配方式,会不方便实现。因此,虚拟内存的实现需要建立在离散分配的内存管理方式基础上。

主要思想:在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存

  • 操作系统要提供请求调页 (或请求调段) 功能
  • 操作系统要提供页面置换 或段置换) 的功能


请求分页管理方式 

请求页表 

缺页中断

地址转换流程 


页面置换算法

最佳置换算法 (OPT)

        最佳置换算法 (OPT,Optimal):  每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。

最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面。操作系统无法提前预判页面访问序列。因此,最佳置换算法是无法实现的。 


先进先出置换算法 (FIFO) 

        先进先出置换算法(FIFO): 每次选择淘汰的页面是最早进入内存的页面

        实现方法:把调入内存的页面根据调入的先后顺序排成一个队列,需要换出页面时选择队头页面即可

        队列的最大长度取决于系统为进程分配了多少个内存块。


最近最久未使用置换算法(LRU)

最近最久未使用置换算法 (LRU,least recently used): 每次淘汰的页面是最近最久未使用的页面

实现方法: 赋予每个页面对应的页表项中,用访问字段记录该页面自上次被访问以来所经历的时间t.当需要淘汰一个页面时,选择现有页面中t值最大的,即最近最久未使用的页面。


时钟置换算法 (CLOCK)


改进型CLOCK算法 


页面分配策略

驻留集

        驻留集:  指请求分页存储管理中给进程分配的物理块的集合。
在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。

考虑一个极端情况,若某进程共有100个页面,则该进程的驻留大小为100时进程可以全部放入内存,运行期间不可能再发生决页。若驻留集大小为1,则进程运行期间必定会极频繁地缺页


页面分配、置换策略 
  • 固定分配:操作系统为每个进程分配一组固定数目的物理块,在进程运行期间不再改变。即,驻留集大小不变
  • 可变分配:先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。即,驻留集大小可变 
  • 局部置换:发生缺页时只能选进程自己的物理块进行置换。
  • 全局置换:可以将操作系统保留的空闲物理块分配给缺页进程,也可以将别的进程持有的物理块置换到外存,再分配给缺页进程。


页面调动时机策略
  • 预调页策略:根据局部性原理,一次调入若工个相邻的页面可能比一次调入一个页面更高效。但如果提前调入的页面中大多数都没被访问过,则又是低效的。因此可以预测不久之后可能访问到的页面,将它们预先调入内存,但目前预测成功率只有50%左右。故这种策略主要用于进程的首次调入由程序员指出应该先调入哪些部分。(运行前调入)
  • 请求调页策略:进程在运行期间发现缺页时才将所缺页面调入内存。由这种策略调入的页面一定会被访问到,但由于每次只能调入一页,而每次调页都要磁盘I/0操作,因此I/0开销较大。(运行时调入)

页面调动位置策略 


抖动(颠簸)现象 


内存映射文件 

内存映射文件一一操作系统向上层程序员提供的功能(系统调用)

  • 方便程序员访问文件数据
  • 方便多个进程共享同一个文件
传统文件访问方式

 

 

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

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

相关文章

创新智能环境带来无线通信与感知的新视角

编者按:2023年是微软亚洲研究院建院25周年。25年来,微软亚洲研究院探索并实践了一种独特且有效的企业研究院的新模式,并以此为基础产出了诸多对微软公司和全球社会都有积极影响的创新成果。一直以来,微软亚洲研究院致力于创造具有…

【java零基础入门到就业】第三天:HelloWorld程序的常见问题和java环境变量的配置

1、java编写程序的常见问题 1.1、 BUG的由来 BUG的由来: "Bug"一词最初是用来形容计算机系统中的硬件故障或软件错误的。据说这个词最早出现在1947年,由于一只飞蛾飞进了哈佛大学的马克Ⅱ计算机中,导致计算机出现故障。后来&#…

仿第八区2023年app免签封装/苹果签名/分发平台系统

描述 封装应用程序直接通过访问数据来操作,直接像网页直接打开一样被访问,这与h5连接访问相同,所以封装应用程序的大部分也在网页端被h5系统封装,从而控制了网页访问手机的硬件参数和手机的权限控制。封装app基本上是以h5页面的格…

(零基础学习)Neo4j+Spring boot 自行定义属性

前置知识 1.Neo4j :属性 节点和关系都可以设置自己的属性。 属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如String,int和iint[]都是合法的。 注意 null不是一个合法的属性值。 Nulls能…

建筑模板的厚度对价格有多大影响?

建筑模板的厚度对价格有一定的影响,以下是关于建筑模板厚度对价格影响的一些信息: 1. 厚度与价格的关系: - 建筑模板的厚度越大,通常价格也会相应增加。这是因为生产厚度较大的模板需要更多的原材料和工艺成本。 - 厚度较薄的建筑…

Virtualbox Manjaro kde虚拟机系统闪烁

过程 https://blog.csdn.net/weixin_44220976/article/details/133954801 有次更新了Manjaro虚拟机系统之后发生闪烁 • 不操作不闪烁 • 鼠标光标悬浮到桌面的文件、文件夹上,所有文件、文件夹图标消失,变成: 只有悬浮位置有个半透明的框 …

股票价格预测 | Python实现基于LSTM的股票预测模型(keras)

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 今儿举一个案例,围绕 LSTM(Long Short-Term Memory)神经网络的原理,展示如何使用Python和深度学习库Keras构建LSTM模型,以及如何使用这个模型来预测时间序列数据。 以股票价格预测为例,这是LSTM在金…

LABVIEW 安装教程(超详细)

目录 LabVIEW2017(32/64位)下载地址: 一 .简介 二.安装步骤: LabVIEW2017(32/64位)下载地址: 链接: https://pan.baidu.com/s/1eSGB_3ygLNeWpnmGAoSwcQ 密码:gjrk …

DataX-web安装部署和使用

DataX-web的环境准备 MySQL (5.5) 必选,对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库 JDK (1.8.0_xxx) 必选 DataX 必选 Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在do…

图书教材经营小程序商城的作用是什么

线下图书教材店非常多,在以前线下店是学生、学者们经常去的场所,每到周末人流不绝,但随着互联网发展以及客户消费升级,如今线下书店人流量非常少,除了头部品牌可以支撑外,中小品牌几乎很难生存。 同时加之…

智慧公厕:打造无人值守的公共厕所运营管理服务

智慧公厕是在"厕所革命"的背景下产生的物联网应用解决方案,结合物联网高精尖技术的中期科技智慧厕所,是智慧城市公共厕所应用解决方案的代表。它提供了一系列监测应用功能,包括监测公厕内部人体活动状态、人体存在状态、空气质量情…

【论文笔记】Far3D: Expanding the Horizon for Surround-view 3D Object Detection

原文链接:https://arxiv.org/pdf/2308.09616.pdf 1. 引言 目前的环视图图像3D目标检测方法分为基于密集BEV的方法和基于稀疏查询的方法。前者需要较高的计算量,难以扩展到长距离检测。后者全局固定的查询不能适应动态场景,通常会丢失远距离…

进阶课1——声纹识别

声纹识别是一种生物识别技术,也称为说话人识别,包括说话人辨认和说话人确认两种技术。该技术通过将声信号转换成电信号,再使用计算机进行识别,不同的任务和应用会使用不同的声纹识别技术,例如在缩小刑侦范围时可能需要…

如何使用积分系统增强用户留存?会员积分体系建设方式介绍

为什么别人家的积分系统能够成功吸引并维护10万个忠实粉丝,而你的积分系统却鲜有人问津?本文将详细解释积分系统如何与会员体系相互关联,以激发会员的复购和升级行为。 想要做好用户留存,互动交流是至关重要的一部分。企业需要灵…

Python--练习:使用while循环求1~100之间,所有偶数的和(涉及if判断是不是偶数)

案例:求1~100之间,所有偶数的和 思考: 先套用原有基础模式,之后再思考其他的。 其实就是在之前文章 Python--练习:使用while循环求1..100的和-CSDN博客 的基础上,再判断如果获取到里面的全部偶数&#…

前端时间分片渲染

在经典的面试题中&#xff1a;”如果后端返回了十万条数据要你插入到页面中&#xff0c;你会怎么处理&#xff1f;” 除了像 useVirtualList 这样的虚拟列表来处理外&#xff0c;我们还可以通过 时间分片 来处理 通过 setTimeout 直接上一个例子&#xff1a; <!--* Auth…

苹果遭双重暴击,品控翻车致iPhone15价格暴跌千元,比iPhone14更便宜

苹果近期可谓屋漏偏逢连夜雨&#xff0c;上市销售才不到一个月&#xff0c;就在中国市场被国产5G手机击败&#xff0c;日前第三方渠道对iPhone15的报价也持续下跌&#xff0c;其中iPhone15plus更是下跌超千元&#xff0c;显示出iPhone15似乎真的卖不动了。 据第三方渠道的报价显…

面试官:如何理解CDN?说说实现原理?

一、是什么 CDN (全称 Content Delivery Network)&#xff0c;即内容分发网络 构建在现有网络基础之上的智能虚拟网络&#xff0c;依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容分发、调度等功能模块&#xff0c;使用户就近获取所需内容&#xff0c;降…

51系列—基于51单片机的电子万年历设计

本文主要介绍基于51单片机的电子万年历设计 前言 电子万年历是单片机系统的一个应用&#xff0c;由硬件和软件相配合使用。硬件由主控器、时钟电路、温度检测电路、显示电路、键盘接口5个模块组成。主控模块用AT89C52、时钟电路用时钟芯片DS1302、显示模块用LED数码管、温度检…

【CGSSA-BP预测】基于混合混沌-高斯变异-麻雀算法优化BP神经网络回归预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…