首页 > 其他分享 >期末复习——文件系统

期末复习——文件系统

时间:2023-02-22 16:37:34浏览次数:31  
标签:文件 复习 文件系统 访问 期末 磁盘 目录 空闲

  1. 进程执行I/O大致过程
    用户程序提出I/O请求
    用户进程A阻塞,进程A的PCB块插入阻塞队列,CPU执行其他操作。
    I/O完成后,向CPU发出中断请求,CPU暂停当前进程B的执行,转到处理中断处理程序
    执行完后,CPU返回暂停进程B继续执行。
    进程A,从阻塞态变为就绪态,进程A的PCB插入就绪队列。
  2. 用户的输入输出以文件为基本单位,计算机以进程为基本单位进行资源的调度和分配。
  3. :包含文件系统的分区。可以是磁盘的一部分,可以是整个磁盘,可以是多磁盘组成的RAID集。

文件系统

文件抽象数据类型,由OS映射到物理设备(通常非易失)上。用户视角,文件是逻辑外存的最小分配单元,数据只有通过文件才能写到外存。
文件系统提供高效、便捷的磁盘访问,以便允许存储定位,提取数据。

  • 文件属性(文件元数据):名称、标识符、类型、位置、大小、权限、时间日期、用户标识(创建者、所有者)
    • 文件拓展名:指示①文件类型②可用于文件的操作。(e.g. .com .exe .sh文件可运行等等)
  • 文件信息保存在目录结构(非易失如磁盘)中,目录结构保存在外存上。
  • 文件控制块FCB维护文件属性:即目录项。创建一个文件后,系统分配一个FCB存放在文件目录中。
    有些系统简化为i结点(只有文件名and指向文件的指针)
  • 磁盘索引结点:存放在磁盘上,每个文件唯一。<文件主标识符,文件类型,文件存取地址、文件物理地址,文件长度,文件链接计数,文件存取时间>
  • 内存索引结点:存放于内存,文件打开时将磁盘索引结点复制到内存索引结点中,同时增加+=<,,,不想看>

1文件操作

  1. 创建文件:先遍历所有目录项,确保没有重名的。①找到空间;②目录中创建新文件条目
  2. 写文件:按。文件名在目录中查找到FCB,合法性检查。①使用一个系统调用指定文件名称、要写入文件的信息。
    ②根据文件名,在目录中搜索
    ③保留写指针,指向下一次写位置,每次写操作时,写指针更新。
  3. 读文件:按文件名在目录中查找到FCB,合法性检查。①使用一个系统调用,指定文件名称、需要文件的下一块在哪(内存位置)。
    ②在目录中搜索到它
    ③保留读指针,指向下一次读取位置,每次读完都更新。
    • so读写可共用简化-->当前文件位置指针
  4. 重定位文件、文件定位:更新当前文件位置指针位置。
  5. 删除文件:①根据文件名在目录中找到文件 ②释放回收所有空间 ③删除目录条目。
  6. 截断文件:删除内容,保留文件属性(除了长度其他都允许不变)。释放文件空间,让文件重置为0;

1.1 文件打开与关闭

  • 检索目录-->OS维护一个打开文件列表,文件不再使用时-->OS删除该条目。
  • 通常OS有两个表:每个进程表、整个系统表
    1. 每个进程表跟踪自己打开的所有文件;每个条目指向整个系统的打开文件列表
    2. 系统表:包含与进程无关的信息(在磁盘上的位置、访问日期、文件大小、访问权限)。不必要文件名,因为FCB块利用name完成对磁盘上的定位后,系统不再使用name,使用文件描述符
      每个文件关联一个打开计数cnt,记录多少个进程打开了该文件。cnt=0时删除该文件条目。
      文件打开后,不再使用文件名访问文件,使用文件描述符

1.2 文件锁定机制

  • 强制锁:一点进程A获取独占锁,只有进程A可以访问文件FILE,其他进程都不行。直到这个锁被释放。Windows采用。
    • 程序员要确认只有在访问文件时才锁定独占文件,不然干扰别的进程进行访问。采取措施防止产生死锁
  • 建议锁:程序员干活。内核只提供加减锁and检测是否加锁的操作,不提供锁的控制与协调工作。就是内核不监督。Unix采用。

