当前位置: 首页 > article >正文

操作系统学习(九)——存储系统

一、存储系统

在操作系统中,存储系统(Storage System) 是计算机系统的核心组成部分之一,它负责数据的存储、组织、管理和访问
它不仅包括物理设备(如内存、硬盘),还包括操作系统提供的逻辑抽象(如文件系统、缓存、虚拟内存等)。

存储系统通常划分为以下层次:
在这里插入图片描述

在存储层次中,层次越高(越靠近CPU),存储介质的访问速度越快,价格也越高,相对所配置的存储容量也越小

操作系统需要协调这些存储层次,在速度和成本之间做平衡

二、存储系统的主要组成

组成部分描述
主存(RAM)运行时存储程序和数据,是 CPU 的直接工作区
磁盘(Disk)永久性数据存储设备,如 HDDSSD
文件系统管理磁盘数据的结构,如 FAT32NTFSext4
缓存(Cache)提高内存/磁盘访问速度的高速缓冲区
虚拟内存(VM)使用磁盘空间模拟主存,支持更大的程序运行
页表与地址映射实现虚拟地址 → 物理地址的转换

三、主存(RAM)管理

在操作系统中,主存(RAM)管理是核心功能之一,它决定了多个程序如何高效、安全地共享内存资源。主存管理直接关系到系统的性能、稳定性和多任务处理能力。

主存可被视为一个线性字节数组,但在 OS 中常分为如下部分:

+-----------------------+
| 操作系统核心(内核区)|
+-----------------------+
| 应用程序1             |
+-----------------------+
| 应用程序2             |
+-----------------------+
| 空闲空间(碎片)       |
+-----------------------+

主存(RAM)管理的目标:

目标描述
多道程序支持允许多个程序并发驻留内存
内存保护防止程序互相干扰
内存利用率高减少内存碎片,提高空间利用率
快速访问支持快速的地址转换和访问
虚拟内存支持程序可使用比物理内存更大的空间

操作系统需要负责对主存进行分配与回收,主要策略包括:

1. 连续分配管理

  • 将内存分成若干连续块
  • 程序一次性分配一整块。

常见算法:

算法说明
首次适应从头开始找第一个能装下的空块
最佳适应找最小但足够的空块(减少浪费)
最差适应找最大的空块(减少碎片)

缺点:易产生外部碎片

2. 分页管理(Paging)

  • 将物理内存划分为固定大小的页帧(Page Frame)
  • 将程序划分为同样大小的页(Page)
  • 使用页表记录虚拟页到物理页的映射。

虚拟地址结构:

虚拟地址 = 页号 + 页内偏移

优点:

  • 消除外部碎片
  • 支持虚拟内存

3. 分段管理(Segmentation)

  • 把程序分成逻辑段:如代码段、数据段、栈段;
  • 每段独立映射到内存。

优点:

  • 支持逻辑结构清晰的内存管理;
  • 易于保护和共享

4. 段页式管理(Segmentation + Paging)

  • 将每个段再分页
  • 结合分页的空间利用率和分段的逻辑清晰性。

内存碎片问题:

类型说明
外部碎片连续分配造成的内存空洞
内部碎片分配的内存比程序实际使用大

四、虚拟内存(Virtual Memory)

虚拟内存是操作系统提供的一种抽象,允许程序使用比实际内存更大的地址空间

1. 实现机制

  • 将进程虚拟地址空间划分为页(Page);
  • 利用页表(Page Table)记录虚拟页与物理页的映射
  • 不常用页存入磁盘(Swap 区)。

2. 页置换算法(换出旧页)

算法描述
FIFO最早进入内存的页先被换出
LRU最近最少使用的页被换出
Clock改进型的近似 LRU 算法
Optimal理论最优(实际难以实现)

五、缓存机制(Cache)

缓存是位于处理器和主存之间的高速存储区域,用于缓冲频繁访问的数据。

1. 目标

  • 降低访问主存的频率(主存速度较慢);
  • 提高 CPU 的执行效率。

2. 缓存的层级结构(多级缓存)

现代计算机通常采用分级缓存结构

缓存级别位置容量速度特点
L1 CacheCPU 内部最小(32~64KB)非常快每个核心私有,分数据/指令
L2 CacheCPU 内部或共享中等(256KB~1MB)很快常为每核心独享
L3 Cache多核心共享较大(2~32MB)多核心共享资源
主存(RAM)外部GB级别较慢所有程序共享

