<Linux>(极简关键、省时省力)《Linux操作系统原理分析之文件管理(2)》(23)

news2024/11/24 4:46:43

《Linux操作系统原理分析之文件管理(2)》(23)

  • 7 文件管理
    • 7.3 文件的目录结构
      • 7.3.1 文件说明、目录文件
      • 7.3.2 文件目录结构
    • 7.4 文件存取与操作

7 文件管理

7.3 文件的目录结构

7.3.1 文件说明、目录文件

  1. 文件说明 FCB:记录文件的管理、描述信息。与文件一一对应。
    基本信息|详细
    |–|:–|
    文件名|字符串,通常在不同系统中允许不同的最大长度。可以修改。有些系统允许同一个文件有多个别名(alias);
    别名的数目|文件的物理地址:包括哪个设备或文件卷 volume,以及各个存储块位置;
    |文件逻辑结构|
    文件物理结构|
    文件类型|可有多种不同的划分方法,如:
    有无结构(记录文件,流式文件)
    内容(二进制,文本)
    用途(源代码,目标代码,可执行文件,数据)
    属性 attribute(如系统,隐含等)
    文件组织(如顺序,索引等)
    文件长度(当前和上限)|以字节、字或存储块为单位。可以通过写入或创建、打开、关闭等操作而变化。
访问控制信息详细
文件所有者(属主)通常是创建文件的用户,或者改变已有文件的属主;
访问权限(控制各用户可使用的访问方式)如读、写、执行、删除等;
使用信息详细
创建时间
最晚一次读访问的时间和用户
最晚一次写访问的时间和用户
  1. 索引节点 i_node
    在 UNIX、Linux 操作系统中,把文件说明(文件描述符)信息分成两个部分:
    a) 符号文件目录:由文件名和文件内部标识组成的树状结构,按文件名排序;
    b) 基本文件目录(索引节点 i_node 目录):由其余文件说明信息组成的线性结构,按文件内部标识排序;
  2. 目录文件:有所有文件目录组成的一个专门的独立的文件。目录文件是操作系统管理文件的重要依据。

7.3.2 文件目录结构

  1. 一级目录:整个目录组织是一个线性结构,系统中的所有文件都建立在一张目录表中。所有文件都登记在同一个文件目录中。它主要用于单用户操作系统。它具有如下的特点:

结构简单;
文件多时,目录检索时间长;
有命名冲突:如多个文件有相同的文件名(不同用户的相同作用的文件)或一个文件有多个不同的文件名(不同用户对同一文件的命名);

在这里插入图片描述

  1. 二级目录:在根目录(第一级目录)下,每个用户对应一个目录(第二级目录),在用户目录下是该用户的文件,而不再有下级目录。适用于多用户系统,各用户可有自己的专用目录。
    第一级为主文件目录,主文件目录以用户名为索引,对每个用户都设置一个指向用户文件目录的指针。第二级为用户文件目录,用户文件目录为本用户的每一个文件设置一个目录项。

在这里插入图片描述

  1. 多级目录:或称为树状目录(tree-like)。允许用户在自己的文件目录中根据不同类型的文件再建立子目录。在文件数目较多时,便于系统和用户将文件分散管理。适用于较大的文件系统管理。下面是几个与目录相关的概念:
    在这里插入图片描述
序号概念详细
a)目录树中间结点是目录,叶子结点是目录或文件。
b)目录的上下级关系当前目录(current directory, working directory)、父目录(parent directory)、子目录(subdirectory)、根目录(root directory)等;
c)路径(path)每个目录或文件,可以由根目录开始依次经由的各级目录名,加上最终的目录名或文件名来表示;
d)相对路径从某一目录开始,依次列出到达某文件的目录文件名,加上文件名。
e)当前目录最近访问过的或正在使用的目录。当前目录的内容被复制在内存缓冲区内。可以提高查找文件说明信息的速度。

7.4 文件存取与操作

  1. 文件的存取方法

顺序存取:按照文件的逻辑地址依次顺序存取文件中的信息 ;
随即存取:可以从任意指定的位置开始读取文件 ;(编号或地址)
直接存取:又称按键存取(数据库中,按照关键字查询)

  1. 文件存储设备

