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

操作系统入门 -- 文件管理

操作系统入门 – 文件管理

1.文件管理概述

1.1 文件系统基本功能

目前,计算机内存的容量依然有限,并且其特性决定了数据无法长时间保存,因此把执行的数据以文件形式保存在外存中,等到需要使用时再调入内存。所以,操作系统中需要增加一个文件管理系统用于对文件的保存、读取保护、共享等功能。

  • 文件系统五大功能:
    • 文件存储空间管理、分配与回收
    • 文件目录管理
    • 实现逻辑文件到物理文件的转换和映射
    • 实现对文件的各种控制操作和存取操作
    • 实现文件信息的共享,以及文件保密、保护措施

1.2 文件的组成

  • 1.数据项:数据项是文件系统中最低级的数据组织形式
    • 基本数据项:用于描述一个对象的某种属性的值,如姓名等,是数据中可命名的最小逻辑数据单位(原子数据)
    • 组合数据项:由多个基本数据项组成
  • 2.记录:记录是一组相关的数据项集合,用于描述一个对象在某方面的属性,如某一人员信息表包括姓名、性别、电话等信息
  • 3.文件:文件是指由创建者所定义的一组相关信息的集合,逻辑上分为有结构文件无结构文件。在有结构文件中,文件由一组相似的记录组成,如某个班级的学生信息表。而无结构文件则被视为字符流。

1.3 文件属性

文件具有一定的属性,系统不同,属性也会有所不同,文件属性包括了文件名、标识符、类型、位置、大小、创建时间等信息。

1.4 文件类型

按照不同角度可分为:

  • 性质与用途:
    • 系统文件:如内核、系统程序等,只允许用户执行,无法读写和修改。
    • 库文件:只允许读和执行,如C子程序库。
    • 用户文件:由用户建立的文件,如源程序、目标程序和数据文件等。只允许文件所有者和所有者授权用户使用。
  • 保存期限:
    • 临时文件:记有临时性信息的文件。用于系统在工作过程中产生的中间文件,一般有暂存的目录。正常工作情况下,工作完毕会自动删除,一旦有异常情况往往会残留不少临时文件。
    • 永久性文件:其信息需要长期保存的文件。指一般受系统管理的各种系统和用户文件,经过安装或编辑、 编译生成的文件,存放在软盘、硬盘或光盘等外存上。
    • 档案文件:系统或一些实用工具软件包在工作过程中记录在案的文档资料文件,以便查阅历史档案。
  • 按文件中数据形式:
    • 源文件:由源程序和数据构成的文件。通常由终端或输入设备输入的源程序和数据所形成的文件都属于源文件。
    • 目标文件:源文件被目标语言的编译器进行编译后但并未链接到内存中的文件。
    • 可执行文件:编译后的代码进行链接程序后形成的文件。
  • 按存取控制属性分类:
    • 只执行文件:只允许被核准的用户调用执行,无法读写。
    • 只读文件:只允许文件主及被核准的用户读,无法写入。
    • 读写文件:允许文件主和被核准的用户区读或写的文件。
    • 无保护文件

以下还有其他分类方式,本文不过多赘述


2.文件系统提供的操作

2.1 创建文件

2.1.1 参数提供

在文件创建时需要提供以下几个参数:

  • 所需的外存空间大小
  • 文件存放路径
  • 文件名

2.1.2 创建流程

  • 在外存中找到文件所需空间
  • 根据文件存放路径的信息找到该目录对应的目录文件,在目录中创建该文件对应的目录项。目录项中包含文件名、文件在外存中存放的位置信息。

2.2 删除文件

2.2.1 参数提供

  • 文件存放路径
  • 文件名

2.2.2 删除流程

  • 根据文件目录找到文件所在位置,从目录中找到文件名对应的目录项
  • 根据该目录项记录的文件在外存的存放位置、文件大小等信息,回收文件占用的磁盘。
  • 从目录表中删除文件对应的目录项

2.3 打开文件

2.3.1 参数提供

  • 文件存放路径
  • 文件名
  • 要对文件执行的操作类型(r:只读,rw:读写等)

2.3.2 打开流程

  • 根据文件存放路径查找相应的目录文件,从目录中找到文件名对应的目录项,并检查该用户是否指定操作权限。
  • 将目录项复制到内存中“打开文件表”中。并将对应表目的编号返回给客户。之后用户使用打开文件表的编号来指明要操作的文件。

2.4 关闭文件

  • 将进程的打开文件表相应表项删除
  • 回收分配给该文件的内存空间等资源
  • 系统打开文件表的计数器减一

