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

操作系统之文件管理(王道)

学习了文件属性的、文件的逻辑结构、文件目录、文件的物理结构、文件的分配方式、文件的存储管理、文件系统的层次结构。

在博客末尾,附有学习日记

知识大纲(文件管理)

文件的属性:

文件名、标志符、类型、位置、大小、创建时间、....保护信息

文件内部的数据应该怎样组织起来?

多种举例方式

详细:

文件内部的数据应该怎样组织起来?

操作系统应该向上提供哪些功能?

某些复杂功能,可以由这些简答功能组合。

open\close\create\delete\read\write

理解:

具体:

从上往下看,文件应如何存放在外存?

存放在磁盘块中

其他需要操作系统实现的文件管理功能

知识点回顾与重要考点

知识大纲(文件的逻辑结构)

本知识讲解呢,首相从文件的逻辑结构进行讲解(无结构文件、有结构文件)

其中,无结构文件有又被称为流式文件

有结构文件分为顺序文件(不方便增删操作)、索引文件(解决了顺序文件问题,但是浪费内存,检索时间不优)、索引顺序文件(结合了索引与顺序文件的优点。取其精华、去其糟粕)

无结构文件

有结构文件

有结构文件的逻辑结构

顺序文件

顺序文件拓展

索引文件

索引顺序文件

先吐槽下普通 “索引文件” 的缺点(为啥要搞索引顺序文件)

你想啊,要是每个小记录都单独配一个索引项(就像给每个文件单独做个超详细标签),但记录本身可能很小(比如一个记录才占 8 个字节 ),索引项却很大(比如占 32 个字节 ),这样索引的总大小会比实际内容还大好多(比如大 4 倍 ),太浪费空间啦!就像你给每片小树叶都做个巨大标签,装树叶的袋子没多大,装标签的袋子却超大,不划算~

索引顺序文件是咋解决的?(核心思路)

它把 “索引文件” 和 “顺序文件” 的思路混一起用! 不再给每个记录单独配索引项,而是 “一组记录” 共用一个索引项 。

举例子里的学生记录:按姓名开头字母分组(比如 A 开头、B 开头… ),每组就是一个小的 “顺序文件” 。索引表只需要给每个组配一个索引项,不用管组里具体多少条记录~

索引顺序文件效率计算

多级索引顺序文件

知识回顾(逻辑结构)

知识回顾(有结构文件)

知识大纲(文件目录)

首先引出一个整个文件目录,包含多个目录项(也就是文件控制块--FCB)。

一个文件对应一个FCB、一个FCB就是一个目录项,多个目录项合为一个目录

然后讲解了单级目录结构 -- 文件无法重名

两级文件目录 -- 解决了单级问题(并且安全性增加)

多级文件目录 -- 两级文件目录的拓展版本,但共享不方便

无环图目录结构 -- 解决了,文件共享问题

索引结点,对文件控制块的优化。

引入

文件控制块(TCB)
引入

作用

目录结构:
单级目录

两级目录

多级目录

无环图目录结构

索引结点(FCB的改进)

如图,两个FCB的改变,你就能看出来优化的策略。

优化的结果

知识回顾

知识大纲(文件的物理结构)

知识总览

物理分配方式--

连续分配,支持随机查询,但是会产生外部碎片,且不方便拓展

链接分配,隐式,不支持随机查询,但是高效利用存储空间。显式,既支持随机查询,又能高效利用空间,但需要在内存中创建FAT

一个磁盘只有一个FAT,而一个FAT链接着好多文件

文件块、磁盘块

文件分配方式--连续分配

图解:

总结

链接分配 - 隐/显式
隐式链接

总结

显式链接

一个磁盘只有一个FAT,而一个FAT链接着好多文件

总结

文件分配方式--索引分配

索引分配就是 -- 一个逻辑块号与物理块号一一对应。

索引方案

多层索引

混合索引

总结:

对比:

逻辑结构VS物理结构

大概看一下吧,捋清楚也蛮重要的呢

知识大大纲(文件存储空间管理)

知识大纲(文件存储管理)

存储空间的划分与初始化

储存空间管理--空闲表法

存储空间管理--空闲链表法

空闲盘块链

空闲盘区链

存储空间管理--位示图法

详细:

存储空间--成组链接法(超级块)

分配

知识回顾

知识大纲(文件的基本操作)

先从创建/删除文件--TCB的创建与删除

然后过度到打开/关闭文件 -- 创建打开文件表

在此基础上,可进行读写操作

创建文件:

删除文件:

打开文件:

拓展:

读文件:

写文件:

知识回顾:

知识大纲(文件的共享)

基于索引节点的共享方式(硬链接)

基于索引节点的共享方式(软链接)

Link类型

知识回顾:

文件保护:

口令保护

加密保护