1.3 文件保护 权限属性

  1. 口令保护(防止用户文件被他人存取、窃取):FCB上附上对应口令,用户访问时提供口令。(不够安全)
  2. 加密保护(防止用户文件被他人存取、窃取):访问文件时需要密钥。
  3. 访问控制(控制用户对文件访问方式):为每个文件and目录增加一个访问控制列表,规定每个用户名和它可以做的操作。
    • 用户、拥有者在同一用户组:按同组权限访问
    • 不在同组:按照其他用户权限访问。

1.4 访问方法

  • 顺序访问:文件信息按顺序进行处理。最常见,最简单。
  • 直接访问(相对访问):文件由固定长度逻辑记录组成,允许程序以任意顺序快速读取、写入记录。
    基于文件的磁盘模型,磁盘允许任何文件块的随机访问。
    适用于大量信息的立即访问。e.g.数据库
  • 其他方法:索引文件

1.5 文件逻辑结构

用户视角出发

  1. 无结构文件:流式文件。
  2. 有结构文件(记录式):
    1. 顺序文件:串结构(按存入时间先后)/顺序结构(按关键字)
    2. 索引文件:

1.5 文件物理结构

重复:文件是一种抽象数据类型

  • 文件在物理存储设备上如何分布、如何组织?两种答案
    • 分配方式:磁盘非空闲块的管理
    • 文件存储空间管理:对磁盘空闲块的管理
      所以其实所谓物理结构,回答文件分配问题:连续、链接、索引。3种。

1 连续分配

每个文件在磁盘上有一组连续的块,寻道数和寻道时间最小。支持顺序/直接访问。

  • 文件目录项中<文件物理地址>=<第一块地址,文件区域长度>。e.g.从b开始到b+n-1 => <b,n>
  • 缺:①不太能够支持动态增加文件(要求连续,但后面的块可能分出去了)。②要注意保持文件有序性,增删添改时涉及到相邻的块就很麻烦了。③反复增删后外部碎片。(反正不可能内部碎片嘛) ④只适用于固定长度文件。
  • 优:访问快、实现简单。

2 链接分配

采用离散分配的方式,无须提前直到文件大小,消除磁盘外部碎片,提高利用率。

  1. 隐式链接
  2. 显式链接
2.1 隐式链接

每个文件对应一个磁盘块的链表。

  • 目录项:文件第一块指针+文件最后一块指针。(每个盘块(除最后一个)包含指向下一个盘的指针,对用户透明)
  • 缺:只适用于顺序访问,随机访问效率太低,每次都要遍历嘛。
  • 解决每次遍历all的方法:几个盘-->一个簇,按簇分配。但增加了内碎片。
2.2 显式链接

把隐式链接中每个块包含的*next指针提取出来,显式保存到FAT 文件分配表中

  • 文件分配表:①记录文件块先后链接关系,②标记空闲磁盘块。
    系统启动时就被读入内存。查找记录在内存中进行。
    整个磁盘只有一张文件分配表。存放<盘块号,下一块块号>
    对最后一块or空闲块可以指定-1、-2、-3这种特殊数字来表示。(e.g.-1表示最后一块,-2表示空闲块)
  • 缺:FAT占用较大内存空间

3 索引分配

改进:不需要将整个FAT调入内存

  • 索引块:集中存放每个文件所有的盘块号。它自己通常也是一个磁盘块。
    每个文件都有自己的索引块(一个磁盘块地址的数组)。
  • 优:支持直接访问;没有外部碎片
  • 缺:多了一个索引块,增加了系统存储空间开销。
    • 索引块不可以太大:有以下的解决机制
      1. 链接方案:索引块本身作为磁盘块可以进行读写,对大文件,将多个索引块连接起来。
      2. 多层索引:一级索引块-->二级索引块
      3. 混合索引:多种方式结合。

目录

目录的类型

  1. 单级目录结构:整个文件系统一张目录表,一个文件一个目录项
  2. 二级目录结构:主文件目录-->用户文件目录-->该用户文件的FCB信息。
    搜索用户对应的UFD。解决不同用户文件重名问题,提高安全性。
  3. 树形目录结构:明显提高速度和性能。更方便对文件分类,层次结构清晰。
    不便于实现文件共享。
  4. 无环图目录结构:树形目录+指向一些同一节点的有向边-->有向无环图。
    可以为每个共享结点设置共享计数器(增加共享链-cnt++/删除共享链-cnt--),当cnt=0时删除结点,否则只是删除共享链。
    ≠文件拷贝;就是原件。
    问题:确保没有环