顺序存取设备:磁带磁带。用于保存文档。
直接存取设备:

  1. 活动文件
    活动文件:用户正在使用的文件。文件被执行“打开”操作时内存中建立该文件的控制块,它就从静止状态变为活动状态。
    系统打开文件表:记录系统中所有打开文件的控制。
    进程活动文件表:记录本进程中打开的所有文件。(指保存每个文件在系统活动表中的位置)
  2. 文件操作
    文件的功能是存储信息以备读取,不同的操作系统提供了不同的操作以对文件进行存取,以下是一些最常用的与文件有关的系统调用:
    系统调用的步骤;

a. 准备参数
b. 调用系统调用
c. 判返回值(﹡出错,给出错误号等;﹡正常返回)

序号字符说明
1)CREATE创建一个空的文件并设置它的一些属性
2)DELETE当用户或系统不再需要一个文件时,就可以将其删除以释放存储空间。这个系统调用就是完成这一功能。另外,一些操作系统会自动将 n 天没有被存取的文件删除。
3)OPEN一个进程在存取文件之前,必须先将其打开。系统调用 OPEN 的功能是将文件的属性及其在磁盘上的地址列表取出存入主存中以备后序的调用使用。
4)CLOSE当对一个文件的所有存取操作结束,在主存中的文件属性列表和地址列表就不再需要了,因此文件就应该被关闭以释放主存空间。
5)READ这个系统调用被用于从文件中读取数据,一般是读取当前位置的字节。调用者必须指定需要读取的字节数以及相应的缓冲区。
6)WRITE将数据写到文件的当前位置,如果当前位置是文件尾,文件就被增长。
7)APPEND将数据添加至文件尾。
8)SEEK在随机存取文件中,该系统调用被用于确定存取文件的当前位置。
9)SET ATTRIBUTES文件的一些属性是由用户自己设定,并且可以在创建之后进行修改。
10)RENAME对文件进行改名操作。

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

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

相关文章

dockerdesktop 制作asp.net core webapi镜像-连接sqlserver数据库容器

1.使用visual studio 创建 asp.net core webapi项目 选择启用docker 会生成Dockerfile文件 2.使用efcore连接数据库&#xff0c;安装efcore的包 <ItemGroup><PackageReference Include"Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version&qu…

如何配置WinDbg和VMware实现内核的调试

设置 VMware 的虚拟串口 运行 VMware&#xff0c;首先将 Guest OS 系统电源关闭&#xff0c;这样才能修改该系统的虚拟机设置。 单击界面上的“编辑虚拟机设置”选项对虚拟机的属性进行设置。 单击“添加”按钮&#xff0c;打开 VMware 的 添加硬件向导 对话框 选择“串行端口…

第17章 匿名函数

