DJ6-5 目录管理

news2024/11/22 15:38:23

目录

6.5.1  文件控制块和索引结点

1、文件控制块 FCB

2、索引节点

6.5.2  简单文件目录

1、单级目录结构   

2、二级目录结构

3、树形目录结构

6.5.3  目录查询技术

1、线性检索法

2、Hash 方法


文件目录:是指由文件说明索引组成的用于文件检索的特殊文件。

  • 文件目录通常以文件的形式保存在外存
  • 文件目录的内容主要是文件访问的控制信息(不包括文件内容)
  • 文件目录也是一种数据结构,用于标识系统中的文件及其物理地址

对目录管理的要求如下:

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

6.5.1  文件控制块和索引结点

文件控制块(FCB):是操作系统为管理文件而设置的数据结构,存放了管理文件所需的所有信息,即文件属性。文件控制块是文件存在的标志,与文件一一对应。

  • 文件目录:把所有的 FCB 组织在一起,就构成了文件目录,即文件控制块的有序集合。
  • 目录项:构成文件目录的项目,目录项就是 FCB 。
  • 目录文件:为通常将文件目录以文件的形式保存在外存,这个文件就称为目录文件。

1、文件控制块 FCB

检索文件目录时,需要把若干个文件的整个 FCB 读入内存。

① 基本信息类

  • 文件名:文件标识符
  • 物理位置:存放文件的设备名、起始盘块号、文件长度(盘块数或字节数)
  • 逻辑结构:有结构文件、无结构文件
  • 物理结构:顺序文件、链式文件、索引文件

② 存取控制信息类

  • 文件主的存取权限
  • 核准用户的存取权限
  • 一般用户的存取权限

③ 使用信息类

  • 文件的建立日期和时间
  • 文件上一次修改的日期和时间
  • 当前使用信息(进程数、是否修改等)

2、索引节点

检索文件目录时,只需要把若干个文件的文件名读入内存;找到指定文件后,再根据目录项中的结点指针,把该文件的索引结点读入内存。

① 索引节点的引入

为减少检索文件时启动磁盘的次数,应缩小文件目录的大小。

=> 将文件名和文件的描述信息分开:

  • 将文件的描述信息单独形成称为索引结点的数据结构,即 i 结点
  • 文件目录的每个目录项中仅包含:文件名和指向该文件的 i 结点的指针

② 磁盘索引节点:是指存放在磁盘上的索引结点。

主要内容包括:

  • 文件主标识符
  • 文件类型:正规文件、目录文件、特殊文件
  • 文件存取权限:各类用户对文件的存取权限
  • 文件物理地址:以 iaddr(0)~ iaddr(12) 给出文件所在的盘块号
  • 文件长度:以字节数计算
  • 文件链接计数:共享该文件的用户数
  • 文件存取时间:最近被访问或修改的时间

③ 内存索引节点:是指存放在内存中的索引结点。

文件被打开时,将磁盘索引结点拷贝到内存索引结点中以备将来使用。

增加的主要内容:

  • 索引结点编号:用于标识内存索引结点
  • 状态:指示 i 结点是否上锁或被修改
  • 访问计数:有进程访问时计数器加一,访问完减一
  • 文件所属文件系统的逻辑设备号
  • 链接指针:指向空闲链表和散列队列的指针

6.5.2  简单文件目录

1、单级目录结构   

① 整个系统中只建立一张目录表,为每个文件分配一个目录项

② 目录项中包含以下内容:

  • 文件名及扩展名
  • 文件的物理地址
  • 其它属性,如文件长度、文件类型等
  • 状态位:指示目录项是否空闲
  • 等信息

③ 创建文件

  1. 查看目录表,判断新文件名是否唯一;
  2. 查找空目录项,填写文件名、物理地址、属性等;
  3. 置目录项的状态位为 1 。

④ 删除文件

  1. 查看目录表,找到该文件对应的目录项;
  2. 从中找到该文件的物理地址并回收磁盘空间;
  3. 从目录表中清除所占用的目录项。

⑤ 性能分析

 1)实现了按名存取; 2)查找速度慢
 3)不允许重名; 4)不便于实现共享

2、二级目录结构

① 将目录分为两级:

  • 主文件目录(MFD)
  • 用户文件目录(UFD)

在 MFD 中,每个 UFD 占用一个目录项,目录项中包括:用户名和指向该 UFD 文件的指针。再为每个用户建立一个单独的 UFD,由用户所有文件的 FCB 组成。

② 创建文件:创建用户文件目录 UFD 的目录项。

  1. 查看 UFD,判断是否有同名文件;
  2. 有:为新文件重新命名;
  3. 无:建立新的目录项,填写文件信息;
  4. 置目录项状态位为 1 。

