专栏首页CSDN搜“看,未来”操作系统入门(六)文件管理

操作系统入门(六)文件管理

一学期的可也算是基本上完了,不知道大家学的怎样。 应朋友之约,我来总结一下这学期学的操作系统课程,方便大家复习。

概述

文件和文件系统

定义

-文件是在逻辑上具有完整意义的信息集合,它有一个名字作标识 -文件系统是操作系统中负责管理和存取文件的程序模块,也称为信息管理系统

文件的基本特征

-文件的内容为一组相关信息 -文件具有保存性 -文件可按名存取

文件系统的功能

-完成文件存储空间的管理 -实现文件名到物理地址的映射 -实现文件和目录的操作管理 -提供文件共享能力和安全可靠措施 -文件系统向用户提供了有关文件和目录操作的接口

文件的分类

按文件的性质和用途

系统文件、库文件、用户文件

按文件的组织形式

普通文件 、目录文件、特殊文件

根据使用和管理情况

临时文件、永久文件、档案文件

按文件系统提出的保护级别

读文件、读写文件、不保护文件

按文件的数据流向

输入型文件、输出型文件、输入输出文件

文件的组织结构是指文件的构造方式,用户和文件系统往往从不同的角度对待同一个文件。因此对于任何一个文件都存在若两种形式的结构:文件的逻辑结构、文件的物理结构

文件的结构和存取方式

文件的存取方式

顺序存取

顺序存取是按照文件的逻辑地址顺序存取

随机存取

随机存取法允许用户根据记录的编号存取文件的任一记录,或者是根据存取命令把读写指针移到欲读写处来读写

按键存取

按键存取是一种用在复杂文件系统,特别是数据库管理系统中的存取方法

文件的逻辑结构

设计文件系统时,选择逻辑结构应遵循的原则

便于修改、提高检索效率、使文件信息占据最小的存储空间、便于用户进行操作

文件的逻辑结构分类

记录式文件(有结构文件)

-记录式文件在逻辑上被看成一组连续有序的记录的集合 -根据记录的长度分类:定长记录文件、变长记录文件 -记录式文件可把文件中的记录按各种不同的方式排列,构成不同的逻辑结构:顺序文件、索引文件、索引顺序文件

流式文件(无结构文件)

-无结构的流式文件是相关的有序字符的集合 -字符是构成文件的基本单位 -查找困难、管理简单

存储介质

概念

-一盘磁带、一个磁(或温)盘组或一张软盘都称为一卷。卷是存储介质的物理单位 -块是存储介质上连续信息所组成的一个区域,也叫做物理记录。块是主存储器和辅助存储设备进行信息交换的物理单位,每次总是交换一块或整数块信息

顺序存储设备

-顺序存储存储设备是严格依赖信息的物理位置进行定位和读/写的存储设备 -磁带机是一种典型的顺序存储设备 直接存储设备 -直接存储设备又叫随机存储设备。允许文件系统直接存取对应存储介质上的任意物理块 -磁盘机是一种典型直接存储存储设备

文件的物理结构

文件的物理结构也就是逻辑文件在物理存储空间中的存放方法和组织关系

磁带文件的物理结构

磁带机是一种顺序存取的设备,一切组织在磁带上的文件都采用顺序结构,也就是将一个文件在逻辑上连续的信息存放到存储介质的依次相邻的块上,便形成顺序结构,磁带上的每个文件都有文件头标、文件信息和文件尾标三个组成部分

磁盘文件的物理结构

连续文件

-定义:将一个文件中逻辑上连续的信息存放到磁盘上的依次相邻的块上便形成顺序结构,这类文件叫顺序文件,又称连续文件 -优点:顺序访问容易、速度快 -缺点:要求有连续的存储空间、必须事先知道文件的长度

链接文件

