<Linux>(极简关键、省时省力)《Linux操作系统原理分析之存储管理(2)》(15)
@[TOC](《Linux操作系统原理分析之存储管理(2)》(15)
- 5 存储管理
- 5.4 分页存储管理
- 5.4.1 纯分页存储管理
- a.页(页面)和物理块(帧)
- b. 页面大小
- c. 逻辑地址结构
- 5.5 存储扩充技术
- 5.5.2 交换技术
- 5.5.3 虚拟存储技术
- 虚拟存储器的基本概念
- 5.5.4 请求式分页存储管理
5 存储管理
5.4 分页存储管理
5.4.1 纯分页存储管理
a.页(页面)和物理块(帧)
分页存储管理,把进程的地址空间划分为大小相等的片段,成为页或页面。相应地,内存空间也分成与页面相同大小的若干块,成为物理快或帧。
b. 页面大小
页面大小通常在 512k~4k,大小必须适中。Why?(四个因素刘乃琦 P84)
因为:若页面太小,一方面课时内存碎片小,减少了内存碎片的总空间,有利于提高内存的利用率;但另一方面,也会使每个进程要求较多的页面,从而引起页表过长,占用大量内存;此外,还会降低页面换进换出的效率。若选择较大的页面虽然可减少页表的长度,提高页面换进换出的效率,但却又会使页面
碎片增大。因此,页面大小应选择适中。
页面碎片: 分页方式中也会出现内存碎片,它们都分布在每个作业的最后一个页面内部,故称为页面碎片。
c. 逻辑地址结构
页面大小为 210=1K
举例:逻辑地址 5000
最多可以有 26=64 页 可转换为 4*1024+904
5.5 存储扩充技术
覆盖是指一个作业的若干程序段,或几个作业的某些部分共享某一个存储空间。
覆盖技术的实现是把程序化分为若干个功能上相对独立的程序段,按照其自身的逻辑结构使那些不会同时执行的程序段共享同一快内存区域。程序段先保存在磁盘上,当有关程序段的前一部分执行结束后把后续程序调入内存,覆盖前面的程序段。
覆盖不需要任何来自操作系统的特殊支持,可以完全由用户实现,即覆盖技术是用户程序自己附加的控制。覆盖技术要求程序员提供一个清楚的覆盖结构,即程序员要把一个程序化分成不同的程序段,并规定好他们的执行和覆盖的顺序。操作系统则根据程序员提供的覆盖结构,完成程序段之间的覆盖。
覆盖可以有编译程序提供支持:被覆盖的块是由程序员或编译程序预先(在执行前)确定的。总之,覆盖可以从用户级彻底解决内存小装不下程序的问题。
覆盖技术要求用户清楚地了解程序的结构,并制定各程序段调入内存的先后次序,以及内存中可以覆盖掉的程序段的位置等。对用户是不透明的。因此通常用于系统程序的内存管理上,因为系统软件设计者容易了解系统程序的覆盖结构。
例如:把磁盘操作系统分为两部分,一部分是操作系统中经常用到的基本部分,它们常驻内存且占用固定区域,另一部分是不太经常使用的部分,他们存放在磁盘上,当调用它们时才被调入内存覆盖区。
5.5.2 交换技术
对换——指把内存中占时不能运行的进程或暂时不用的程序和数据换出到外存上,以腾出足够的内存空间,把已具备运行条件的进程或进程所需要的程序和数据,换入内存。
如果对换是以整个进程为单位,称之为“整体对换”或“进程对换”。这种对换被广泛地应用于分时系统;如果对换是以“页”或“段”为单位,则分别称之为“页面对换”或“分段对换”,又称为“部分对换”。这种对换方法是实现请求分页及请求分段式虚拟存储器的基础。
与覆盖技术相比,交换技术的特点是交换过程对用户是透明的,但需要更多的硬件支持。
5.5.3 虚拟存储技术
解决内存不足:
a.加内存条。
b.覆盖技术、整体对换
c.虚拟技术
虚拟存储器的基本概念
1) 常规内存管理方式的特征
a. 一次性
b. 驻留性
一次性和驻留性是许多不用或暂时不用的程序(数据)占据了大量的内存空间,将使一些需要运行的作业无法装入运行。现在的问题是:一次性、驻留性是否是存储器管理所必需的。
2) 局部性原理
局限性(时间局限性、空间局限性)局部性原理(principle of locality):在一个作业运行的某一段时间,它所访问的地址空间往往只集中在某几页 它所访问的地址空间往往只集中在某几页,而不是整个程序的所有部分都具有平均的 而不是整个程序的所有部分都具有平均的访问概率,这种现象称为局部性原理 这种现象称为局部性原理。
3) 虚拟存储器的引入
当一个作业的地址空间很大时,不能别全部装入内存,但基于局部性原理,允许只将当前要运行的那部分程序和数据先装入内存便启动运行,其余部分仍驻留在外存上,在需要时,在通过调入功能和置换功能将其调入内存。
Def:虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
在多道系统中使用虚拟存储技术,不管物理内存空间多大,系统都可以为每个用户的作业提供很大的独立的虚拟空间。例如 linux 操作系统中可以为每个用户作业提供高达 4G 的虚拟空间。
虚拟存储空间中的地址称为虚拟地址。虚拟地址空间大小由虚拟地址的长度决定。由于虚拟空间比物理内存的容量大的多,所以系统提供的虚拟地址的长度大于主存的绝对地址的长度,例如在80x86 中绝对地址是 32 位的,而虚拟地址是 46 的。
4) 虚拟存储器的特征
a. 多次性
b. 对换性
c. 离散性:多次性和对换性必须建立在离散分配的基础上,故虚拟存储管理必须建立在离散分配系统基础上。
5.5.4 请求式分页存储管理
- 数据结构 数据结构——页表(PMT)
在请求分页系统中的页表,时在分页系统的页表的基础上增加如下几项:
页号:
物理块号
状态位
访问字段
修改位
外存地址
状态位:用于指出该页是否已调入内存
访问字段:用于记录本页在一段时间内别访问的次数,提供给置换机构参考
修改位:表示该页在调入内存后是否被修改过,由于内存中的每一页都在外存上保留一份副本,因此,若未被修改,在置换该页时就不需要将该页写回到外存上;否则,必须将该页重写到外存上,以保证外存中所保留的始终是最新的副本。
外存始址:指出该页在外存上的地址,供调入该页时使用。
2.页面淘汰算法
👉优化 or 最佳淘汰算法(OPT):淘汰将永不再使用的页面,或最长时间内不再访问的页面。(无法实现,仅作为标准)
👉最近最就不用算法(LRU:Least Recently Used Replacement):当需要置换一页面时,选择在最近一段时间内最久不用地页面予以淘汰。
👉近似 LRU 算法——NRU(not Recently Used)
👉FIFO 算法:淘汰最先进入内存的页面,即在内存中驻留时间最长的页面。
缺点:
a. 内存利用率不高——由于该算法基于 Cpu 按线性顺序访问的地址空间的,而许多时候,cpu 不是按线性顺序访问地址空间,如执行循环时,那些在内存中停留时间长最长的页往往是经常被访问的页。
b. 会出现异常现象——Belady 现象:一般来说,内存帧越多,一个作业发生缺页的次数就越少。(如果给一个进程分配了它所需要的全部页面,则不会发生缺页现象)但 Belady 举出了反例,例如使用 FIFO 算法时,在未给进程或作业分配足它所需要的页面时,有时会发生分配的页面数越多,缺页次数反而增加的奇怪现象。这种现象称为 Belady 现象。
相关文章:

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之存储管理(2)》(15)
[TOC](《Linux操作系统原理分析之存储管理(2)》(15) 5 存储管理5.4 分页存储管理5.4.1 纯分页存储管理a.页(页面)和物理块(帧)b. 页面大小c. 逻辑地址结构 5.5 存储扩充技术5.5.2 交…...
jdk8、jdk9中,接口的新特性
接口的老特性: 没有构造方法成员变量只能定义常量,默认三个关键字public static final只能是抽象方法,默认两个关键字public abstract 接口的新特性: jdk8 1.接口允许定义非抽象方法,需加入default关键字。为了解决…...
第一题-字符串拼接【第六届传智杯程序设计挑战赛解题分析详解复盘】(C/C++实现)
🚀 欢迎来到 ACM 算法题库专栏 🚀 在ACM算法题库专栏,热情推崇算法之美,精心整理了各类比赛题目的详细解法,包括但不限于ICPC、CCPC、蓝桥杯、LeetCode周赛、传智杯等等。无论您是刚刚踏入算法领域,还是经验丰富的竞赛选手,这里都是提升技能和知识的理想之地。 ✨ 经典…...
简谈oracle数据库的归档模式
一、oracle数据库归档模式简介 Oracle数据库归档模式是一种数据备份和恢复策略,它允许数据库记录所有数据库的更改操作(包括已提交和未提交的事务)并将其存储在归档日志中。这些归档日志可以用于在数据库发生故障时进行恢复,并提供点时间恢复(PITR)的能力。 在Oracle数…...

FLASK博客系列9——你想成为我的新用户吗?
距离上次发文好久好久了。 先说声抱歉,拖更的毛病我会改掉的。 上次我们教大家如何用后台去管理用户和新增文章,但始终都是单机操作,怎么让你的朋友也来加入你的小站呢?今天我们来为我们的网站增添一个新功能,实现用户…...

用通俗的方法讲解:大模型微调训练详细说明(附理论+实践代码)
本文内容如下 介绍了大模型训练的微调方法,包括prompt tuning、prefix tuning、LoRA、p-tuning和AdaLoRA等。 介绍了使用deepspeed和LoRA进行大模型训练的相关代码。 给出了petals的介绍,它可以将模型划分为多个块,每个用户的机器负责其中一…...

现代化工安全保障迎来巡查无人机新时代
当今现代化工企业呈现出规模不断扩大,设备逐渐趋向大型化的局面,由此导致化工安全生产面临日益严峻的挑战。然而,随着巡查无人机技术的成熟,这种新的高效手段正在提高化工安全检测的工作效率。 一、传统化工安全巡检存在弊端 化工…...
关于web前端通过js获取后端mysql数据库数据的一个方法
关于web前端通过js获取后端mysql数据库数据的一个方法 问题引入 关于html的教程很多,关于mysql的教程也很多,那么怎么让html展示mysql的数据呢? 一言以蔽之 前端通过js向后端发起一个http请求,后端响应这个请求并返回数据 实…...

如何下载IEEE出版社的Journal/Conference/Magazine的LaTeX/Word模板
当你准备撰写一篇学术论文或会议论文时,使用IEEE(电气和电子工程师协会)的LaTeX或Word模板是一种非常有效的方式,它可以帮助你确保你的文稿符合IEEE出版的要求。无论你是一名研究生生或一名资深学者,本教程将向你介绍如…...

京东数据运营-京东数据开放平台-鲸参谋10月粮油调味市场品牌店铺销售数据分析
鲸参谋监测的京东平台10月份料油调味市场销售数据已出炉! 根据鲸参谋数据显示,今年10月份,京东平台粮油调味市场的销量将近4600万,环比增长约10%,同比降低约20%;销售额将近19亿,环比增长约4%&am…...

ThermalLabel SDK for .NET 13.0.23.1113 Crack
ThermalLabel SDK for .NET 是一个 .NET 典型类库,它允许用户和开发人员创建非常创新的条码标签并将其发布在 zebra ZPL、EPL、EPSON ESC、POS 以及 Honeywell intermec 指纹中通过在 VB.NET 或 C# 上编写 .NET 纯代码来实现热敏打印机,以实现项目框架的…...

[Java学习日记]网络编程
目录 一.常见的软件架构、网络编程三要素、IP 二.利用UDP发送与接收数据 三.改聊天室 四.组播案例 五.TCP通信案例 一.常见的软件架构、网络编程三要素、IP 网络编程:在网络通信协议下,不同的计算机上运行的程序进行的数据传输 在Java中可以使用java…...

spring boot mybatis TypeHandler 看源码如何初始化及调用
目录 概述使用TypeHandler使用方式在 select | update | insert 中加入 配置文件中指定 源码分析配置文件指定Mapper 执行query如何转换 结束 概述 阅读此文 可以达到 spring boot mybatis TypeHandler 源码如何初始化及如何调用的。 spring boot 版本为 2.7.17,my…...
数据结构基础(带头节点的双向循环链表)
完整代码 DLinkList.hDLinkList.ctest.c DLinkList.h #pragma once #include <stdio.h> #include <stdlib.h> #include <assert.h>typedef int ElemType;// SList - 单链表 // DList - 双链表 // 带头节点的双向循环链表 - 最优链表结构,任意位置…...

STM32CubeMx+MATLAB Simulink点灯程序
STM32CubeMxMATLAB点灯程序 ✨要想实现在MATLAB Simulink环境下使用STM32,前提是已经搭建好MATLAB环境并且安装了必要的Simulink插件,以及对应的STM32支持包。 🌿需要准备一块所安装支持包支持的STM32开发板. 🔖具体支持包详情页…...

【深度学习】gan网络原理生成对抗网络
【深度学习】gan网络原理生成对抗网络 GAN的基本思想源自博弈论你的二人零和博弈,由一个生成器和一个判别器构成,通过对抗学习的方式训练,目的是估测数据样本的潜在分布并生成新的数据样本。 1.下载数据并对数据进行规范 transform tran…...
springboot参数汇总
multipart multipart.enabled 开启上传支持(默认:true) multipart.file-size-threshold: 大于该值的文件会被写到磁盘上 multipart.location 上传文件存放位置 multipart.max-file-size最大文件大小 multipart.max-request-size 最大请求…...

【算法刷题】Day9
文章目录 611. 有效三角形的个数题干:题解:代码: LCR 179. 查找总价格为目标值的两个商品题干:题解:代码: 1137. 第 N 个泰波那契数题干:原理:1、状态表示(dp表里面的值所…...

LangChain的函数,工具和代理(三):LangChain中轻松实现OpenAI函数调用
在我之前写的两篇博客中:OpenAI的函数调用,LangChain的表达式语言(LCEL)中介绍了如何利用openai的api来实现函数调用功能,以及在langchain中如何实现openai的函数调用功能,在这两篇博客中,我们都需要手动去创建一个结构比较复杂的函数描述变量…...

WiFi概念介绍
WiFi概念介绍 1. 什么是WLAN2. 什么是Wi-Fi3. Wi-Fi联盟4. WLAN定义范围5. WiFi协议体系6. 协议架构7. WiFi技术的发展7.1 IEEE802.117.2 802.11标准和补充 8. 术语 1. 什么是WLAN Wireless Local Area Network,采用802.11无线技术进行互连的一组计算机和相关设备。…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...