热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

文件管理学习之文件目录管理

上篇说到文件内部的逻辑结构和物理结构,而如何在系统中实现按文件名存取文件是非常重要的,也就是如何实现文件名到物理存储地址的转换。为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据

上篇说到文件内部的逻辑结构和物理结构,而如何在系统中实现按文件名存取文件是非常重要的,也就是如何实现文件名到物理存储地址的转换。

为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的盘物理地址,这个数据结构称为文件控制块FCB,文件控制块的有序集合称为文件目录,即一个文件控制块FCB就是一个文件目录项。

文件控制块FCB中包含的信息有以下三类:

1. 基本信息类

文件名:标识一个文件的符号名,在每个系统中文件必须具有唯一的名字。

. 文件的物理地址:这由于文件的物理结构不同而不同。对于连续文件就是文件的起始块号和文件总块数;对于MS-DOS是文件的起始簇号和文件总字节数;对于UNIX S V是文件所在设备的设备号、13个地址项和文件长度等。

2.存取控制信息类

文件的存取权限,象UNIX用户分成文件主、同组用户和一般用户三类,这三类用户的读写执行(RWX)的权限。

3.使用信息类

文件建立日期、最后一次修改日期、最后一次访问的日期;当前使用的信息:打开文件的进程数,在文件上的等待队列等。

 

若干个文件目录组成一个专门的目录文件,目录结构的组织关系到文件系统的存取速度,关系到文件共享性和安全性,常用的目录文件结构有单级目录、两级目录和多级目录。

单级目录:文件系统在每个存储设备上仅仅建立一个目录文件的目录结构,称为单级目录,目录文件中每一个目录项对应一个文件,单级目录结构简单,能实现目录管理的基本功能--按名存取,但存在查找速度慢,不允许重名和不便于实现文件共享等缺点,因此它只适用于单用户环境。

两级目录:文件系统在存储设备上将目录文件分为两级,系统目录(主目录)和用户目录。主目录中存储了用户目录名和指向用户目录的指针,每个文件都是由系统目录中的用户目录和用户目录的文件名标识,这种标识具有唯一性。这种结构仅仅适合用于两个用户,解决了文件重命名的问题,对于多用户的访问对方文件的不便。

多级目录文件:采用树形数据结构,形成一种树形的结构目录。

路径名从根目录开始到该文件的通路上所有各级目录名拼起来得到,各目录名之间与文件名之间可用分隔符隔开。

 

从根目录经各级子目录到达文件的通路上的所有子目录名称为文件的存取路径。

-------------------------------------------------------------------------------------

文件的共享性

系统中有许多的功用的文件,为了实现文件共享,文件系统在建立目录文件的时候,应该采用有效的方法实现文件的共享。

例如树形多级目录中可以通过无环结构目录图状结构目录,通过指针指向实现文件共享。

一种有效地实现文件共享的方法是基本文件目录表法

实现文件共享的一种有效方法是基本文件目录法。该方法把所有目录的内容分为文件名和文件说明两部分。一部分称为符号文件目录(SDF),它包含文件符号名和由系统赋予唯一的内部标识符ID组成。另一部分称为基本文件目录(BDF),它包含目录项中除文件符号名外的所有其它信息,并加上与符号目录相一致的内部标识符ID。标识符ID是各文件在基本文件目录中表目的排序号。UNIX/Linux采用了基本文件目录法目录结构。

在主目录中,记录目录名和系统给定的标识符,与BDF中的标识符相对应,当需要查找一个共享文件的时候,首先在主目录中查询BDF表,查询文件所在的SDF表中查找文件所在的物理地址。

目录文件的管理:一般来说,系统只把正在使用的目录文件复制到内存中,成为打开文件,将目录文件从内存中删除称为关闭文件。


推荐阅读
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • PHP中去除换行符的多种方法及应用场景
    本文将详细介绍在PHP中去除换行符的各种方法,并结合实际应用场景进行说明。通过本文,您将了解如何根据不同操作系统的特点,选择最合适的换行符处理方式。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文介绍Linux中的Diff命令,该命令用于逐行对比两个文本文件,展示它们之间的差异。通过系统性检查,它能有效标识出文件间所有不同的行,无需事先对文件进行排序。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
author-avatar
l佳恒_756
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有