③ 删除文件

  1. 查看 UFD,找到该文件对应的目录项;
  2. 查找该文件的所有盘块并回收;
  3. 从目录表中清除所占用的目录项。

④ 优缺点

  • 提高了检索目录的速度:由 n*m 提高到 n+m
  • 在不同的 UFD 中,可以使用相同的文件名
  • 不同用户可以使用不同的文件名访问系统中的同一个共享文件
  • 用户间的隔离使文件共享不方便

假设 MFD 有 n 个目录项,UFD 有 m 个目录项,那么整个系统可以存放 n*m 个文件。采用一级目录结构时,检索目录最后一个文件需要查询 n*m 次;采用二级目录结构时,先查询 MFD 花费 n 次,再查询 UFD 花费 m 次,共需要查询 n+m 次。

 

 

3、树形目录结构

树形目录:把三级或三级以上的目录结构称树形目录。

树形目录文件中的目录项,既可作为目录文件的 FCB,也能作为数据文件的 FCB,可由目录项中的属性位来表示。

① 路径名

系统中的每一个文件都有唯一的路径名。因为在树形目录结构中,从根目录到任何数据文件,都只有一条唯一的通路。

绝对路径:在该路径上从树的根目录开始,把所有目录文件名与数据文件名,依次地用 “/” 连接起来,即构成该数据文件的绝对路径。

② 当前目录:系统向用户提供一个当前正在使用的目录。

当前目录可根据需要任意改变;查找一个文件可从当前目录开始,使用部分路径名。

相对路径:在该路径上从当前目录开始,把所有目录文件名与数据文件名,依次地用 “/” 连接起来,即构成该数据文件的相对路径。

③ 增加目录项

  • 用户可创建自己的 UFD,并可再创建子目录
  • 在同一个子目录下创建新文件时,必须保证不同名

④ 删除目录项

有两种实现方式:

  • 不删除非空目录
  • 可删除非空目录

⑤ 优点

  • 层次结构清晰,便于管理和保护
  • 有利于文件分类
  • 解决重名问题
  • 提高文件检索速度
  • 能进行存取权限的控制

⑥ 缺点:查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度。

 

 

 

6.5.3  目录查询技术

按名存取的实现步骤:

  1. 根据文件名查询文件目录,找到该文件的 FCB 或 i 结点;
  2. 根据 FCB 或 i 结点中的起始盘块号,计算文件在磁盘上的物理位置;
  3. 启动磁盘驱动程序,将需要的文件读入内存。

要么采用 FCB 的方式存储文件,要么采用索引结点的方式存储文件。

查询目录有两种方法:

  • 线性检索法
  • Hash 方法

1、线性检索法

 

2、Hash 方法

基本思想:建立一张 Hash 索引文件目录,利用一个易于实现的变换函数(Hash 函数),把用户提供的文件名唯一地转换为文件目录的索引值,再利用该索引值到 Hash 索引文件目录中进行查找该文件对应的索引结点。

  • Hash 函数
  • Hash 冲突的解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python文件复制到指定文件夹——实现简单又高效的文件操作

Python 文件复制到指定文件夹——实现简单又高效的文件操作 如今,人们对于数据的需求越来越多,因此在编程过程中,对于文件的操作也变得越来越重要。而Python作为一种高效而简洁的编程语言,其文件操作也是十分出色的。本文将会带领…

C/C++ ---- 内存管理

目录 C/C内存分布 常见区域介绍 经典习题(读代码回答问题) 选择题 填空题 C语言内存管理方式 malloc/free calloc realloc C内存管理方式 new和delete操作内置类型 new和delete操作自定义类型 operator new和operator delete函数 new和dele…

Linux环境变量总结

Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。 设置环境变量的方法 对所有用户生效的永久性变量 这类变…

K8s进阶6——pod安全上下文、Linux Capabilities、OPA Gatekeeper、gvisor

文章目录 一、Pod安全上下文1.1 配置参数1.2 案例11.2.1 dockerfile方式1.2.2 pod安全上下文方式 1.3 案例21.4 Linux Capabilities方案案例1案例2 二、pod安全策略2.1 PSP(已废弃)2.1.1 安全策略限制维度 2.2 OPA Gatekeeper方案2.2.1 安装Gatekeeper2.…

百度搜索迎来奇点 大模型掀起代际变革

每一轮技术革命掀起的浪潮,大部多数人还没来得及思考或者布局,已经消失于海浪中。机会是给有准备的人的,要发现新兴技术的亮点,并立足自身去积极拥抱它,最后转化为自身前进的动力,跨越周期,迎来…

网站出现403 Forbidden错误的原因以及怎么解决的方法