通过缓存机制,数据可以提前预取、减少磁盘访问次数、提高性能

3. 缓存命中与未命中

  • 命中(Hit):请求的数据已在 Cache 中,直接返回;
  • 未命中(Miss):数据不在 Cache,需要从主存读取,代价较大。

命中率 = 命中次数 / 总访问次数

命中率越高,CPU 性能越好。

六、磁盘管理

操作系统需要对磁盘进行组织和访问控制,包含以下内容:

1. 磁盘结构管理

  • 使用逻辑块(block) 组织物理扇区;
  • 每个磁盘通常有:MBR、分区表、数据区域等。

2. 磁盘调度算法

优化磁盘访问时间:

算法描述
FCFS先来先服务
SSTF最短寻道时间优先
SCAN磁头来回扫描
C-SCAN只单向扫描,回头不服务

七、文件系统(File System)

文件系统是操作系统在磁盘上组织、命名、存储、保护和访问数据的机制。

1. 功能

  • 文件和目录管理;
  • 权限控制(读/写/执行);
  • 空间分配与释放;
  • 目录层级结构;
  • 元数据维护(文件名、大小、时间等)。

2. 常见文件系统类型

系统适用平台特点
FAT32Windows简单,兼容性好,但不支持大文件
NTFSWindows支持权限、压缩、大文件
ext3/ext4Linux稳定、支持日志
APFSmacOSApple 专用,支持快照

八、存储保护与安全

机制描述
内存保护(Memory Protection)防止一个进程访问另一个进程的内存
文件权限(如 chmod)控制用户对文件的访问
虚拟地址隔离每个进程独立地址空间
加密文件系统(EFS)对文件内容进行加密

九、存储系统面临的挑战

挑战描述
性能瓶颈磁盘和内存访问速度差距大
一致性问题断电或异常退出可能造成文件系统损坏
空间碎片化文件不断增删导致磁盘空洞
访问延迟特别是传统机械磁盘
安全性与隐私数据可能被恶意软件窃取

相关文章:

操作系统学习(九)——存储系统

一、存储系统 在操作系统中,存储系统(Storage System) 是计算机系统的核心组成部分之一,它负责数据的存储、组织、管理和访问。 它不仅包括物理设备(如内存、硬盘),还包括操作系统提供的逻辑抽…...

服务器安装软件失败或缺依赖怎么办?

服务器在安装软件时失败或提示缺少依赖,是运维中非常常见的问题。这个问题大多发生在 Linux 云服务器环境,原因和解决方法也有共性。以下是详细说明和解决建议: 🧠 一、常见原因分析 问题类型描述🔌 软件源不可用服务器…...

linux nm/objdump/readelf/addr2line命令详解

我们在开发过程中通过需要反汇编查看问题,那么我们这里使用rk3568开发板来举例nm/objdump/readelf/addr2line 分析动态库和可执行文件以及.o文件。 1,我们举例nm/objdump/readelf/addr2line解析linux 内核文件vmlinux (1),addr2…...

006网上订餐系统技术解析:打造高效便捷的餐饮服务平台

网上订餐系统技术解析:打造高效便捷的餐饮服务平台 在数字化生活方式普及的当下,网上订餐系统成为连接餐饮商家与消费者的重要桥梁。该系统以菜品分类、订单管理等模块为核心,通过前台展示与后台录入的分工协作,为管理员和会员提…...

[10-2]MPU6050简介 江协科技学习笔记(22个知识点)

1 2 3 欧拉角是描述三维空间中刚体或坐标系之间相对旋转的一种方法。它们由三个角度组成,通常表示为: • 偏航角(Yaw):绕垂直轴(通常是z轴)的旋转,表示偏航方向的变化。 • 俯仰角&a…...

基于行为分析的下一代安全防御指南

一、技术原理演进 从特征匹配到行为建模传统防火墙依赖特征库匹配(如病毒指纹),而行为分析技术通过建立用户/设备/应用的正常行为基线(基线构建误差<0.8%),利用隐马尔可夫模型检测异常。微软Az…...

Redis持久化机制详解:RDB与AOF的深度剖析

一、为什么需要持久化? Redis作为内存数据库,数据存储在易失性内存中。持久化机制解决两大核心问题: 数据安全:防止服务器宕机导致数据丢失灾难恢复:支持数据备份与快速重建 二、RDB:内存快照持久化 ▶ …...

记录一次 apt-key curl导入失败的处理方式

