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

文件系统基础

在用户进行的输入、输出中,以文件为基本单位

自底向上的结构:数据项 => 记录 => 文件

文件控制块FBC:基本信息、存取控制信息、使用信息

文件目录是FBC的集合,文件目录项即为FBC

一个文件目录也可以是一个文件,称为目录文件

索引结点:磁盘索引结点(一个文件有唯一一个)、内存索引结点

一般只有读文件才需要将文件调入内存,文件的打开不会将文件数据直接读入内存,只是将文件的属性(包括文件在外存的物理位置)复制到内存打开文件表的一个表目

打开文件表:使用的是索引,因此不必存储文件名(UNIX称其索引为文件描述符,Windows称为文件句柄)

文件保护通过口令保护、加密保护、访问控制等方式实现

加密保护机制安全性高、灵活性低、不由系统实现;访问控制机制安全性低、灵活性好、由系统实现

文件的逻辑结构是从用户观点出发看到的文件的组织形式,文件的物理结构是从实现观点出发看到的文件在外存上的存储组织形式

  • 文件的逻辑结构

    1. 无结构文件(流式文件),以字节为单位
    2. 有结构文件(记录式文件)
      1. 顺序文件
        通常是定长(也可以是不定长),可以顺序存储或链表存储
        串结构(必须从头开始顺序查找),顺序结构(按关键字排列,可以折半查找)
      2. 索引文件
        一条记录一个索引表项
      3. 索引顺序文件
        一组记录一个索引表项
        对于N条记录的顺序文件,只需要查找 2 \sqrt{2} 2
      4. 直接文件或散列文件
  • 文件的物理结构

    1. 连续分配
      要求每个文件在磁盘上占有一组连续的块
      支持顺序访问和直接访问
      实现简单,存取速度快
      文件长度不宜动态增加,会产生外部碎片,只适合长度固定的文件
    2. 链接分配
      采用离散分配的方式,不会产生外部碎片
      不适合直接存取的外存分配
      1. 隐式链接
        链接指针对用户是透明的
        只适合顺序访问,稳定性差
        按簇分配可以改善,但会产生内部碎片
      2. 显式链接
        文件分配表FAT,磁盘中仅设置一张,系统启动时就会被读入内存,查找是在内存进行的,不需要访问磁盘
      3. 索引分配
        适合随机访问且易于文件拓展
        支持直接访问,没有外部碎片
        链接方案、多层索引、混合索引

拓展

UNIX操作系统中,所有设备都被视为特殊文件

提高文件访问速度的方法:1、提前读;2、为文件分配连续的簇;3、延迟写;4、采用磁盘高速缓存

创建文件数量 = 索引结点数量

相关文章:

  • 2022/9/5开始第三版接口自动化(yaml用例)测试框架(记录搭建过程)
  • Github每日精选(第38期):Java 8+ Jar 和 Android APK 逆向工程套件(反编译器、编辑器、调试器等)bytecode-viewer
  • Pandas 操作数据(三)
  • 查题系统API无限搜题接口搭建
  • python之爬虫基础(1)
  • CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考
  • 小孩取名:瑭字的寓意和含义
  • 7、IOC 之Bean定义继承 parent
  • J9数字论:模块化公链能否成为公链新趋势?
  • UVM环境中reset复位的处理
  • 示波器探头的选择和作用及原理
  • 新学期,我的FLAG不能倒~
  • 好心情精神心理科医生:精神病人为何会出现幻觉?
  • java计算机毕业设计ssm电子元件仓库管理系统
  • 数据结构与算法--数组
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【5+】跨webview多页面 触发事件(二)
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • js
  • JS学习笔记——闭包
  • python docx文档转html页面
  • React-生命周期杂记
  • Redash本地开发环境搭建
  • SOFAMosn配置模型
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 使用 @font-face
  • 问题之ssh中Host key verification failed的解决
  • 终端用户监控:真实用户监控还是模拟监控?
  • 2017年360最后一道编程题
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 数据可视化之下发图实践
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (2015)JS ES6 必知的十个 特性
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (编译到47%失败)to be deleted
  • (力扣题库)跳跃游戏II(c++)
  • (十一)图像的罗伯特梯度锐化
  • (四)图像的%2线性拉伸
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core Web APi类库如何内嵌运行?
  • .Net MVC4 上传大文件,并保存表单
  • .NET单元测试
  • @EnableAsync和@Async开始异步任务支持
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [17]JAVAEE-HTTP协议
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [C++]拼图游戏
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [codevs1288] 埃及分数
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具