<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 请求式分页存储管理

  1. 数据结构 数据结构——页表(PMT)
    在请求分页系统中的页表,时在分页系统的页表的基础上增加如下几项:
    页号:

物理块号
状态位
访问字段
修改位
外存地址

状态位:用于指出该页是否已调入内存
访问字段:用于记录本页在一段时间内别访问的次数,提供给置换机构参考
修改位:表示该页在调入内存后是否被修改过,由于内存中的每一页都在外存上保留一份副本,因此,若未被修改,在置换该页时就不需要将该页写回到外存上;否则,必须将该页重写到外存上,以保证外存中所保留的始终是最新的副本。
外存始址:指出该页在外存上的地址,供调入该页时使用。

2.页面淘汰算法
👉优化 or 最佳淘汰算法(OPT):淘汰将永不再使用的页面,或最长时间内不再访问的页面。(无法实现,仅作为标准)
👉最近最就不用算法(LRU:Least Recently Used Replacement):当需要置换一页面时,选择在最近一段时间内最久不用地页面予以淘汰。
👉近似 LRU 算法——NRU(not Recently Used)
👉FIFO 算法:淘汰最先进入内存的页面,即在内存中驻留时间最长的页面。
缺点:
a. 内存利用率不高——由于该算法基于 Cpu 按线性顺序访问的地址空间的,而许多时候,cpu 不是按线性顺序访问地址空间,如执行循环时,那些在内存中停留时间长最长的页往往是经常被访问的页。
b. 会出现异常现象——Belady 现象:一般来说,内存帧越多,一个作业发生缺页的次数就越少。(如果给一个进程分配了它所需要的全部页面,则不会发生缺页现象)但 Belady 举出了反例,例如使用 FIFO 算法时,在未给进程或作业分配足它所需要的页面时,有时会发生分配的页面数越多,缺页次数反而增加的奇怪现象。这种现象称为 Belady 现象。

在这里插入图片描述

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

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

相关文章

用友NC 漏洞

漏洞描述 用友ERP-NC 存在目录遍历漏洞,攻击者可以通过目录遍历获取敏感文件信息。 fofa: poc:/NCFindWeb?serviceIPreAlertConfigService&filename 在url处拼接poc后可以看到该站点的目录和文件 访问某个文件 /NCFindWeb?serviceIPr…

一文搞懂微前端

一. 微前端的背景和动机 单页应用 单页应用往往是一个庞大的前端项目,由一个团队或多个团队共同开发,使用同一套技术栈,打包成一个整体,部署在一个域名下 随着 Web 应用的功能越来越丰富和复杂,单页应用不得不面临以下…

QMLfor python pyside6

QML QML是一种用于创建用户界面的声明性语言,它是Qt生态系统中的一部分。QML使用JavaScript语言和其独特的语法来定义用户界面组件,使得开发人员可以轻松地创建现代化、漂亮而又响应迅速的应用程序。 QML是基于QtQuick技术构建的,QtQuick是…

【JavaScript】3.4 JavaScript在现代前端开发中的应用

文章目录 1. 用户交互2. 动态内容3. 前端路由4. API 请求总结 JavaScript 是现代前端开发的核心。无论是交互效果,还是复杂的前端应用,JavaScript 都发挥着关键作用。在本章节中,我们将探讨 JavaScript 在现代前端开发中的应用,包…

上门服务系统|东郊到家软件提供高效服务的科技支柱

预约上门服务系统的崛起改变了传统服务行业的格局。用户不再需要亲自前往实体店面,而是通过几次点击就能享受到各类服务。这背后离不开预约上门服务系统的智能化和高效性,而源码正是这个系统的灵魂所在。下面小编就给大家介绍下上门服务系统开发优势。 1…

Gavin Wood:财库保守主义偏离了初心,应探索 Fellowship 等更有效的资金部署机制

波卡创始人 Gavin Wood 博士最近接受了 The Kusamarian 的采访,分享了他的过往经历、对治理的看法,还聊到了 AI、以太坊、女巫攻击、财库等话题。本文整理自 PolkaWorld 对专访编译的部分内容,主要包含了 Gavin 对治理、财库提案、生态资金分…

人工智能_机器学习056_拉格朗日乘子法原理推导_公式由来详解_原理详解---人工智能工作笔记0096

https://blog.csdn.net/Soft_Po/article/details/118332454 这里有老师的一篇文章介绍拉格朗日乘子法的原理推导 结合老师的这篇文章我们来看一下详细的推导过程 可以看到上一节我们说,一个有条件的,函数,可以转换为一个,无条件的函数, 根据拉格朗日乘子法,可以创建出一个等…