在配置 Kubernetes APT 仓库的过程中,我们通常会执行如下命令来添加阿里云的 GPG 公钥: curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -但这次在某台新机器上执行时,出现了访问失败的问题。具体表现为 cu…...

Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作

前言 上文我们做了在Spring Boot下对Redis的基本操作,如果频繁对Redis进行操作而写对应的方法显示使用注释更会更高效; 比如: 依之前操作对一个业务进行定入缓存需要把数据拉取到后再定入; 而今天我们可以通过注释的方式不需要额外…...

【03】完整开发腾讯云播放器SDK的UniApp官方UTS插件——优雅草上架插件市场-卓伊凡

【03】完整开发腾讯云播放器SDK的UniApp官方UTS插件——优雅草上架插件市场-卓伊凡 一、项目背景与转型原因 1.1 原定计划的变更 本系列教程最初规划是开发即构美颜SDK的UTS插件,但由于甲方公司内部战略调整,原项目被迫中止。考虑到: 技术…...

C:\Users\中文名修改为英文名

C:\Users\中文名修改为英文名 背景操作步骤 背景 买了台新电脑,初始化好不知道啥操作把自己的登录用户名改成了中文,有些安装的软件看见有中文直接就水土不服了。 操作步骤 以下称中文用户名为张三。 正常登录张三用户 进入用户管理页面修改用户名&a…...

Web 架构相关文章目录(持续更新中)

文章目录 目录结构总结 目录结构 序号标题链接1Web 架构之数据库开发规范Web 架构之数据库开发规范2Web 架构之状态码全解Web 架构之状态码全解3Web 架构之会话保持深度解析Web 架构之会话保持深度解析4Web 架构之负载均衡会话保持Web 架构之负载均衡会话保持5Web 架构之攻击应…...

Redis 安装配置和性能优化

目录 简介 一、Redis 基础概念与优势 1.1 关系型与非关系型数据库对比 1.2 Redis 核心特性 二、Redis 部署 2.1 环境准备与源码安装 2.2 服务脚本配置与启动 三、Redis 配置参数 四、Redis 命令工具与常用操作 4.1 命令行工具(redis-cli) 4.2…...

购物商城网站 Java+Vue.js+SpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块

购物商城网站 JavaVue.jsSpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块 百度云盘链接:https://pan.baidu.com/s/10W0kpwswDSmtbqYFsQmm5w 密码:68jy 摘 要 随着科学技术的飞速发展,各行各业都在…...

PostgreSQL 安全纵深防御:从权限到加密