访问保护

知识点回顾与重要考点

文件系统的层次结构

知识点回顾与重要考点

物理格式化后

文件系统在外存中的结构

一、先看最下面的 “磁盘”—— 硬盘整体

把整个硬盘想象成一块 “大蛋糕”,最开头有个 主引导记录(MBR) ,它是 “开机启动的钥匙”:

  • 里面存着 “磁盘引导程序”(负责开机时找到系统在哪儿,比如找到 C 盘里的 Windows 系统 )和 “分区表”(记录硬盘被分成了几个区,比如 C 盘、D 盘、E 盘 ,每个区多大 )。
二、再看上面的 “UNIX 文件系统”—— 分区里的结构

每个分区(比如 C 盘、D 盘 )里,文件系统会分成这些 “功能区”,协同管理文件:

1. 引导块
  • 作用:负责启动操作系统 。开机时,电脑先读 MBR ,然后 MBR 会找对应分区的 “引导块”,加载系统(比如 UNIX 系统 )。
  • 白话:相当于分区里的 “小钥匙”,配合 MBR 完成系统启动。
2. 超级块
  • 作用:记录整个分区的关键信息 ,比如分区多大、空闲空间有多少、文件咋组织的… 是分区的 “总档案”。
  • 白话:分区的 “户口本”,存着分区的基本信息,系统要干啥都得先看它。
3. 空闲空间管理(如:位示图 )
  • 作用:记录分区里哪些地方是空的(没存文件 ) ,方便系统存新文件时找空位。“位示图” 就是用二进制(0 和 1 )标记,0 表示空、1 表示被占用。
  • 白话:分区的 “空车位指示牌”,系统存文件前先看这儿,找 “空车位”(空闲空间 )停车(存文件 )。
4. i 结点区(索引结点区 )
  • 作用:给每个文件建 “档案卡” ,存文件的关键信息(比如存在哪个磁盘块、大小、权限、创建时间 )。每个文件对应一个 i 结点,找文件时先查 i 结点。
  • 白话:文件的 “身份证 + 档案”,系统靠它定位文件存在硬盘哪,以及文件的各种属性。
5. 根目录
  • 作用:分区里所有文件 / 文件夹的 “总入口” 。比如打开 C 盘看到的 “此电脑 → C 盘” ,就是根目录开始的结构,里面能找到各种文件、文件夹。
  • 白话:分区的 “大门”,从这儿进去能逛遍分区里所有文件,像进小区大门后能找到每栋楼、每户。
6. 其他文件、目录
  • 作用:就是你存的各种东西 ,比如文档、视频、文件夹,都存在这儿。
  • 白话:分区里的 “住户”,根目录带着你找到这些 “住户”(文件 / 文件夹 )。
三、整体逻辑 —— 硬盘咋管理文件?
  1. 开机时,MBR 先启动,找到对应分区的引导块,加载系统。
  2. 系统运行时,靠 “超级块” 了解分区整体情况,靠 “空闲空间管理” 找空位存新文件。
  3. 打开文件时,先从 “根目录” 进,查 “i 结点区” 的档案,找到文件存在硬盘的具体位置,然后读取内容。

简单说,这张图就是把硬盘分区拆成 “启动区、档案区、空地区、文件区” ,各司其职,让系统能顺利启动、管理文件~ 就像一个小区,MBR 是小区大门的总控制器,每个分区是小区里的楼,引导块是楼里的电梯控制器,超级块是楼的基本信息牌,空闲空间管理是楼里的空房间指示,i 结点区是每户的门牌号档案,根目录是楼里的总走廊,其他文件就是每户里的东西~

open系统调用打开文件的背后过程

知识大纲(文件系统的层次结构)

I/O设备的分类--按传输速率分类

I/O设备的分类--按信息交换的单位分类

知识回顾


借鉴:

1、王道

2、【有道云笔记】第四章文件管理 -- 我的笔记 


 学习日记:

6.17(周二)上午杂事,已经处理完毕
死锁的检测 和 解除,
运用了资源分配图与死锁检测算法
解除共有三种方式:强行剥夺、回退、撤销
下午学习内存基础、了解了指令。学习装入(静态装入、动态装入、重定位装入)
与链接(与装入类似)的三种方法。
并在内存管理中学习了内存分配(下方三种)、地址转换、内存保护
并且还了解,地址分配是由第一地址分配、固定地址分配、动态分配)三种分配
其中动态分配可由四个算法实现:
首次适应算法(综合性最好)、最佳适应算法(从小到大、需排序)、最坏适应算法(从大到小、需排序)、邻近适用算法(链表)
其中在学习,分页式储存管理时,学习到了:
页、页框、页框号....
晚上....
6.18(周三)上午学习了基本分页式储存管理,从而引出基本地址变换机构(简而言之,将逻辑地址转换成页号与页面偏移量,从而在内存中查找页表,最终计算出物理地址)。
为了加快速度,又引出了高速缓存(TLB)。
基本分页储存太浪费大块内存。所以又发明了两级页表。即可增加内存利用率,也增加了灵活性。
多级页表页也就此被发明。
下午学习了段式存储(是按照逻辑设计分段、提供内存保护)结合页式储存又演进成了段页式存储(=段表+页表)。而虚拟内存技术拓充了内存。通过请求分页管理与页面置换算法实现。
期中,请求分页管理包含:页表机制(段号、状态号、访问字段、修改位、外存地址),缺页中断、地址转换-计算题
而页面置换算法又分为(OPT-最佳、FIFO-最次但简单、LRU-最接近最优但实现代价大、CLOCK+改良版-这俩挺不错)
之后又讲了,页面分配策略(像什么工作集、驻留集、抖动现象....)其中最精彩的,还是局部分配与全局分配。一个是用自己进程的内存块,一个是全局进程调用。
晚上... ...
6.19(周四)上午操作系统共主打四大管理(处理机、存储、文件、设备..管理)而,今天初识文件管理(认识了FCB、操作系统向上提供的功能、磁盘块、文件的各个属性...)粗广学习后,(细入)又引入了文件结构(无结构-流式、有结构-又称记录型文件)。其中结构文件分为,顺序文件、索引文件、索引顺序文件(拓展)--多级索引顺序文件。跳出框架后,又学得将各个文件组织起来的方式-TCB。也就是,单级目录、两级目录、多级目录。无环图目录--方便共享文件、并方便查询、不同目录可重命名。
下午学习了连续分配,链接分配,索引分配。其中索引分配又细化为链接索引,多层索引,混合索引。而这些是为了解决文件存储在硬件问题
晚上......
6.20(周五)上午这个回顾一下,这几天学习了逻辑结构与物理结构。其中逻辑机构(由用户决定--与内存息息相关,且操作系统并不关心)-专门用来管理内存中的文件。其次就是物理结构(由操作系统决定,将文件采用什么样的方式存储在外存上。并负责逻辑块与物理块的转化)
其中,他们都包含顺序、链式、索引分配。
下午学习了文件存储管理(空闲表法、空闲链表法、位视图法、 成组链表法)
学习完储存,然后学习了文件的基础操作(从创建删除,到打开关闭,又组合出读写功能)有了存储、操作,之后又学习了软硬链接的操作--为共享文件而生,软连接为Link法。口令/加密/访问保护,其中我认为访问保护的发放权限功能最绝。
晚上.....

http://www.lryc.cn/news/575952.html

相关文章:

  • Day 10:Shell正则表达式终极指南:从“抓狂“到“掌控“的奇幻之旅
  • 设计模式 | 桥接模式
  • LeetCode 349题解 | 两个数组的交集
  • SAP PP模块与MM模块作用详解
  • 航天VR赋能,无人机总测实验舱开启高效新篇​
  • Maven生命周期与阶段扩展深度解析
  • Linux系统(信号篇)信号的保存
  • Post-Training on PAI (1):一文览尽开源强化学习框架在PAI平台的应用
  • 信息抽取数据集全景分析:分类体系、技术演进与挑战_DEEPSEEK
  • CloudFormation 实现 GitHub Actions OIDC 与 AWS ECR 的安全集成(支持多组织配置)
  • 【Linux】ghb工具
  • 论文研读2-3:多GNSS双历元纯相位定位-定位精度分析
  • 【docker】docker run参数说明
  • 便利的隐形代价?智能设备正在“偷听”你的生活——物联网时代的隐私深度危机
  • 系统学习 Android 的 进程管理、内存管理、音频管理
  • Qt 与 Halcon 联合开发六:基于海康SDK设计完整的相机类【附源码】
  • 云计算与人工智能的融合:从弹性算力到智能云的IT新革命
  • 报道称CoreWeave洽谈收购Core Scientific,后者涨超30%
  • 内测开启!看海量化回测系统V2.0版本更新,基于miniQMT的回测系统问世!
  • Android 根据包名查看已安装应用的签名
  • 分布式session解决方案
  • 【Docker】解决:构建(docker build)或重新运行容器时,丢失apt-get update问题
  • 第三十一章 MCO——PA8从主频分频输出
  • 【数据挖掘】关联规则算法学习—Apriori
  • Gitee 持续集成与交付(CI/CD)篇
  • Solidity学习 - 断言失败
  • Java:链接mysql数据库报错:CommunicationsException: Communications link failure
  • MySQL Limit数量不满足时导致查询变慢
  • 深圳中青宝互动网络股份有限公司游戏运维工程师面试题(笔
  • 使用OpenCV进行3D重建:详细指南