目录操作

  1. 搜索:在文件系统中找到对应的目录项
  2. 创建文件:目录中增加目录项
  3. 删除文件:目录中删除目录项
  4. 创建目录:树形目录结构中,用户可在自己的文件目录下创建子目录
  5. 删除目录:①不删除非空目录,需要先删除所有文件,递归删除子目录。 ②可删除非空目录,目录中文件、子目录同时删除。
  6. 移动目录
  7. 显示目录
  8. 修改目录

文件系统结构

  • 磁盘的两个优势:
    1. 磁盘可以原地重写
    2. 磁盘可以实现按简单顺序/随机访问文件,移动读写磁头,等待磁盘旋转。
  • 文件系统的两个问题
    1. 定义文件系统用户接口,涉及定义文件属性、允许的文件操作、组织文件目录结构。
    2. 创建算法、数据结构,以便映射逻辑文件(虚拟文件)到物理外存设备。

合理的文件系统层次结构

  • 设备
  • I/O控制:包括设备驱动程序、中断处理程序。在内存和磁盘系统之间传输
    • 设备驱动程序:(翻译器)——高速I/O控制器对设备xx位置进行xx工作。即:将输入的命令翻译成底层硬件的特定指令,硬件控制器利用这些指令控制I/O设备与系统交互。
    • 中断处理程序好理解,在进程I/O完毕之后向CPU发出中断请求,CPU处理需要。
  • 基本文件系统:发送命令给对应设备驱动程序,从而读取、写入磁盘的物理块。管理这部分的缓冲区
  • 文件组织模块:
    1. 可以将逻辑块地址(从0开始编号)转换成物理块地址。
    2. 跟踪未分配的空闲块
  • 逻辑文件系统:管理元数据信息。管理系统目录结构。文件保护。
    • 元数据:包括文件系统所有结构,不包括实际数据。
  • 应用程序

在磁盘中的结构

文件系统存放在磁盘上,磁盘-->分区(每个分区独立的文件系统)

  • 主引导记录 MBR:位于磁盘0号扇区,引导计算机。后面是分区表(给出每个分区的起始、结束地址)
  • 引导块:MBR执行引导块中的程序后,该程序负责启动该分区中的OS,(每个分区都从一个引导块开始)
  • 超级块:包含文件系统所有关键信息,计算机启动/文件首次使用时,超级块载入内存,典型信息(块数量、块大小、空闲块数量和指针、空闲FCB数量等等)

在内存中的结构

内存中的信息用于管理文件,通过缓存提高性能。
安装时加载,操作期间更新,卸载时丢弃。

  • 内存的安装表:包含已安装文件系统分区的有关信息。
  • 内存中的目录结构的缓存,包含最近访问目录的信息。
  • 整个系统的打开文件列表
  • 每个进程的打开文件列表

文件内部结构

定位文件的偏移对OS是复杂的。磁盘通常具有明确定义的块大小(大小相同,由扇区大小决定)。所有磁盘I/O按块(物理记录)为单位执行,又∵物理记录≠逻辑记录-->多个逻辑记录包装到物理块。
磁盘空间按照为单位分配。每个文件的最后一块通常被浪费

外存空闲空间管理

在一个卷中,存放文件数据的空间(文件区)和FCB空间(目录区)是分离的。
卷在提供服务之前,必须由对应的文件程序进行初始化,划分好目录区+文件区,建立空闲空间管理表格+存放卷信息的超级块。

文件存储设备-->分成许多大小相同的物理块,以块为单位交换信息。
**文件存储设备管理的实质:对空闲块的组织和管理(组织、分配、回收等)

  1. 空闲表法:连续分配方式
  2. 空闲链表法
  3. bitmap位图法
  4. 成组链接法

1 空闲表法

不适用大型文件系统。
连续分配方式

  • 空闲盘区分配:采用首次适应+最佳适应算法等

2 空闲链表法

不适用大型文件系统。

  • 所有空闲盘区拉成一条空闲链:
    • 空闲盘块链:以盘块为单位;用户请求分配时从链首分配、用户删除时回收盘块插入到链尾。
    • 空闲盘区链:(一个盘区可能包含多个盘块,每个盘区*next指针指向下一空闲盘区+本盘区大小信息);首次适应算法。
      • 回收盘区时,将回收区与相邻空闲盘区合并。

3 bitmap位图法