2.5 读文件

在进行文件读取操作时,需要指明是哪个文件和读入的数据量、读入数据存放的位置。操作系统在读取文件时会从读指针指向的外存中,将用户指定大小的数据读入用户指定的内存区域中。

2.6 写文件

在写文件过程中,需要指明是哪个文件,以及写入数据、文件存放位置等信息。操作系统在处理写入时,会从用户指定的内存区域中,将指定大小的数据写回写指针指向的外存。

2.7 文件系统层次结构

以删除某个文件为例

  • 1.用户通过操作系统提供的接口发出操作文件的请求(用户接口)
  • 2.由于用户提供文件存放路径,因此需要操作系统逐层查找目录,并找到对应目录项(文件目录系统)
  • 3.不同的用户对文件由不同操作权限,为保证安全,需要检查用户是否有访问权限(存取控制模块)
  • 4.验证用户的访问权限后,需要把用户提供的“记录号”转为逻辑地址(逻辑文件系统与文件信息缓冲区)
  • 5.明确目标记录对应的逻辑地址后,需要转为物理地址(物理文件系统)
  • 6.删除记录后会对磁盘发出请求(设备管理程序)
  • 7.删除记录后会有磁盘空间剩余,需要将剩余空间回收(辅助分配模块)

3.文件逻辑结构

想要深入了解文件,就需要了解它的逻辑结构,文件的逻辑结构是从用户观点出发看到文件的组织形式;不同于文件的物理结构是从实现观点出发看到的文件在外存上的存储组织形式,与存储介质的特性有很大关系。文件结构大致可分为无结构文件和有结构文件,接下来将一一讲解。

3.1 无结构文件

无结构文件即一系列二进制流或字符流组成的文件,又称为流式文件。如在Windows中的.txt文件。

3.2 有结构文件

有结构文件又称为记录式文件,每条记录又由若干数据项组成,如一张学生信息表。根据表中各个记录长度来判断可以分为定长记录和可变记录。接下来讲解有结构文件的组织方式

3.2.1 顺序文件

顺序文件即在逻辑上文件中的记录一个接一个地顺序排列,其中记录可以是定长也可以是可变。各个记录在物理上可以顺序存储或链式存储。

3.2.2 索引文件

索引文件自身是定长记录的顺序文件,由于记录长度固定,因此可以快速找到记录对应的索引项。一般来说索引文件会将关键字作为索引内容,按照关键字进行折半查找。由于索引速度较快,因此索引文件的内容修改速度较快,因此该种类文件适合对信息处理和及时性要求比较高的场景。

3.2.3 索引顺序文件

即索引文件和顺序文件的结合。在该类文件中同样会创建一张索引表,文件中的每组记录会对应一个表项。


4.文件物理结构(外存分配)

文件的物理结构即文件数据在物理存储设备上如何分配和组织的,是从实现观点出发看到的文件在外存上的存储组织形式,与存储介质的特性有很大关系。以下是文件外存分配的介绍

4.1 连续分配

连续分配要求每个我呢间在磁盘上占有一组连续的块。在读取某个磁盘块时,需要移动磁头。访问的两个块相距越远,磁头移动时间越长。因此连续分配在顺序读/写时速度最快,但不方便文件拓展,会产生磁盘碎片。

  • 总结
    • 优点:支持顺序访问和随机访问,连续分配文件在顺序访问时速度最快
    • 缺点:不方便文件拓展,存储空间利用率低,容易产生碎片。

4.2 链接分配

链接分配采用离散的分配方式,并可分为隐式链接和显式链接

4.2.1 隐式链接

除我呢间的最后一个盘块之外,每个盘块中都存有指向下一个盘块的指针。文件目录包括文件第一块的指针和最后一块指针。

  • 优点:方便文件拓展,不会产生磁盘碎片,磁盘空间利用率高。
  • 缺点:只支持顺序访问,不支持随机访问,查找效率低,指向下一个盘块的指针需要耗费少量存储空间。

4.2.2 显式链接

把用于链接文件个物理块的指针显式地放在一张表中,即文件分配表(FAT)。一个磁盘只会建立一张文件分配表。开机时文件分配表放入内存,并常驻内存

  • 优点: 方便文件拓展,无磁盘碎片问题,磁盘空间利用率高,且支持随机访问。相比于隐式链接,地址转换时不需要访问磁盘,文件访问效率高。
  • 缺点:文件分配表需要占用一定存储空间。

