操作系统复习(十)
操作系统复习十文件的逻辑结构和物理结构文件的逻辑结构和物理结构是操作系统中两个核心概念简单来说逻辑结构是“用户看到的样子”物理结构是“硬盘上存储的样子”。1. 逻辑结构这是从应用程序和用户角度出发看到的文件组织方式。它只关心数据如何被读取、写入和查找不关心数据实际存放在磁盘的哪个角落。分类按组织方式流式结构无结构最常见的现代文件形式如.txt,.exe。文件是一串连续的字节流系统只记录文件的起始位置和总长度。内部有没有“记录”全靠应用程序自己去解析比如Word文档内部有复杂格式但对操作系统而言就是一堆字节。记录式结构有结构常用于数据库或批处理文件。文件由多个固定长度或可变长度的“记录”组成比如一张员工信息表每条记录包含工号、姓名。用户可以直接按“第几条记录”来存取。特点方便用户编程和访问具有高可移植性只要应用兼容换个存储介质逻辑不变。2. 物理结构这是文件在磁盘、SSD等存储介质上的实际存放方式。它由操作系统文件系统如NTFS、EXT4管理直接决定了磁盘的读写速度和存储空间的利用率。三大经典类型连续结构文件数据存放在磁盘上一块连续的物理扇区中。就像在图书馆把书一本挨一本放在同一个书架上。优点是读写速度快只需一次寻道缺点是容易产生“磁盘碎片”且文件大小很难动态扩展。链接结构链式文件数据存放在不连续的块中每个数据块里存有一个指针指向下一个块的地址。像“寻宝游戏”一样顺着线索找。优点是没有碎片文件可随意增删缺点是只能顺序读取想读最后一块得从头遍历且指针占用额外存储空间。索引结构为每个文件建立一个“索引表”如Unix的inode表中记录了文件所有数据块的物理地址。优点是即能顺序存取也能随机存取直接查表跳到第N块且没有外部碎片缺点是索引表本身需要额外占用空间。3. 两者的核心区别与联系重点维度逻辑结构物理结构视角用户/应用程序操作系统/存储硬件关注点数据的语义、记录长度、访问方式存储空间的利用率、寻道时间、I/O效率稳定性相对固定由文件格式定义随磁盘碎片整理、文件修改而随时变化控制权用户及上层软件可控由底层文件系统驱动自动管理用户无感两者的桥梁映射操作系统通过文件控制块FCB即目录项将逻辑结构与物理结构联系起来。当你双击一个文件时系统读取目录项找到物理结构的入口如索引节点号然后将磁盘上散落的物理块拼装起来还原成一个连续的字节流逻辑结构呈现给你。逻辑结构是目录和页码你希望按“第一章、第二章”阅读或者直接翻到第100页。这是你的使用习惯。物理结构是印刷版面和纸张打印机可能把第100页印在纸张的正面第101页印在另一张纸的背面甚至因为排版第1章的最后一段被挪到了第3章的末尾页上物理不连续。但装订成册时目录索引会指引你精准找到它们。文件的存取方式文件的存取方式访问方式是指操作系统如何根据用户命令定位并读写文件中的数据。它主要由文件的物理结构如何存和用户需求如何用共同决定。在操作系统中文件存取方式主要有以下三种1. 顺序存取Sequential Access这是最简单、最原始的存取方式。规则对文件中的信息按从前到后的线性顺序进行读写。就像播放录音带或看一盒胶卷必须从头开始想读取第100条记录必须跳过前99条。适用结构通常配合链接结构串联文件或连续结构使用。典型应用批处理文件、磁带备份、日志文件的追加写入。优缺点存取速度慢不能跳跃但对存储设备要求低适合一次性全读/全写。2. 直接存取随机存取 / Direct Access这是现代磁盘文件最常用的方式。规则用户可以直接指定文件的逻辑块号如“读取第N条记录”或“读取第1024字节起的1024字节”系统根据该编号直接跳转到对应位置读写无需经过前面的数据。适用结构必须配合连续结构通过首地址偏移量或索引结构查表跳转绝不能配合纯链表式的串联结构因为链表必须遍历。典型应用操作系统内核文件、数据库文件、编译器的目标代码编译器经常需要回跳修改之前的地址。优缺点读写速度快支持随意跳转但要求存储介质支持寻道如磁盘、SSD。3. 索引存取Indexed Access / 按键存取这是对直接存取的一种高级扩展建立在索引结构之上。规则用户不提供物理块号而是提供一条记录的关键字Key如学号“2024001”、姓名“张三”。系统先搜索该文件的索引表找到关键字对应的逻辑块号再通过直接存取去读取数据。适用结构专用于索引结构的文件。典型应用数据库系统、文件系统中的目录检索根据文件名找inode。优缺点非常灵活支持复杂查询但维护索引表需要额外开销。关联存取方式对应最佳的物理结构是否支持“文件大小不固定”顺序存取串联结构链接、连续结构串联支持连续不支持直接存取连续结构、索引结构连续不支持索引支持索引存取索引结构必须有索引表支持动态追加索引项即可考试万能口诀看到“磁带/顺序/从头开始”选顺序存取。看到“磁盘/跳跃/按块号”选直接存取。看到“关键字/查询/数据库”选索引存取。成组链接法好的既然支持 Mermaid 流程图我们直接用它来画这样结构更清晰、专业也符合 Markdown 的渲染习惯。我把**“静态存储结构”和“动态分配/回收流程”**分开画方便你理解和在考试中手绘简图。1. 成组链接法静态结构图超级块 磁盘分组下图展示的是内存超级块与磁盘各分组之间的映射关系假设每组容量为 3 个块实际系统通常为 100。磁盘外存存储空间内存主存组 1组 0记录组0块号记录组0块号记录组0块号组间链接指针组间链接指针组 2最后一组块 300空闲数据块块 301空闲数据块块 302结束标志s_nfree 0超级块 Superblocks_nfree 3s_free[0] 100s_free[1] 101s_free[2] 102块 100空闲数据块块 101空闲数据块块 102链指针块存放200,201,202块 200空闲数据块块 201空闲数据块块 202链指针块存放300,301,302图解说明超级块内存只记录当前正在使用的一组组0的块号。组0的最后一块块102不存用户数据而是存放下一组组1的块号列表。组1的最后一块块202又指向组2以此类推形成一条“链”。最后一组的最后一块块302存结束标志s_nfree 0表示链尾。2. 分配一个空闲块的流程申请块是否当前组只剩链指针块开始分配一个空闲块检查超级块s_nfree 0 ?从 s_free 数组尾部取一个块号分配给用户s_nfree 减 1分配结束将链指针块中存放的下一组块号列表读入超级块覆盖原 s_free 数组将该链指针块分配给用户作为数据块关键点绝大多数分配只需在内存超级块中操作仅当当前组用完时才发生一次磁盘 I/O读入下一组信息。3. 回收一个空闲块的流程释放块否是开始回收空闲块 X组是否已满?将 X 加入 s_free 尾部s_nfree 加 1结束将超级块内容写入 X重置超级块 - 只存 X关键点回收时绝大多数只需修改内存超级块仅当当前组已满时才发生一次磁盘 I/O将旧组信息“备份”到新回收的块中作为新的链指针块。