-定义:顺序的逻辑记录被存放在不连续的磁盘块上,用指针把这些磁盘块按逻辑记录的顺序链接起来,则形成了文件的链接结构,链接结构的文件称为“链接文件”或“串联文件” -分类:隐式链接,在每个盘块中部含有一个指向下一个盘块的指针 ;显示链接,把用于链接文件物理块的指针显式地存放在外存的一张链接表(FAT)中 -优点:消除了外部碎片、显著地提高外存空间的利用率、无需事先知道文件的长度 、插入删除记录容易 -缺点:隐式链接,只适合于顺序访问、直接访问低效 、可靠性较差 ;显示连接,不能支持高效地直接存取、存放链接指针的表会占用较大的内存空间

索引文件

-定义:为每个文件分配一个索引块(用来存放索引的盘块),把分配给该文件的所有盘块号都记录在该索引块中,按照这种分配方式存储的文件就是索引文件 -一级索引、两级索引或多级索引结构 -优点:支持直接访问 -缺点:索引要花费较多的外存空间 -混合索引分配方式 :指将多种不同级的索引分配方式结合而形成的一种分配方式,有效且实用

直接文件

-定义:在直接存取存储设备上,记录的关键字与其地址之间可以通过某种方式建立对应关系,利用这种关系实现记录存取的文件称为直接文件 -“冲突”问题:地址的总数和记录的关键字之间并不存在一一对应的关系,不同的关键字经过变换可能会得到相同的地址 -解决“冲突”方法:设计出好的变换函数,并且还要求有好的处理冲突的方法 -优点:存取速度较快,存储空间不必连续,逻辑记录与物理记录之间不存在对应或顺序关系 -缺点:对冲突的处理需要时间和空间的开销

文件目录

文件目录管理应达到的要求

-实现“按名存取” -提高对目录的检索速度 -文件共享 -允许文件重名

文件控制块

概念

文件系统在创建每个文件时为其建立了一个文件目录,也称为文件说明或文件控制块FCB。文件目录是为文件设置用于文件描述和文件控制的数据结构,它与文件一一对应,它是随着文件的建立而诞生,随着文件的删除而消失,某些内容随着文件的使用而动态改变

文件控制块包括的内容

-有关文件存取控制的信息 -有关文件结构的信息 -有关文件管理的信息

文件目录结构

文件系统把若干个文件的文件目录组织成一个独立的文件,这个全部由文件目录组成的文件称为目录文件

一级目录结构

-实现方式:最简单的文件目录,在操作系统中构造一张线性表,与每个文件有关的说明信息占用一个目录项 -优点 :实现容易、管理简单、实现了按文件名存取 -缺点:搜索范围宽、不允许文件重名、 难于实现文件共享

二级目录

-实现方式:第一级为主文件目录,用于管理所有用户文件目录,它的目录项登记了系统用户的名字及该用户文件目录的地址。第二级为用户文件目录,它为该用户的每个文件保存一登记栏。 -优点:实现了对文件的保密和保护、允许不同用户使用相同的文件名、可以实现文件共享

多级文件目录结构

-实现方式:主文件目录演变为根目录。根目录项既可以表示一个普通文件,也可以是下一级目录的目录文件一个说明项。如此层层类推,形成了一个树型层次结构 -优点:解决了文件重名问题、有利于文件的分类、便于制定保护文件的存取权限,有利于文件的保密

目录查找和目录改进

目录的查找

-线性检索 -哈希检索 -其他算法

目录的改进

为加快目录查找可采用目录项分解法,即把目录项分为两部分:符号目录项(包含文件名以及相应的文件号)和基本目录项(包含除了文件名外文件控制块的其余全部信息)

文件系统的实现

打开文件表

当用户申请打开一个文件时,系统要在内存中为该用户保存一些表目。在内存中所需的表目有系统打开文件表和用户打开文件表

系统打开文件表

该“系统打开文件表”放在内存,用于保存已打开文件的目录项。此外,还保存文件号、共享计数、修改标志等等

用户打开文件表

每个进程一个都有一个“用户打开文件表”。该表的内容有文件描述符,打开方式、系统打开文件表入口等等

用户打开文件表与系统打开文件表之间的关系

用户打开文件表指向了系统打开文件表。如果多个进程共享同一个文件,则多个用户打开文件表目对应系统打开文件表的同一入口