4.3 索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块。索引表存放的磁盘块为索引块。文件数据存放的区域为数据块。

4.3.1 链接方案

若索引表太大导致索引块装不下,可以将多个索引块链接起来存放。

  • 缺点:若文件较大,索引表会很长,此时需要将多个索引块链接起来,使得查找效率低下。

4.3.2 多层索引

建立索引时,使第一层索引块指向第二层索引块。也可根据文件大小建立更多索引层。采用K层索引结构,且顶级索引表未调入内存,访问一个数据库只需要K+1次读操作。

  • 缺点:即使小文件读取操作也是K+1次

4.3.3 混合索引

多种索引方式组合。如一个顶级索引表中,包含了直接地址索引和多级间接索引。

  • 优点:对小文件来说,访问一个数据块需要的读操作次数更少。

5.文件目录

文件系统与文件目录相关联,目录中包含看文件相关信息如属性、位置、所有权等。对用户来说,目录是在用户所需文件名和文件之间提供的一种映射,即目录需要实现按名存取。同时目录对系统的存取性能有直接影响,因此需要提高目录的检索速度。本节将讲解目录的结构和实现。

5.1 文件控制块(FCB)

操作系统为实现目录,引入文件控制块的数据结构。文件控制块是用来存放控制文件所需的各种信息的数据结构,FCB的有序集合就称为文件目录,一个FCB就是一个文件目录项。为了创建一个新文件,系统将分配一个FCB并存放于文件目录中称为目录项。

5.2 目录结构

5.2.1 单级目录结构

由于早期的操作系统不支持多级目录,因此整个系统中只建立一张目录表,每个文件占用一个目录项。单级目录实现了“按名存取”,但是不允许文件重名。因此该类型目录并不适合多用户操作系统。

5.2.2 双级目录结构

双级目录结构分为主文件目录和用户文件目录。主文件目录用于记录用户名及相应用户文件目录的存放位置,用户目录中则存放对应用户的文件信息。此时用户可以存储同名文件,单实质上是两个不同文件。两级目录虽然可以实现同名文件存储,但仍缺乏灵活性。

5.2.3 多级目录结构

多级目录结构又称树形目录结构。用户要访问某个文件时需要用文件路径名标识文件,文件路径则为一串字符,各级目录使用"/"分隔,并从根目录触发。
树形目录结构能很方便地对文件进行分类,层次结构清晰,同时也能更有效地对文件进行管理。但树形目录结构并不适合文件共享。

5.2.4 无环图目录结构

在树形目录结构的基础上增加一些指向同一节点的有向边,使整个目录称为一个有向无环图。可以更方便地实现对个用户间的文件共享。

相关文章:

操作系统入门 -- 文件管理

操作系统入门 – 文件管理 1.文件管理概述 1.1 文件系统基本功能 目前,计算机内存的容量依然有限,并且其特性决定了数据无法长时间保存,因此把执行的数据以文件形式保存在外存中,等到需要使用时再调入内存。所以,操…...

由浅入深,走进深度学习(2)

今天分享的学习内容主要就是神经网络里面的知识啦,用到的框架就是torch 在这里我也是对自己做一个学习记录,如果不符合大家的口味,大家划走就可以啦 可能没有什么文字或者原理上的讲解,基本上都是代码,但是我还是想说…...

【Python Tips】创建自己的函数包并安装进Anaconda,像引入标准包一样直接import导入

目录 一、引言 二、方法步骤 步骤一:创建包目录结构 步骤二:配置__init__.py文件 步骤三:文件夹外配置setup.py文件 步骤四:终端Pip安装 三、结尾 一、引言 在编写项目代码的时候,有些自定义功能的函数是可以复用的。…...

【Python机器学习实战】 | 基于支持向量机(Support Vector Machine, SVM)进行分类和回归任务分析

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…...

备份和还原

stai和dnta snat:源地址转换 内网---外网 内网ip转换成可以访问外网的ip 内网的多个主机可以使用一个有效的公网ip地址访问外部网络 DNAT:目的地址转发 外部用户,可以通过一个公网地址访问服务内部的私网服务。 私网的ip和公网ip做一个…...

Java数组的初始化方法

Java数组的初始化方法 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在Java编程中,数组是一种非常基础也非常重要的数据结构,它能够存储…...

通过分离有色和无色pdf页面减少打印费

