[操作系统]4.文件管理

因为复习时间来不及了

还是老规矩,知识点覆盖不完全,具体内容请参考黑书,知识脉络来自王道操作系统

关于文件操作系统

1.文件系统基础

(1)文件的定义

文件时操作系统中的重要概念,是以计算机硬盘为基础载体存储在假期上的信息的集合

(2)文件的属性

文件的属性可以理解为文件的基本信息

包括名称,标识符,类型,位置,大小,保护,时间

(3)文件的基本操作

文件的基本操作是操作系统为用户提供的一些功能

比如创建文件,写文件,删除文件,文件重定位,截断文件.读文件

所有文件的复杂操作都可以被拆分为这六个步骤

2.文件的逻辑结构(*)

文件的逻辑结构指的是以用户的视角看待文件

(1)无结构文件也叫做流式文件

流式文件打个比方,很类似那种txt文件,在早期进行java流学习的时候,就是使用这些文件来存储一些信息.这种数据是按顺序,但是没有任何结构存放,只能使用穷举法获取某个数据

(2)有结构文件

有结构文件,其实可以类比为excel,或者数据库表这种形式的内容

并且能正常的区分出结构的数据,这种记录分为数据定长度和数据不定长度两种类型,按照组织记录的形式可以分为两种

1.顺序文件:顺序文件的特点是文件记录一个接一个按照顺序排列,如果文件和关键字有关(比如关键字为1的文件就是第一个文件)称之为顺序结构,而和关键字无关的,称之为串结构

2.索引文件:索引文件可以类比为有序列表or数组or切片,根据信息可以直接一次计算出所需文件的位置,索引文件的分为定长和不定长两种,定长文件可以通过算数得到我们需要的地址,而不定长文件实际上还是要通过遍历叠加,计算出我们所需的地址的`位置

3.顺序索引文件,顺序索引文件是前两种的集合,将顺序排列的文件划分为多个小组,每个组中的第一个被视为索引文件块,这些索引文件块会单独建立一个索引表管理

查询某个文件快,可以先找到所在组的第一个文件块,然后再通过遍历在组中寻找

4.直接文件或者散列文件

散列的性质已经很简单了,散列避免了顺序的特性,但是会造成冲突

(3)文件目录:

文件目录在就要用来管理一些东西,并且执行一些搜索,创建文件,删除文件,显示文件这类工作,进行操作的时候,可以考虑以下几种目录结构

1.单级目录结构:整个文件系统中只有一张表,所有的目录项都不能重名

2.二级目录结构;二级目录结构的第一节目录就算用户,每个用户拥有一个自己的目录表

3.多级目录结构:将两级目录结构进行推广,完成了一个树形的目录结构,当层次较多的时候,从根目录进行查询会导致目录查询耗费时间过长,所以会引入"相对目录"概念

4.无环图目录结构:无环图目录结构便于实现文件的共享,通过一个"共享节点"的数据结构来管理某个文件的共享状态.使用计数器来计算有多少用户在共享整个文件

当一个用户试图删除整个节点,count-1,当count=0的时候,即可真正删除整个绩点

(4)关于文件的共享

这里的文件共享指的是静态共享,并行和并发处理的则是动态共享

1.基于索引节点的共享方式

通过创建一个索引节点,然后进行计数,如果count为0,则可以删除整个索引节点

2.使用符号链来实现文件共享

只有文件的拥有者又有索引节点的指针

其他用户拥有的只是一个路径

(5)文件保护

文件保护可以使用以下几种方式来进行实现

1.访问类型:限制操作的类型

2.访问控制:对于访问者的身份进行验证

3.口令和密码:口令和密码的区别就是是否明文保存

2.文件系统的实现

(1)文件系统的层次结构

文件系统的层次结构是有多层次实现的

(1)用户调用接口:文件系统对于用户提供的与文件和目录相关的系统调用,比如新建删除文件这些操作

(2)文件目录系统:文件目录系统的主要功能是管理文件目录

(3)存取控制和验证模块

(4)逻辑文件系统与文件信息缓冲区

(5)物理文件系统

(6)辅助分配模块/设备管理程序模块

(2)文件的分配方式

1.连续分配方法

连续分配方法要求每个文件在内存中占据一个连续的区间

同时存在一个排序表,记录了文件的名字,起始地点和长度

比如                                       [ddaa, 0 ,2]

 名为ddaa的文件,起点是0,长度为2,可以理解为占据0,1这个两个块

连续分配杠十的优势就算支持顺序访问和世界访问,实现简单,但是缺点在于文件长度不易动态增加,因为一个文件结尾的下一个块可能也被分给了其他的文件,此外会产生大量的外部碎片,难以使用

2.连接分配

在链接分配中,文件可以分为多个盘块离散地存储内存中

每个盘块会单独开辟出一小块内存,来存储一个指向下一个盘块的指针,这些指针对于用户是透明的

缺点是盘块指针会消耗一定的存储空间,而且稳定性不好,容易造成文件丢失

但是可以使用别的方式来进行节约这个空间,比如单独成立一个FAT表数据结构

这种表会在系统启动的时候存入内存,所以可以直接在内存中寻找盘块,减少了IO次数

3.索引分配

在索引分配中,每个文件都存在一个索引块,这个索引块中存在了这个文件所有相关的盘块索引

例如,某个索引块(代表file1文件)的内容为[1,23,44,-1,-1]

代表这个文件是盘块1,盘块23,盘块44组成的文件

-1代表长度还没有这么长

但是如果盘块的数目太多,导致索引块长度不够无法完全记录文件的盘块有以下三种处理方案

1.连接方案:将多个索引块视为一体,另一种性质的连续分配

2.多层索引:类似属性表的处理方式

3.混合索引:总和以上两种方案

(3)文件的存储空间管理

空闲表法:空闲表法其实属于另一种形式的连续分配方式,不过这次是管理空闲的列表

会按照一定顺序记录每一个空闲的区间,空闲块起始盘号,以及空闲盘块数目

空闲链表法: 

位视图法:纵列为磁盘序号,横行为磁盘块号,1代表着块被使用了

成组链接法:不知道是干啥的

3.关于磁盘的组织和管理

(1)磁盘的结构

 

简单的画了个示意图供给参考,可以分为盘面,扇面柱面三个维度,就可以定位到某个位置上

(2)关于磁盘调度的几个算法

或者说,是查询硬盘文件的方法

1.先来先服务:

先来先服务算法其实就是按照请求,寻址的顺序来获取磁盘盘块

其实就是按请求的需求不断跳转

2.最短时间寻找优先算法:

SSFT算法的处理是每次寻找距离当前磁头嘴贱的刺刀,以便每次寻找到时间最短

顾名思义,每次都去寻找距离自己最近的一个

3.扫描算法

扫描算法和最短时间寻找算法一样,但是这个的区别在于不是每次都寻找距离自己最近的,而是在开始时刻,选择距离自己最近的目标的方向,然后一直运行到磁盘的尽头.

到达尽头以后,会反方向继续遍历

4.循环扫描算法

循环扫描算法在扫描算法上做出的改动是

每次运行到磁盘的尽头,不是反方向继续扫描,而是快速回到起点,开始下一次的扫描

快速回到起点的过程不会服务任何进程,形象点理解就是......黄金矿工?

5.还有一种lock算法,是在上面两种扫描算法上做出的改动

不会直接遍历到边界了,如果探查到该方向没有其他任务,就会停下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值