操作系统之文件管理(王道)
学习了文件属性的、文件的逻辑结构、文件目录、文件的物理结构、文件的分配方式、文件的存储管理、文件系统的层次结构。
在博客末尾,附有学习日记
知识大纲(文件管理)
文件的属性:
文件名、标志符、类型、位置、大小、创建时间、....保护信息
文件内部的数据应该怎样组织起来?
多种举例方式
详细:
文件内部的数据应该怎样组织起来?
操作系统应该向上提供哪些功能?
某些复杂功能,可以由这些简答功能组合。
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. 其他文件、目录
- 作用:就是你存的各种东西 ,比如文档、视频、文件夹,都存在这儿。
- 白话:分区里的 “住户”,根目录带着你找到这些 “住户”(文件 / 文件夹 )。
三、整体逻辑 —— 硬盘咋管理文件?
- 开机时,MBR 先启动,找到对应分区的引导块,加载系统。
- 系统运行时,靠 “超级块” 了解分区整体情况,靠 “空闲空间管理” 找空位存新文件。
- 打开文件时,先从 “根目录” 进,查 “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法。口令/加密/访问保护,其中我认为访问保护的发放权限功能最绝。 | |
晚上 | ..... |