磁盘上每一个盘块都有一个bit位与之对应。(0闲/1已分配)

4 成组链接法

UNIX采用。

虚拟文件系统 VFS

VFS为用户程序提供文件操作的统一接口,屏蔽不同文件系统的差异和细节。面向对象思想OO
用户write() --> VFS:sys_write() --> 文件系统写方法 --> 物理介质

每个VFS对象存放在适当的数据结构中,

  • 超级块对象:存储已安装文件系统的元信息(文件系统基本属性:文件系统类型、文件系统基本块大小、挂载的设备、操作函数指针)
  • 索引结点对象:处理文件需要的所有信息,对文件唯一。(例文件的索引结构)
    • 有脏位
    • 有操作接口(读写、文件同步等)
  • 目录项对象:
  • 文件对象

分区、安装

害再见
有舍才有得...

文件共享

  • 一致性语义:规定系统的多个用户如何访问共享文件。规定了一个用户的数据修改何时为另一用户可见。
    • UNIX:文件作为独占资源 一个文件单个图像
      • 用户A对已打开文件F的写入,其他打开F的用户立即可见改变
      • 一个文件单个图像,允许不同用户交替访问
    • Open AFS:Android 一个文件多个图像
      • 不立即可见
      • 文件的改变只有在关闭后打开它才可见,已打开的文件实例不反映变化。

用于评估支持文件共享的文件系统。
与同步算法直接相关。(但传输速率慢、延迟大 同步算法不适合直接用于文件系统)

  1. 多用户:OS支持多用户时,实现共享和保护。
  2. 远程文件系统:例如网络WWW。
    1. 客户机/服务器模型
    2. 分布式信息系统
    3. 故障模式:

标签:文件,复习,文件系统,访问,期末,磁盘,目录,空闲
From: https://www.cnblogs.com/sectumsempra/p/17136039.html

相关文章

  • 复习题
    C++基础~for循环:选择,判断HELLO,亲爱的小朋友!我们准备35个选择题,对for循环及之前的内容进行一个简单的复习,快来看一下吧!顺序&选择结构1、对于C++中变量的命名规则,下列说......
  • 「复习」春季联赛 2023
    我尽量做到不口胡。毕竟要比赛了。左偏树、(可持久化)可并堆link笛卡尔树主要是想复习一下板子,思想也挺常见的。笛卡尔树要去重。(?)P4755BeautifulPair一眼笛卡尔......
  • 【线性代数复习笔记】矩阵特征值,特征向量,相似对角化与实对称矩阵
    【线性代数复习笔记】矩阵特征值,特征向量,相似对角化与实对称矩阵线代好难-_-特征值与特征向量:1.求解特征值与特征向量:​ 先计算特征多项式f(ʎ)=|ʎI-A|,求出根,再根据......
  • 数据库程序设计 复习考点
    34569章PPT选择是单选简答题有sql记得加分号!!没有零分事务处理acid各自是什么含义?原子性隔离性一致性持久性rollback回滚commit提交savepoint设......
  • springBoot简要复习总结
    SpringBootSpringBoot的特点1.独立运行的Spring项目SpringBoot可以以jar包的形式独立运行,SpringBoot项目只需通过命令“java–jarxx.jar”即可运行。2.......
  • 操作系统高级教程期末思考题
    19年期末复习题1.为什么开始启动计算机的时候,执行的是BIOS代码而不是操作系统自身的代码?最开始启动计算机的时候,计算机内存未初始化,没有任何程序。而因为CPU只能读取内存......
  • 高级算法设计与分析期末预习
    第一章要会通过递推式算复杂度用递推树求解它的时间复杂度哈夫曼zyb说不会考(4-24-34-4)瞎看看......
  • 网络经济理论与前沿《网络经济学》复习总结
    网络经济理论与前沿《网络经济学》复习总结按照重点考点整理,适用于浙江工商大学管工学院,如需word源文档请私信。......
  • Linux基础 - 文件系统 /proc
      一、/proc文件系统1.1/proc:一个虚拟文件系统/proc文件系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做/proc)。最初的设计目的是允许......
  • Linux基础 - 文件系统 mount挂载
     一、挂载硬盘(不超2T)1.1 虚拟机新加一块硬盘  1.2 查看新增的硬盘[root@centos78~]#fdisk-lDisk/dev/sda:42.9GB,42949672960bytes,83886080se......