uc_09_创建新进程 exec() system()

1 什么是创建新进程(夺舍) 在前面文章中,我们学习了fork()函数用来创建子进程。 子进程是父进程的副本,复制父进程除代码段以外的其他数据,代码段数据和父进程共享。 子进程的PID与父进程不同: 而创建新进程则不同。 与fork()不同…

docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor

docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor 文章目录 docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbordocker-compose私有镜像仓库harbor搭建镜像推送到私有仓库harbor docker-compose D…

论坛自动多播放源采集源码

论坛自动多播放源采集源码是一种用于自动抓取论坛中的多个视频播放源的程序源代码。它可以自动搜索并采集论坛中的多个视频播放源,帮助用户快速找到所需的视频资源。该源码可以帮助用户节省时间和精力,提高视频资源的获取效率。 演示 地 址:…

2023年小美赛认证杯A题太阳黑子预测(Sunspot Forecasting)思路模型代码解析

2023年小美赛认证杯A题:太阳黑子预测(Sunspot Forecasting) 【请电脑打开本文链接,扫描下方名片中二维码,获取更多资料】 一、问题重述 太阳黑子是太阳光球上的现象,呈暂时性斑点,比周围区域…

2023年中国金融科技研究报告

第一章 行业概况 1.1 定义 金融科技(FinTech, Financial Technology)代表了金融和技术的交汇。这一领域虽然处于发展的初期阶段,但已经展现出深远的影响力。金融科技的业务模式多样,涵盖了从传统金融服务的数字化转型到新兴技术…

python中的序列类型

文章目录 字符串列表元组由元组构成的列表 字符串 字符串是编程语言中的一种基本数据类型,用于表示一串字符序列。在Python中,字符串是不可变的,也就是说一旦字符串被创建,就无法修改其中的字符。 Python中的字符串可以用单引号…

索尼mxf覆盖部分恢复案例(索尼PMW-580)

索尼mxf覆盖部分恢复案例(索尼PMW-580) 索尼的摄像机型号是比较繁多的,高端系列基本上是以mxf文件为主,这一类案例之前处理不少,今天我们看一个索尼pmw-580摄像机删除后又覆盖的恢复案例。 故障存储:64G SD卡/Exfat文件系统 故障现象: 拍…

【开发规范】前端开发中引用文件的方式

1. 介绍 在前端开发中,使用别名引用文件和使用相对路径引用文件是两种不同的方式,它们通常用于引用模块、组件或资源文件。这两种方式的区别主要在于它们的含义和用途。 2. 使用别名引用文件 符号通常是一种别名,表示项目的根路径或者某个特…

Kettle 浅入浅出

前言 最近又要迭代客户定制化的数据处理系统了。提到数据处理,不禁想到了以前使用过的 ETL 处理工具 Kettle。本文将对 Kettle 做一些简单的介绍。 Kettle 介绍 在介绍 Kettle 前先了解下什么是 ETL,ETL 是 Extract-Transform-Load 的缩写&#xff0c…

Django回顾1

目录 1.c/s架构 2.b/s架构 3.基于socket写一个web应用 main.py index.html 4.手写web框架 main.py login.html time.html user_list.html user_list_new 二.HTTP协议 1.什么是HTTP协议 2.HTTP协议的作用 3.HTTP版本及区别 4.HTTP协议的特点 5.HTTP请求协议 常…

腹泻的原因,种类,风险因素,如何预防

谷禾健康 腹泻是常见的健康问题,相信绝大多数人在生活中都曾遭受过腹泻的困扰。 根据2016年柳叶刀期刊统计,慢性腹泻影响全世界 3%-20% 的成年人。全球每年有17亿儿童腹泻病例,腹泻是五岁以下儿童死亡的第五大原因,每年约有52.5万…

P1 什么是链表 C语言简单易懂

目录 前言 01 什么是链表 02 数组的特点 03 数组的缺点 3.1 删除数组其中一个元素 3.2 数组增加某个节点 04 链表 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《 C 》✨✨✨ 🔥 推荐专栏2: 《 Linux C应用编程(概念…

如何在Ubuntu上清理缓存和垃圾文件

随着时间的推移,Ubuntu系统上可能会积累大量的缓存和垃圾文件,占据宝贵的磁盘空间,同时也可能影响系统性能。为了确保系统保持高效运行并释放磁盘空间,我们可以定期执行清理操作。在本文中,我们将介绍一些常见的清理步…