外存空间管理

空闲块表法

数据结构

系统为每个磁盘建立一张空闲块表,表中每个登记项记录一组连续空闲块的首块号和块数,空闲块数为“0”的登记项为“空”登记项

分配回收算法

这种管理方式适合采用顺序结构的文件 ,分配和回收算法类似主存储器的动态分区管理方式中采用的最先适应、最优适应和最坏适应算法 -优缺点:分配和回收一个盘块的过程非常简单,但是空闲盘块链可能很大

空闲盘区链

-将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链 -分配方法与内存的动态分区分配类似,通常采用首次适应算法。在回收盘区时,同样也要将与回收区邻接的空闲盘区与之合并 -优缺点:分配和回收过程较复杂,但空闲盘区链较短

位示图法

磁盘块的组织

一个磁盘的分块确定后,根据总块数决定位示图由多少字组成,位示图中的每一位与一个磁盘块对应,某位为“1”状态表示相应块已被占用,为“0”状态的位所对应的块是空闲块

一般公式为: 块号=i×位示图中的字长+j

磁盘块的分配

当有文件要存放到磁盘上时,查位示图中为“0”的位,表示对应的磁盘块空闲可供使用。根据查到的位所在的字号和位号可计算出对应的块号,同时在该位填上占用标志“1”

磁盘块的回收

当删除文件归还存储空间时,可以根据归还块的块号推算出在位示图中的位置:

块号=柱面号×每个柱面中的块数+磁头号×每个磁道的块数+扇区号 字号=[块号/位示图中字长] 位号=块号mod位示图中字长

然后把这一位的“1”清成“0”,表示该块成为空闲块了

文件的使用

主要操作

-文件系统与用户的接口:第一类是与文件有关的操作命令或作业控制语言中与文件有关的语句,这些构成了必不可少的文件系统的人机接口。第二类是提供给用户程序使用的文件类系统调用指令,构成了用户和文件系统的另一个接口,通过这些指令用户能获得文件系统的各种服务 -一般地讲,文件系统提供的基本的文件系统调用有:建立、打开、关闭、删除、读、写和控制等操作

文件共享

文件共享可以提高文件的利用率,避免存储空间的浪费,并能实现用户用自己的文件名去访问共享文件

绕道法

用户对所有文件的访问都是相对于当前目录进行的,当所访问的共享文件不在当前目录下时,从当前目录 出发向上返回到与共享文件所在路径的交叉点,再沿路径下行到共享文件 -绕道法要求用户指定到达被共享文件的路径,并要回溯访问多级目录,因此,共享其他目录下的文件的搜索速度较慢

链接法

链接法是将一个目录中的链指针直接指向共享文件的目录项

基本文件目录

该方法在文件目录分解为基本目录和符号目录前提下实现的,只要在不同文件符号目录中使用相同文件内部标识符,就可实现文件的共享

利用符号链实现文件共享

用户H为了共享用户C的—个文件f,可以由系统创建一个LINK类型的新文件,将新文件写入H的用户目录中,在新文件中只包含被链接文件f的路径名,称这样的链接方法为符号链接。当H要访问被链接的文件f且正要读LINK类新文件时,被操作系统截获,操作系统根据新文件中的路径名去读该文件,于是就实现了用户H对文件f的共享

基本索引结点的共享方式

文件的物理地址及其它的文件属性等信息,不再放在目录项中,而是放在索引结点中。在文件目录中只设置文件名及指向相应索引结点的指针,此时,由任何用户对文件进行追加操作或修改,所引起的相应索引结点内容的改变,例如,增加了新的盘块号和文件长度等,都是其他用户可见的,从而也就能提供给其他用户来共享。

影响文件安全性主要因素

-人为因素。由于人们有意或无意的行为,而使文件系统中的数据遭到破坏、丢失或窃取 -系统因素。由于系统的部分出现异常情况而造成对数据的破坏或丢失,特别是作为数据存储介质的磁盘在出现故障或损坏时,会对文件系统的安全性造成影响 -自然因素。存放在磁盘上的数据,随着时间的推移而发生溢出或逐渐消失

