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

计算机操作系统学习(四、文件管理)

目录

一、什么是文件

1.文件的逻辑结构

(1)顺序文件

(2)索引文件

(3)索引顺序文件

(4)散列文件

2.文件的目录结构

(1)文件控制块FCB

(2)索引节点

(3)目录结构

3.文件共享

(1)硬链接

(2)软连接

4.文件保护

二、文件系统的实现

1.文件系统的层次结构

2.文件系统的实现

(1)目录的实现

三、文件分配方式

1.连续分配

2.链接分配

(1)隐式分配

(2)显示分配

3.索引分配

四、文件存储空间管理

1.空闲表法和空闲链表法

2.成组链接法

3.位示图法


一、什么是文件

1.文件的逻辑结构

文件的逻辑结构包括有结构文件和无结构文件。对于无结构文件,比如就是记事本,查询的话,只能采用穷举的方式。有结构的文件比如excel表格,查询可直接通过行列索引。

下面具体介绍有结构文件的几种类型

(1)顺序文件

数组或者链表,数组是定长的顺序文件,链表是不定长的。

(2)索引文件

引入了索引表,当查询的之后可以直接根据索引表查询,增快了查询效率。

之后索引表还可以增加和删除,这样相当于文件是变长的。

(3)索引顺序文件

索引表里面的地址对应的是一个索引表或者是顺序文件。

(4)散列文件

键值对的方式存取文件。

2.文件的目录结构

目录由三部分构成,文件控制块FCB,索引节点和目录结构

(1)文件控制块FCB

主要包括文件的基本信息:文件名,文件类型

存取控制信息:存取权限

使用信息:更改时间,创建时间等

(2)索引节点

建立一个索引表,通过文件名查询出文件存储的位置

(3)目录结构

知道当前目录下还有那些目录,一个树形结构。

3.文件共享

如何给用户增加或删除文件呢,本质上是增加或者这个用户的索引节点的条目。

(1)硬链接

每个文件都有一个计数器,这个计数器表示被几个用户共享,储存在FCB中,当这个计数器为0的时候,就会删除这个文件。

当一个文件被其他用户共享的时候,这个文件的FCB将这个文件的计数器+1.之后共享的用户的索引节点增加一条信息。

(2)软连接

软连接相当于当前用户新建一个文件,这个文件里面的信息就是共享的文件的地址。

所以这个快捷方式也会有一个索引节点条目,快捷方式文件的FCB的count=1;

4.文件保护

口令保护,加密保护,访问控制

口令保护就是给文件设置个密码,知道这个密码才能拿到文件的地址。

加密保护就是给文件使用加密算法加密,想要知道文件内容必须使用解密算法解密。

访问控制就是给每个用户文件的增删改查的权限。

二、文件系统的实现

1.文件系统的层次结构

第一,用户使用操作系统,比如windows图形化界面,可以点击文件或者目录,这是属于第一层用户调用接口

第二,用户点击一个目录之后,可以查看到目录里面的目录或者文件的相关信息,比如大小,修改时间等,其实是文件的FCB,这部分的查看属于文件目录系统。

第三、查看到文件之后,想要打开文件,需要有权限,没权限打不开,这一部分属于存取控制模块。

第四、打开文件之后,文件的内容怎么被用户 看到,实际上是将文件信息缓冲区的加载到内存中,显示到屏幕上。之后一次可能文件信息缓冲区内容少于文件内容,还要不断的加载,所以通过逻辑地址传递给物理文件系统,之后物理文件系统将数据加载到文件信息缓冲区。

第五、物理文件系统,接收到逻辑文件系统的逻辑地址,之后转化成物理地址,读取磁盘中的信息,并把信息传递给文件信息缓冲区。

2.文件系统的实现

(1)目录的实现

目录包括FCB,目录结构,索引结点。但是这些内容也需要有存储的地址,

使用哈希算法,输入文件名,输出对应的索引数组的索引号,之后查找到该目录文件的内容梭子啊地址。

三、文件分配方式

磁盘的读写有个最小大小,一般是4K。磁盘就是按照这4K,之后有很多索引,每个索引占领4K

1.连续分配

将文件的内容按照顺序在磁盘上。记录文件内容的位置的时候,只需要记录起始块号和长度。

缺点是由于连续存储,容容易产生磁盘碎片。比如磁盘本来剩余空间是1G的,但是这1G没有连在一起,导致没办法放下1G内容。

2.链接分配

优点是不会产生磁盘碎片,但是会占用额外的空间

(1)隐式分配

在磁盘的每个块里面,不仅记录了当前的内容,还记录了下一个块号的索引。

索引节点中储存的不再是起始块号和长度了,存储的是其实块号和结束块号。

当读取一个文件的时候,从起始块号开始,不断的找下一个块号,找到终止块号了,就算结束了。

(2)显示分配

有一个文件分配表,告诉当前块号的下一块号的索引。如果是-1,表明当前文件已经结束了。如果是-2,表明当前块号属于空闲状态。

这个文件分配表整个磁盘只有一份,藏在磁盘的固定位置,当操作系统运行的时候,自动加载到内存里面。

3.索引分配

每个文件可以通过索引节点拿到索引表的块号。

给每个文件分配一定的磁盘块号专门存这个文件的存储块号的位置。