前言 该工具是我认识的一位中科大的大佬在本科毕业的时候做的一个小工具,去打印店打印全彩的毕业论文的话会比较贵,他想到有没有一种方案可以实现有彩色页面的pdf和没有彩色页面的pdf分开打印,前者打印彩色,后者打印黑白&#xf…...

c语言--指针

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理c语言中指针的相关知识点。 指针概念 指针存储的就是数据的地址。 直观理解: 李华家是北洋路130号1单元101 用变量处理数据: 我们去李华家拿数据。 用指针处理数据: 我们去北洋路130号1单元101拿数据…...

python-九九乘法表(对齐式1)

[题目描述] 输出九九乘法表,输出格式见样例。输入格式: 无输出格式: 输出乘法表,对齐方式见样例输出。样例输入 无样例输出 来源/分类(难度系数:一星) 完整代码展示: #对齐式1 a[] …...

thinkphp单独为某个接口设置缓存

参考 官方文档 $this->request->cache(__URL__,600);只需要在接口方法的开头添加这个代码即可...

OpenCV视觉--视频人脸微笑检测(超详细,附带检测资源)

目录 概述 具体实现 1.加载分类器 2.打开摄像头并识别人脸 3.处理人脸并检测是否微笑 效果 总结 概述 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,广泛应用于图像处理和视频分析等领…...

docker 搭建 AI大数据模型 --- 使用GPU

docker 搭建 AI大数据模型 — 使用GPU方式 搭建本地大模型,最简单的方法!效果直逼GPT 服务器GPU系统HP580 G8P40Rocky9.2 安装程序AnythingLLM前端界面Open WebUIChatOllamaollama 一、AnythingLLM 介绍 AnythingLLM 是 Mintplex Labs Inc. 开发的一…...

面向对象, 常用类, 集合, 异常, JDBC, mysql数据库 复习

1.面向对象 (1)面向过程和面向对象 ● 面向过程的程序设计思想 (procedure -Oriented Programming),简称POP ● 关注的焦点是过程:过程就是操作数据的步骤。如果某个过程的实现代码重复出 现,那么就可…...

js取数组最大值之Math.max、Math.max.apply

js取数组最大值之Math.max、Math.max.apply Math.maxMath.max.applyapply()第一个参数为什么可以是null 最小值同理 Math.max Math.max(n1,n2,n3,…,nX) 支持传递多个参数,带有较大的值的那个数 Math.max(2,5,3,6,2,4,2,15,9,6,0,1)Math.max.apply apply() 语法&a…...

各种中间件的安装

文章目录 20232306mysql的wondows安装 2023 2306 mysql的wondows安装 常用mysql教程 springboot整合druid连接池SpringBoot配置Druid连接池 mysql的wondows安装 MySQL学习笔记 01、MySQL安装 这个是安装的具体思路 win10 安装 mysql 5.7 msi版的教程图文详解 这个是安装的…...

【Mysql】多表查询、隐式内链接、显式内连接、左外连接、右外连接

多表查询 什么是多表查询 •DQL: 查询多张表,获取到需要的数据 •比如 我们要查询家电分类下 都有哪些商品,那么我们就需要查询分类与商品这两张表 数据准备 创建db3_2 数据库 -- 创建 db3_2 数据库,指定编码 CREATE DATABASE db3_2 CHARACTER SET utf8;创建分类表与商品表 …...

Linux驱动开发(三)--新字符设备驱动开发 LED驱动开发升级

1、新字符设备驱动原理 使用 register_chrdev 函数注册字符设备的时候只需要给定一个主设备号即可,但是这样会 带来两个问题 需要我们事先确定好哪些主设备号没有使用 会将一个主设备号下的所有次设备号都使用掉,比如现在设置 LED 这个主设备号为200&…...

MCU的最佳存储方案CS创世 SD NAND

大家都知道MCU是一种"麻雀"虽小,却"五脏俱全"的主控。它的应用领域非常广泛,小到手机手表,大到航空航天的设备上都会用到MCU.市面上目前几个主流厂商有意法半导体(其中最经典的一款就是STM32系列)…...

40岁学习java是否需要报班学习?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!应该不需要。各种公开免费的…...

Vitis Accelerated Libraries 学习笔记--OpenCV 运行测试

目录 1. 简介 2. 实例测试 2.1 实例介绍 2.2 创建工程 2.2.1 创建工程 2.2.2 获取路径 2.2.3 设置路径 2.2.4 打开工程 2.2.5 添加文件 2.2.6 启动 GUI 2.2.7 配置 csim 参数 3 常见错误 3.1 核心共享库报错 4. 总结 1. 简介 在《Vitis Accelerated Libraries …...