文章目录 PostgreSQL 安全纵深防御:从权限到加密 第一章:角色与权限体系 - PostgreSQL的安全基石 1.1 角色(ROLE)的本质与演进1.2 权限模型的三层架构1.3 GRANT/REVOKE 实战精解1.4 默认权限(DEFAULT PRIVILEGES&#…...

【美团技术团队】从实际案例聊聊Java应用的GC优化

【美团技术团队】从实际案例聊聊Java应用的GC优化 1. 美团技术团队优秀文章2. 绪论 1. 美团技术团队优秀文章 Java NIO浅析 https://tech.meituan.com/2016/11/04/nio.html红黑树深入剖析及Java实现 https://tech.meituan.com/2016/12/02/redblack-tree.htmlJava 8系列之重新认…...

在word中点击zotero Add/Edit Citation没有反应的解决办法

重新安装了word插件 1.关掉word 2.进入Zotero左上角编辑-引用 3.往下滑找到Microsoft Word,点重新安装加载项...

整合swagger,以及Knife4j优化界面

因为是前后端项目&#xff0c;需要前端的参与&#xff0c;所以一个好看的接口文档非常的重要 1、引入依赖 美化插件其中自带swagger的依赖了 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter&…...

Unity | AmplifyShaderEditor插件基础(第四集:简易shader)

一、&#x1f44b;&#x1f3fb;前言 大家好&#xff0c;我是菌菌巧乐兹~本节内容主要讲一下&#xff0c;第一个用ASE的shader。 我们用通用的光照模版吧。&#xff08;universal-通用/Lit-光照&#xff09; 通用的光照模版 如果你尝试建设了&#xff0c;会发现Universal这个…...

【安全攻防与漏洞】​​量子计算对HTTPS的威胁:后量子密码学进展

⚛️ 一、量子计算对HTTPS的核心威胁 Shor算法破解非对称加密 Shor算法可高效分解大整数&#xff08;破解RSA&#xff09;和计算椭圆曲线离散对数&#xff08;破解ECC&#xff09;&#xff0c;而HTTPS依赖的TLS握手阶段依赖RSA/ECC进行密钥交换和身份验证。一旦实用化量子计算…...

linux C语言中的动态库 静态库说明

静态库 gcc -fpic -c add.c sub.c 这个命令之后会得到 add.o 于 sub.o (-c 只编译不链接) ar rcs mymath.a add.o sub.o 将编译好的文件编译成.a静态库用于调用 在使用中 gcc main.c -I../include ../lib/mymarh.a -0 mytest 需要这个函数的声明放在include文件下&#xf…...

Flash烧录速度和加载配置速度(纯FPGA ZYNQ)

在工程综合完成或者implement完成后&#xff0c;打开综合设计或者实现设计。 toots--->Edit Device Properties--->打开比特流设置 将bitstream进行压缩 上图中&#xff0c;时钟频率选择的档位有限&#xff0c;最大为66MHZ io的bus width可以设置为x1,x2,x4 vivado在设计…...

解构与重构:PLM 系统如何从管理工具进化为创新操作系统?

在智能汽车、工业物联网等新兴领域的冲击下&#xff0c;传统产品生命周期管理&#xff08;PLM&#xff09;系统正在经历前所未有的范式转换。当某头部车企因 ECU 软件与硬件模具版本失配导致 10 万辆智能电车召回&#xff0c;损失高达 6 亿美元时&#xff0c;这场危机不仅暴露了…...

Redis:介绍和认识,通用命令,数据类型和内部编码,单线程模型

介绍和认识 Redis是一个基于内存的&#xff0c;高性能的&#xff0c;支持许多数据类型的NoSQL数据库&#xff0c;可以持久化&#xff0c;也支持分布式。 在许多的互联网产品中&#xff0c;对于数据库的访问速度要求很高&#xff0c;例如Mysql数据库无法满足其要求&#xff0c…...

N2语法 強調、限定

1&#xff0c;&#xff5e;限りでは  接続&#xff1a;认知类动词  意味&#xff1a;据…所…  例文&#xff1a;     私の知る限りでは、彼は悪い人ではありません。&#xff08;据我所知&#xff0c;他不是坏人&#xff09;     私の調べた限りでは、彼は悪人では…...

OpenAI 即将推出 GPT-5:开启多模态、持续记忆对话新时代

2025年5月起&#xff0c;关于 OpenAI 新一代旗舰模型 GPT-5 的传闻不断升温。根据多方可信消息&#xff0c;OpenAI 正在积极准备 GPT-5 的正式发布&#xff0c;预计将在 2025 年夏末上线。这一代模型不仅是在规模上的升级&#xff0c;更是在能力与交互模式上的一次突破。 本文…...

《前端面试题:CSS预处理器(Sass、Less等)》

CSS预处理器深度解析&#xff1a;Sass与Less的全面指南 掌握CSS预处理器是现代前端开发的必备技能&#xff0c;也是提升开发效率的关键工具 一、为什么需要CSS预处理器&#xff1f; 在现代前端开发中&#xff0c;原生CSS的局限性日益明显&#xff1a; 缺乏编程特性&#xff0…...

嵌入式开发之STM32学习笔记day20

STM32F103C8T6 PWR电源控制 1 PWR简介 PWR&#xff08;Power Control&#xff09;电源控制单元是STM32微控制器中一个重要的组成部分&#xff0c;它负责管理系统的电源管理功能&#xff0c;以优化功耗并提高效率。PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编…...

vue-19(Vuex异步操作和变更)

异步操作和变更 异步操作和变异对于 Vuex 中的状态管理至关重要&#xff0c;尤其是在处理数据获取、API 调用或任何需要时间完成的操作时。正确处理异步操作可以确保应用程序的状态保持一致和可预测。本章将深入探讨异步操作的复杂性、它们与变异的关系以及有效管理它们的最佳…...

人工智能-Chain of Thought Prompting(思维链提示,简称CoT)

Chain of Thought Prompting&#xff08;思维链提示&#xff0c;简称CoT&#xff09; 是一种通过引导大模型生成中间推理步骤来增强其复杂问题解决能力的技术。它让模型在回答问题时&#xff0c;不仅输出最终答案&#xff0c;还展示出逐步分解问题、逻辑推理的过程。以下是大模…...