相关新闻

TGR(Signal Taxonomy)

TGR(Signal Taxonomy)

TGR(Signal Taxonomy) 文档定位 《Signal Taxonomy》是已识别Signal类型的记录文档,不是理论文档。 它的功能是:当新Signal候选出现时,提供查询、比较和归类的参照系。当谱系需要扩展时,提供扩展的路径。当…

2026/7/6 13:11:24阅读更多 →
AI生成图片文字模糊?AnyText技术原理与实战指南

AI生成图片文字模糊?AnyText技术原理与实战指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. 为什么你的AI画不出清晰中文?先看问题在哪 如果你试过用Stable Diffusion这类文生图模型生成带中文的图片&#xff0c…

2026/7/6 13:06:24阅读更多 →
【HarmonyOS学习笔记】2026-07-04 | Tabs 切换:点击流畅但滑动延迟

【HarmonyOS学习笔记】2026-07-04 | Tabs 切换:点击流畅但滑动延迟

【HarmonyOS学习笔记】2026-07-04 | Tabs 切换:点击流畅但滑动延迟date: 2026-07-04 tags: [HarmonyOS, Tabs, ArkUI, 动画回调, 状态管理, State] 1️⃣ 现象(发生了什么?) 在鸿蒙 Tabs 组件中,点击底部 Tab 栏切换页…