加固三防平板如何提高轨道交通系统的运营效率?

在当今快节奏的社会中,轨道交通系统作为城市交通的重要组成部分,其运营效率的提升对于缓解交通拥堵、满足人们的出行需求以及促进城市的发展具有至关重要的意义。而加固三防平板作为一种先进的技术设备,正逐渐在轨道交通领域发挥着关键作用&a…...

Django 靓号管理系统:实现登录功能

本文将详细介绍如何在 Django 靓号管理系统中实现登录功能,包括用户认证、验证码生成、以及中间件的使用。我们将逐步展示所有相关代码,并附带详细注释。 1. 项目结构 首先,让我们看一下项目的基本结构: number ├── manage.py ├── monaco.ttf ├── number │ …...

【Solr 学习笔记】Solr 源码启动教程

Solr 源码启动教程 本教程记录了如何通过 IDEA 启动并调试 Solr 源码,从 Solr9 开始 Solr 项目已由 ant 方式改成了 gradle 构建方式,本教程将以 Solr 9 为例进行演示,IDE 选择使用 IntelliJ IDEA。 Solr github 地址:https://gi…...

Java中的事件驱动编程模型

Java中的事件驱动编程模型 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我将为大家介绍Java中的事件驱动编程模型。事件驱动编程模型是一种以事件为核心驱…...

Python 语法基础一

1.变量 python 中变量很简单,不需要指定数据类型,直接使用等号定义就好。python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量…...

从零开始:Spring Boot 中使用 Drools 规则引擎的完整指南

规则引擎作用 规则引擎主要用于将业务逻辑从应用程序代码中分离出来,提高系统的灵活性和可维护性。规则引擎通过预定义的规则来处理输入数据并做出相应的决策,从而实现业务逻辑的自动化和动态调整。 例如 门店信息校验:美团点评在门店信息…...

工业边缘计算网关

1 介绍 HINETG系列边缘计算网关(Linux操作系统),是华辰智通的—款面向工业现场设备接入、数据采集、设备监控的工业级边缘计算网关。采用ARM Cortex-A7 800MHz高性能CPU,拥有以太网、串口、CAN口、IO口等丰富的接口,支持以太网、…...

【C++ 初阶路】--- 类和对象(末)

目录 一、const成员1.1 取地址及const取地址操作符重载 二、再谈构造函数2.1 构造函数体赋值2.2 初始化列表2.3 explicit关键字 三、static成员3.1 概念3.2 特性 四、友元4.1 友元函数4.2 友元类 五、内部类六、匿名对象 一、const成员 将const修饰的“成员函数”称之为const成…...

bable 【实用教程】

简介 bable 用于将 ES6 的语法编译为 ES5 只关心语法,不关心 API 是否正确。不处理模块化(webpack 会处理) 搭建开发环境 安装相关的包 npm i babel/cli babel/core babel/preset-env新建文件 .babelrc,内容为 { "presets…...

Android中使用startActivityForResult启动活动

Android中使用startActivityForResult启动活动 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在本文中,我们将深入探讨Android开发中使用startActi…...

网站首页布局设计工具/最近一周的新闻热点事件

VSCode便捷操作一、扩展包二、快捷键三、结语一、扩展包 汉化包:将软件设为中文模式,插件安装后,软件重启即生效; 扩展栏输入Chinese,全称为Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code双…...

做周边的专业网站/ebay欧洲站网址

Log4j入门简介 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;…...

建站工具论坛/网站文章优化技巧

...

河源市seo网站设计/百度seo优化公司

Redis下一小节:2-2 Redis数据结构与内部编码 Redis通用命令 1、keys(查询Redis所有key) (1)keys命令演示 (2)keys命令注意点 keys命令一般不在生产环境使用,因为Redis是单线程架构…...

wordpress 4.7.2 被黑/东莞关键词优化推广

Simscape Electrical基础快捷键CtrlL 快速定位模块在库中位置;CtrlR 模块右转CtrlShiftR 模块左转空白处双击,搜索模块名/添加AnnotationSpecialized Power Systems一般需要powergui block或solver configuration;使用sum block叠加多个信号&…...

上海著名网站建设/seo排名优化公司哪家好

1.深圳大学计算机考研个人建议中山大学!中山大学计算机科学系成立于1979年,是我国最早招收计算机本科专业的单位之一,也是华南地区最早招收计算机硕士、博士的单位之一。现有计算机软件与理论博士点,计算机软件与理论、计算机应用…...