这几天刚接手一批新做的网站,在访问网站的时候,会时不时的出现403 Forbidden错误,浏览器会给出403 Forbidden错误提示,在打开Access Error中列出的URL之后, 出现以下错误: 403 Forbidden Access to this resource on…

SAP工具箱 批量下载指定表数据到EXCEL

点击蓝字 关注我们 一 前言 下载指定表内容到指定的EXCEL是一个比较简单的程序.但仔细考虑这个程序,还是可以在细节上找出一些关注点 多表内容同时下载,每个表生成一个文件多表选择时,先查看表的记录数大表下载时,拆分下载拆分到不同的文件中拆分到同一个文件中的不同的工作表下…

windows server 2016 ftp搭建详细教程

一.什么是FTP? FTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件。 接下来我给大家分享快速搭建FTP服务器的方法。 二.安装FTP服务器 1.进入服务器系统打开“服务器管理器”,点击“添加角色和功…

【JavaSE】Java基础语法(二十三):递归与数组的高级操作

文章目录 1. 递归1.1 递归1.2 递归求阶乘 2. 数组的高级操作2.1 二分查找2.2 冒泡排序2.3 快速排序2.4 Arrays (应用) 1. 递归 1.1 递归 递归的介绍 以编程的角度来看,递归指的是方法定义中调用方法本身的现象把一个复杂的问题层层转化为一个与原问题相似的规模较…

C语言2:说心里话

描述 分两次从控制台接收用户的两个输入:第一个内容为“人名”,第一个内容为“心里 话”。 然后将这两个输入内容组成如下句型并输出出来: 1.(人名),I want to say,(心里话 2. 输入输出示例: 输入&#xff…

MybatisPlus SpringCloud Docker RabbitMQ ElasticSearch、Redis高级技术,分布式事务的综合应用

一、配置SpringCloud中的网关 1. nginx搭建 搭建好了启动nginx.exe即可出静态页面图 1.网关搭建 server:port: 10010 spring:application:name: api-gatewaycloud:nacos:server-addr: localhost:8848gateway:routes: #用户服务的路由:什么样的请求,让网…

Emacs之定制化mode line(第一百零二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

第二期:链表经典例题(两数相加,删除链表倒数第N个节点,合并两个有序列表)

每道题后都有解析帮助你分析做题,答案在最下面,关注博主每天持续更新。 PS:每道题解题方法不唯一,欢迎讨论! 1.两数相加 题目描述 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式…

【Vue】二:Vue核心处理---模板语法

文章目录 1.模板语法---插值2.模板语法---指令语法2.1v-once2.2 v-bind2.3 v-model2.4 v-on 3.MVVM4.事件回调函数中的this 1.模板语法—插值 {{可以写什么}} (1)在data中声明的变量,函数 (2)常量 (3&…

【蓝桥杯省赛真题22】python剩余空间问题 青少年组蓝桥杯比赛python编程省赛真题解析

目录 python剩余空间问题 一、题目要求 1、编程实现 二、解题思路

【JavaEE】锁策略、CAS和synchronized的优化

目录 1、常见的锁策略 1.1、乐观锁 vs 悲观锁 1.2、轻量级锁 vs 重量级锁 1.3、自旋锁 vs 挂起等待锁 1.4、互斥锁 vs 读写锁 1.4.1、读写锁的使用场景(适用于"频繁 读,不频繁写"的场景) 1.5、可重入锁 vs 不可重入锁 1.…

计算机专业学习的核心是什么?

既然是学习CS,那么在这里,我粗浅的把计算机编程领域的知识分为三个部分: 基础知识 特定领域知识 框架和开发技能 基础知识是指不管从事任何方向的软件工程师都应该掌握的,比如数据结构、算法、操作系统。 特定领域知识就是你…

Python花瓣雨

目录 前言 小海龟 花朵类 移动函数 画花朵 尾声 前言 来啦来啦来啦,小伙伴们快快来领取七彩花瓣雨吧!! 小海龟 老生常谈啦,在用python画樱花树前,我们先来了解一下turtle吧! 小海龟(Turtle)是P…

Java学习路线(13)——Collection集合类:List集合与Set集合

一、集合类体系结构 二、部分Collection类型对象 Collection集合特点 List系列集合是有序、可重复、有索引。 ArrayList:有序、可重复、有索引LinkedList:有序、可重复、有索引 Set系列集合是无序、不重复、无索引。 HashSet:无序、不重复…

0202条件过滤-自动装配原理-springboot2.7.x系列

1前言 在springboot的自动装配过程中,执行完候选配置类导入后,会进行条件过滤。那么在讲解条件过滤前,我们先来了解springboot常用的条件注解,以及它们底层执行原理。 在Spring Boot中,条件(Condition&am…