1个块4K,可以存1024个块。也就是4MB。如果文件内容更多,需要用更多级别的索引表。

四、文件存储空间管理

磁盘分目录区和文件区,文件区存文件内容,目录区存目录内容,如FCB等。

表征空闲盘块肯定需要数据结构和存储空间,这个数据结构也存储在磁盘的某个特定位置。

1.空闲表法和空闲链表法

空闲表法直接搞出来一个空闲盘块表。每行表示一个连续的空闲盘块。包括起始块号和盘块大小。

空闲链表法。每个空闲盘块里面存储和他相邻的另外一个空闲盘块号。

也可以和空闲表结合起来。存储再加一个当前盘块连续空闲的盘块号,之后后面加上下一个空闲盘区。

2.成组链接法

从磁盘划分出一些块,这些块用来储存空闲空间的索引。

这些块每个块存储的空闲空间的数量一样,除了最后一个。

由于空闲空间很大,所以这些存储空闲空间的块很多,我称为f1,f2,f3等等。

对于f1,他的第一个数据,也就是栈底部存储了f2的数据存储的盘块。依次类推。

之后一个超级块,加载到磁盘中的特定的位置,在运行时候加载到内存中。

通过超级块,就可以找到f1的存储块号,拿到f1的空闲块。之后通过f1可以找到f2的存储块号,拿到f2的空闲块。。。。。

3.位示图法

搞一个二维矩阵,记录每个块号的free还是被占用。如果free就是0,否则是1,通过查询这个矩阵就可以看出来那些块被占用,那些块是free。


文章转载自:

http://QBv0AiVz.wmnpm.cn
http://zGf6kaiB.wmnpm.cn
http://HSurwrnW.wmnpm.cn
http://YnYS59A0.wmnpm.cn
http://dRMIReyI.wmnpm.cn
http://I8vqWzRH.wmnpm.cn
http://OcCJDGq3.wmnpm.cn
http://KlfoZxon.wmnpm.cn
http://acmdBa5B.wmnpm.cn
http://Az2eeEOa.wmnpm.cn
http://NXVagZXt.wmnpm.cn
http://zpWa4h7V.wmnpm.cn
http://Nz2lKynl.wmnpm.cn
http://upKk6NHq.wmnpm.cn
http://sXUGpCTA.wmnpm.cn
http://rY2lwKCA.wmnpm.cn
http://pETUVXlr.wmnpm.cn
http://XonV127h.wmnpm.cn
http://3RHomSMT.wmnpm.cn
http://Orw8qgzx.wmnpm.cn
http://wzR7OT1E.wmnpm.cn
http://iDNJWZCX.wmnpm.cn
http://UC0wkyH5.wmnpm.cn
http://0ec45rzW.wmnpm.cn
http://83WkeI3t.wmnpm.cn
http://KvAytbtm.wmnpm.cn
http://7RXFwkQr.wmnpm.cn
http://eMtAA5gh.wmnpm.cn
http://JerkSTgk.wmnpm.cn
http://94MGdIyB.wmnpm.cn
http://www.dtcms.com/a/384454.html

相关文章:

  • Open3D-Geometry-15:UV Maps 将2D图像投影到3D模型表面
  • 从pip到UV:新一代包管理器的高效替代方案
  • 基于Matlab的雾霾天气和夜间车牌识别系统
  • 【Unity】高性能的事件分发系统
  • BM3D 图像降噪快速算法的 MATLAB 实现
  • 【pycharm】 ubuntu24.04 搭建uv环境
  • 科普:Python 的包管理工具:uv 与 pip
  • Golang语言入门篇002_安装Golang
  • cemu运行塞尔达传说:旷野之息的闪退问题以及解决方案记录
  • 【面试之Redis篇】主从复制原理
  • MySQL 8.0 在 Ubuntu 22.04 中如何将启用方式改为mysql_native_password(密码认证)
  • 轨道交通绝缘监测—轨道交通安全的隐形防线
  • Golang 语言中的函数类型
  • 《投资-54》数字资产的形式有哪些?
  • leetcode41(对称二叉树)
  • 链表详解:(后续会更新)
  • 光谱相机在半导体缺陷检测中的应用
  • 计算机组成原理-第一章
  • 修改 Windows 10 系统更新暂停天数指南
  • Flutter系统亮度检测完全指南:MediaQuery.platformBrightnessOf() 的妙用
  • flutter鸿蒙:适配app_links插件
  • 计算机视觉(opencv)实战二十二——指纹图像中提取特征点,计算两两指纹之间的相似度
  • 如何启动档案开启对话框及浏览资料夹对话框
  • 抗菌涂层与智能诊疗:伟荣医疗重构口腔器械感控与精准治疗新范式
  • python3
  • 茉莉 X4-QZ 840M矿机参数分析:Etchash算法挖矿的高效能选择
  • iOS App 混淆与加固对比 源码混淆与ipa文件混淆的区别、iOS代码保护与应用安全场景最佳实践
  • 鸿蒙Next ArkWeb网页多媒体开发实战:从基础到高级应用
  • ActiveMQ RocketMQ RabbitMQ Kafka选型及应用场景
  • 汽车网络安全 CyberSecurity ISO/SAE 21434 测试之二