第17.1节 匿名函数的基本语法 [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 { // 函数体 }语法规则&#xff1a;lambda表达式可以看成是一般函数的函数名被略去&#xff0c;返回值使用了一个 -> 的形式表示。唯一与普通函数不同的是增加了“捕获列表”。 …

Python 调用企业微信群机器人发送消息及文件

Python 操作企业微信群机器人。 企业微信群创建机器人 &#xff1a; 安装 requests json &#xff1a; pip install requests pip install json发送消息&#xff08;markdown&#xff09; import requests import json# 企业微信机器人发送文字 def send_markdown (message, …

7.Vue UI库

7.Vue UI库 7.1移动端常用的UI库 &#xff08;1&#xff09; Vant&#xff1a;Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.A lightweight, customizable Vue UI library for mobile web apps.https://vant-ui.github.io/vant/#/zh-CN &#xf…

分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测&#xff0…

在AWS CodeBuild中更新Lambda导致进程被占用(status error 255)的解决方案

大纲 1 问题描述1.1 错误提示1.2 错误分析和解决方案 2 解决方法2.1 YMAL文件样例 参考文献 1 问题描述 在Lambda的部署实践中&#xff0c;我们尝试使用CodeBuild将代码更新到Lambda函数中。在这个过程中&#xff0c;偶尔会触发一个不太常见的状态&#xff1a;Lambda状态一直是…

用友NC Cloud FileParserServlet反序列化RCE漏洞复现

0x01 产品简介 用友 NC Cloud 是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务管理、采购管理、销售管理、人力资源管理等功能,实现企业的数字化转型和业务流程优化。 0x02 漏洞概述 用友 NC Cloud FileParserServlet接口存在反序列化代码执行漏…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis核心配置详解

第一章 Mybatis核心配置详解【mybatis-config.xml】 1.1 核心配置文件概述 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 1.2 核心配置文件根标签 没有实际语义&#xff0c;主要作用&#xff1a;所有子标签均需要设置在跟标签内部 1.3 核心配置文件…

设计模式之结构型模式(适配器、桥接、组合、享元、装饰者、外观、代理)

文章目录 一、结构型设计模式二、适配器模式三、桥接模式四、组合模式五、享元模式六、装饰者模式七、外观模式八、代理设计模式 一、结构型设计模式 这篇文章我们来讲解下结构型设计模式&#xff0c;结构型设计模式&#xff0c;主要处理类或对象的组合关系&#xff0c;为如何…

中文手写数字数据识别

实验环境 python3.7torch1.13.1cu117 torchaudio0.13.1cu117 torchvision0.14.1数据下载地址&#xff1a;Mnist中文手写数字数据集Python资源-CSDN文库 这些汉字包括&#xff1a; 零、一、二、三、四、五、六、七、八、九、十、百、千、万、亿 总共15个汉字&#xff0c;分别…

HarmonyOS学习--了解基本工程目录

1.工程级目录 工程的目录结构如下&#xff1a; 其中详细如下&#xff1a; AppScope中存放应用全局所需要的资源文件。entry是应用的主模块&#xff0c;存放HarmonyOS应用的代码、资源等。oh_modules是工程的依赖包&#xff0c;存放工程依赖的源文件。build-profile.json5是工…

Scrapy爬虫数据存储为JSON文件的解决方案

什么是JSON文件 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人们阅读和编写&#xff0c;同时也易于机器解析和生成。它基于JavaScript Spark语言的一个子集&#xff0c;但独立于Smashing语言&#xff0c;因此在许多中…

C语言每日一题(46)整数转罗马数字

力扣网12 整数转罗马数字 题目描述 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D …

Get职场新知识:做分析,用大数据分析工具

为什么企业每天累积那么多的数据&#xff0c;也做数据分析&#xff0c;但最后决策还是靠经验&#xff1f;很大程度上是因为这些数据都被以不同的指标和存储方式放在各自的系统中&#xff0c;这就导致了数据的分析口径和标准不一致&#xff0c;无法在同一个分析软件上做综合分析…

nodejs微信小程序+python+PHP在线购票系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

Vue自定义hook函数

hook 本质是一个函数&#xff0c;可以把 setup 函数中使用的 Composition API 进行封装。 hook 类似于 Vue2 中的 mixin 混合。 自定义 hook 的优势&#xff1a;复用代码&#xff0c;让 setup 中的逻辑更加清晰易懂。 自定义hook函数&#xff1a; 1、在 src 目录下创建 hooks…

codeforces 题目 Chtholly‘s request

目录 题目&#xff1a; 题目描述&#xff1a; 思路&#xff1a; AC代码&#xff1a; 题目&#xff1a; 题目描述&#xff1a; zcy数&#xff1a;&#xff08;形如&#xff1a;11&#xff0c;1221&#xff0c;103301&#xff09; ①是回文数 ②数位个数是偶数 给你两个整数 k…

flask项目的基本配置

1. 目录结构 2. 入口文件app.py from manger import create_app, db from flask_migrate import Migrate from manger import models# 传入settings参数&#xff0c;开发版本“develop”&#xff0c;线上版本“product” app create_app(develop)# 数据库设置 migrate Migra…

Git 分支合并时 Merge, Rebase, Squash 的使用场景

前言 Git 的分支设计大大提升了并行开发的能力&#xff0c;但相应的&#xff0c;也就要解决如何进行分支合并。毕竟分久必合&#xff0c;最终还是要把大家的工作合并起来&#xff0c;进行统一发布的。在合并时&#xff0c;通常有三种操作&#xff1a; Merge commitsRebaseSqu…