2026/7/6 13:06:24阅读更多 →
BsMax插件:3ds Max用户如何在Blender中无缝延续专业工作流?

BsMax插件:3ds Max用户如何在Blender中无缝延续专业工作流?

BsMax插件:3ds Max用户如何在Blender中无缝延续专业工作流? 【免费下载链接】BsMax BsMax Blender Addon (UI simulator/ Modeling/ Rigg & Animation/ Render Tools and ... 项目地址: https://gitcode.com/gh_mirrors/bs/BsMax 从3ds Max转…

2026/7/6 14:06:30阅读更多 →
PL-2303旧版芯片Windows 10驱动深度解析:让停产硬件重获新生

PL-2303旧版芯片Windows 10驱动深度解析:让停产硬件重获新生

PL-2303旧版芯片Windows 10驱动深度解析:让停产硬件重获新生 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 还在为Windows 10系统上PL-2303旧版芯片的兼容…

2026/7/6 14:06:30阅读更多 →
【RAG】RAG检索增强生成(上)——文档解析与向量数据库实战

【RAG】RAG检索增强生成(上)——文档解析与向量数据库实战

前置知识:第24篇(Prompt 工程)/ 基本的 NLP 概念 引言:大模型的"知识过时"和"幻觉" 大模型有两个天生的缺陷: 知识过时:训练数据截止日期之后的知识,模型不知道 幻觉:模型可能编造它不确定的信息 RAG(Retrieval-Augmented Generation)的解决方案…

2026/7/6 14:06:30阅读更多 →
3个技巧解决跨平台多媒体开发难题:SFML实战指南

3个技巧解决跨平台多媒体开发难题:SFML实战指南

3个技巧解决跨平台多媒体开发难题:SFML实战指南 【免费下载链接】SFML Simple and Fast Multimedia Library 项目地址: https://gitcode.com/gh_mirrors/sf/SFML 你是否曾为跨平台多媒体应用的开发而头疼?不同系统的图形API差异、音频处理兼容性、…

2026/7/6 14:06:30阅读更多 →
【Prompt工程】Prompt工程实战——成本最低的模型调优方式

【Prompt工程】Prompt工程实战——成本最低的模型调优方式

引言:Prompt 是 AI 时代的"编程语言" 不需要训练模型,不需要部署服务——写好一段 Prompt,就能让大模型完成复杂任务。 Prompt 工程是成本最低的模型优化方式。一次好的 Prompt 优化,效果可能超过微调 1000 条数据。 这一篇不讲理论,全是实战经验。 一、Zero…

2026/7/6 14:06:30阅读更多 →
软件测试入门——第二十六课(为什么要学习 Linux,要学到什么程度?)

软件测试入门——第二十六课(为什么要学习 Linux,要学到什么程度?)

引言:测试工程师的“第二战场” 在软件测试领域,我们常常专注于测试用例设计、自动化脚本编写、缺陷跟踪与管理。然而,随着技术栈的复杂化,尤其是后端服务、微服务架构、容器化部署和持续集成/持续部署(CI/CD)的普及,一个熟悉的身影正变得不可或缺——Linux 操作系统。…

2026/7/6 14:01:29阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →