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

操作系统原理第8章:文件管理 重点内容

目录

(一)文件、记录和数据项区别

(二)文件逻辑结构的类型

(三)文件目录的类型

(四)文件共享和保护的概念

(五)引入索引节点后磁盘启动次数(计算)

(一)文件、记录和数据项区别

  • 文件:是具有符号名的、在逻辑上具有完整意义的一组相关信息项的有序集合。

比如一篇 Word 文档、一首 MP3 歌曲等,它是用户存储和管理信息的基本单位 ,可以长期存储在磁盘等外部存储设备上。

  • 记录:是文件中按某种方式组织在一起的一组相关数据项的集合。

例如在一个学生信息文件中,每个学生的姓名、学号、成绩等相关信息组成一条记录,多条记录构成整个文件。

  • 数据项:是文件中可使用的最小单位,是不可分割的最小信息单位。

还是以学生信息文件为例,其中的 “姓名”“学号”“成绩” 等每一个单独的信息就是数据项 。

(二)文件逻辑结构的类型

  • 无结构文件:也叫流式文件,是由字符流构成的文件,没有明显的记录结构。

比如文本文件,数据按顺序依次排列,就像水流一样,系统不了解也不关心文件内部结构,用户在使用时可按字节或字符偏移量来操作文件内容。

  • 有结构文件:由若干记录构成,根据记录的组织方式又分为
  • 顺序文件:记录按某种顺序(如按记录键值的升序或降序 )依次排列,查找时可以顺序查找。

        例如按学号从小到大排列的学生成绩文件,查找某个学号的学生成绩时,需从文件开头依次往后找。

  • 索引文件:为文件建立索引表,索引表中的每个表项对应文件中的一条记录,记录着记录的键值和在文件中的物理位置等信息。

这样在查找记录时,先通过索引表快速定位记录位置,再读取记录,提高了查找效率 。

  • 索引顺序文件:它结合了顺序文件和索引文件的优点。先将文件中的记录分组,为每组记录建立一个索引项,索引项中记录组内最大键值及组的起始位置。

查找时先通过索引确定记录所在组,再在组内顺序查找,既减少了索引表大小,又提高了查找速度 

(三)文件目录的类型

  • 一级目录结构:整个文件系统只有一张目录表,所有文件的目录项都登记在这张表中。

简单直接,但存在查找效率低、文件重名冲突等问题,适用于简单的、文件数量少的系统 。

  • 二级目录结构:将目录分为主文件目录(MFD )和用户文件目录(UFD )。

每个用户有自己的 UFD,MFD 记录用户及其 UFD 的位置等信息。

解决了不同用户间文件重名问题,提高了查找效率和文件管理的安全性 。

  • 多级目录结构(树形目录结构 ):以树状结构组织目录,根目录下有子目录,子目录下还可以有子目录和文件。

层次清晰,便于文件分类管理,能有效解决文件重名问题,广泛应用于现代操作系统中 。

  • 无环图目录结构:在树形目录结构基础上,允许不同目录节点共享文件或子目录,通过链接实现,能实现文件共享,但管理相对复杂 。

(四)文件共享和保护的概念

  • 文件共享:多个用户或进程可以共同使用同一个文件。

比如在多用户操作系统中,几个用户可以同时读取一个公共的文档文件。通过文件共享,可以节省存储空间,提高数据利用率 。

常见的实现方式有基于索引节点的共享(多个目录项指向同一个索引节点 )和基于符号链接的共享(创建一个特殊文件,内容为指向共享文件的路径 ) 。

  • 文件保护:防止文件被未经授权的用户访问、修改或删除。主要措施包括
    • 访问控制:通过设置用户权限,如读、写、执行等权限,控制不同用户对文件的访问操作。例如设置某个文件只有文件所有者可写,其他用户只能读。
    • 文件加密:对文件内容进行加密处理,只有拥有解密密钥的用户才能读取文件内容,保障文件数据的保密性 。
    • 审计:记录对文件的访问操作,便于追踪和检查非法访问行为 。

(五)引入索引节点后磁盘启动次数(计算)

  • 索引节点概念:索引节点是文件的元数据,包含文件的大小、创建时间、修改时间、所有者、权限以及指向文件数据块的指针等信息。

在传统文件系统中,文件目录项包含文件名和文件物理地址等信息,引入索引节点后,目录项只包含文件名和指向索引节点的指针 。

  • 计算原理

在进行文件操作(如读取文件 )时,首先要根据文件名找到对应的索引节点。

若索引节点在内存中,可直接获取文件相关信息并进行后续操作;

若不在内存中,则需要从磁盘读取索引节点,这会产生一次磁盘启动。

之后根据索引节点中的指针信息,读取文件数据块时,可能还会涉及多次磁盘启动(取决于文件大小和数据块分布 )。

计算磁盘启动次数,就是综合考虑查找索引节点和读取文件数据块过程中磁盘的访问次数 。

具体计算会根据文件系统的具体实现(如索引节点的存储位置、数据块的分配方式等 )和操作类型(读、写等 )有所不同 。

http://www.xdnf.cn/news/9984.html

相关文章:

  • 2025.05.30【转录组】|Ribo-seq数据流程详解(一 质量控制)
  • split_conversion将json转成yolo训练用的txt,在直接按照8:1:1的比例分成训练集,测试集,验证集
  • RuoYi前后端分离框架集成手机短信验证码(二)之前端篇
  • 学习vue3阶段性复习(插槽,Pinia,生命周期)
  • VSCode+Cline 安装配置及使用说明
  • vue+threeJs 绘制3D圆形
  • Linux 的主要时钟类型
  • 菜鸟之路Day36一一Web开发综合案例(部门管理)
  • ARXML解析与可视化工具
  • 硬件学习笔记--64 MCU的ARM核架构发展及特点
  • CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP)
  • AI科技前沿动态:5.26 - 5.30 一周速览
  • Jetson Orin Nano - SONY imx415 camera驱动开发
  • 2025年5月24号高项综合知识真题以及答案解析(第1批次)
  • redis未授权(CVE-2022-0543)
  • Jvm 元空间大小分配原则
  • LeetCode 高频 SQL 50 题(基础版)之 【连接】部分 · 下
  • SolidWorks 文件打开时电脑卡顿问题分析与解决
  • 脱发因素机器学习数据分析
  • Windows10下使用QEMU安装Ubuntu20.04虚拟机,并启用硬件加速
  • Numpy 数组操作:高效的数据处理利器
  • 【AI赋能,视界升级】智微智能S134 AI OPS,重构智慧大屏未来
  • 『uniapp』添加桌面长按快捷操作 shortcuts(详细图文注释)
  • uniapp使用Canvas生成电子名片
  • 华为交换机命令:display css status
  • IDEA 在公司内网配置gitlab
  • 数据湖 (特点+与数据仓库和数据沼泽的对比讲解)
  • cursor rules设置:让cursor按执行步骤处理(分析需求和上下文、方案对比、确定方案、执行、总结)
  • SpringCloud——Docker
  • vscode中让文件夹一直保持展开不折叠