防止人为因素造成的文件不安全性

隐蔽文件和目录

系统和用户将要保护的文件目录隐蔽起来,在显示文件目录信息时由于不知道文件名而无法使用

口令

-文件口令:系统要求文件的建立者为他需要保密的文件设置一个口令 -用户口令:当用户利用计算机终端使用计算机时使用

文件加密

对于高度机密的文件,可采用加密码的措施。文件加密码是把文件中所有字符代码,按某种变换规则重新编码。文件的输入读出都经过编码程序和解码程序处理

制定访问权限 -存取控制矩阵:由系统中的全部用户和全部文件组成的二维矩阵,所以也称为存取控制矩阵,矩阵的每个元素表示用户对文件的使用权限 -存取控制表和用户权限表:存取控制表就是对存取控制矩阵中的一行进行压缩,可让每一个文件附加一个简单的表格,它规定了对该文件的可访问性(权限);用户权限表就是对存取控制矩阵中的一按列进行压缩,该表中列出该用户对每个文件的访问权限

防止系统因素或自然因素造成的文件不安全性

坏块管理

-硬件方法:建立一个坏块表,在硬盘上为坏块表分配—个扇区,当控制器第一次被初始化时,它读坏块表并找一个空闲块(或磁道)代替有问题的块,并在坏块表中记录映射 -软件办法:要求用户或文件系统构造一个包含全部坏块的文件

磁盘容错技术

磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等来提高磁盘系统的可靠性,从而在磁盘系统的某部分出现缺陷或故障时,磁盘仍能正常工作,不会造成数据的错误和丢失。

分为三个级别: SFT-I是低级磁盘容错技术 SFT-Ⅱ是中级磁盘容错技术 SFT-Ⅲ是高级系统容错故术

备份

-建立副本:把同一个文件保存到多个存储介质上,当某个文件损坏或丢失时,就可用其他存储介质上的备用副本来替换 -转储:海量转储、增量转储(这让我想到了:段错误:核心已转储)

提高文件系统的性能措施有如下几种:块高速缓存、磁盘空间的合理分配和对磁盘调度算法进行优化

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 文件I/O

    有一定编程基础的小伙伴应该都接触过文件编程吧,file. 在C语言里面是包一个<file.h>的头

    看、未来
  • 进程间通信

    什么是管道? 可以理解为内存中的一个缓冲区,用于将某个进程的数据流导入,由某一个进程导出,实现通信。 再通俗的说,看图:

    看、未来
  • 段错误?打的就是段错误!!

    呵,段错误?自从我看了这篇文章,我还会怕你个小小段错误? 请打开你的Linux终端,跟紧咯,准备发车!!嘟嘟嘟哒~~

    看、未来
  • python: IO操作

    JNingWei
  • 06 . Python3入门之IO编程(文件操作)

    4. f.write() f.write(string)将string写入到文件中,然后返回写入的字符数.

    youmen
  • 如何跟客户解释为什么程序会有附带文件,最全标准回答来了!(建议收藏!)

    很多刚开始做程序开发的小伙伴可能都会发现,在新建C语言和C++的工程时,都会在生成的程序文件夹中出现很多类似于.dsp .dsw .ncb .opt .plg的...

    灰小猿
  • 9.1 文件基础

    (1)程序文件,包括源程序文件(后缀.c)、目标文件(后缀.obj)、可执行文件(后 缀.exe)

    闫小林
  • 任意文件移动导致的Windows提权攻击分析

    本文介绍了如何滥用Windows上特权进程执行文件操作来实现本地特权升级(用户到管理员/系统),同时介绍了利用这些类型的错误的现有技术以及漏洞利用工具。

    FB客服
  • 10.1 C文件有关的基本知识

    (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件的内容时程序代码。

    闫小林
  • Python 之文件读写操作

            使用 open 打开文件后,格式:open(filename,mode),最后一定要调用文件对象的 close() 方法,如图所示:

    py3study

扫码关注云+社区

领取腾讯云代金券