OS复习笔记ch12-1

文件系统

概述

文件是大多数应用程序的核心要素,文件系统是操作系统对用户来说最重要的部分之一。
本章的主要内容见下图:
image.png
文件,大家耳熟能详的就是的docx、pdf、jpg、MP4等各种后缀文件,根据任务需要文件又分成了文本、图片、表格、视频等类型。那么文件该如何定义呢?


说白了,文件就是一组有意义的信息集合。我们新建一个文件,核心目的就是为了存储一些有用的信息,比如各种申请表、证件照、产品说明等等,一般不会无故创建文件。
文件自身有很多的属性,比如文件名、标识符、类型、位置(路径)、大小、保护信息等。
OS一般都会封装一些常见的文件操作作为系统调用,比如create、delete、open、close等,在Linux中我们可以编写C代码,通过#include <fcntl.h>来引入。

接下来我们来了解一些文件的组织形式。

文件的组织和访问

  1. 无结构文件:流式文件,文件体为字节流,不划分记录(常见的.txt文件)
  2. 有结构文件:记录式文件,每条记录由若干数据项组成。
    1. 累积文件(Pile,文件体为无结构的记录序列,通过特定分隔符来划分记录,各记录大小和组成可变;最简单文件组织,例如数据库的log)
    2. 索引文件(Indexed file,记录大小不必相同,不必排序。比如词典A/B/C/D……,溢出的新词一般放在最后)
    3. 顺序文件(Sequential file,主文件和临时文件构成,记录格式固定,大小相同;不过在磁盘中即使排列有序也无法通过算法进行快速查找)
    4. 索引顺序文件(在顺序文件的基础上根据区间建立索引,甚至可以建立多级索引)
    5. 哈希文件(Direct/Hash file,主文件和溢出文件组成,通过哈希函数计算出记录在文件中的相对位置)

image.png
其中,有结构文件根据记录长度是否相等又分为定长记录和可变长记录。

索引文件在文件记录中快速查找,同时可以对非关键字建立索引(比如姓名),但是一旦修改之后维护成本高。哈希查找速度更快,同时会有溢出文件。现在的通用计算机不会插入一条记录到文件系统,只有数据库管理系统才会有类似的记录。

在记录数量较大时,索引顺序比顺序文件大大缩短检索时间。
顺序文件是N/2,而索引顺序文件(一级索引)是 i 2 + ( N / i ) 2 = ( i + N / i ) 2 \frac{i}{2} + \frac{(N/i)}{2} = \frac{(i + N/i)}{2} 2i+2(N/i)=2(i+N/i),其中i为索引长度,N/i是每个索引映射的文件范围。
举个🌰,1,000,000条记录的文件,顺序文件的平均检索长度为500,000,有1,000条索引项的索引文件,平均检索长度为(1,000+1,000,000/1,000)/2 = 1000。

索引还可以是多级的,二级索引的平均索引长度更短,查询速度更快。
同理,假设i1 = i2 = 100,那么结果作为N‘ = i 1 2 + i 2 2 + N / ( i 1 × i 2 ) 2 \frac{i_1}{2}+\frac{i_2}{2}+\frac{N/(i_1 \times i_2)}{2} 2i1+2i2+2N/(i1×i2) = 50+50+50 = 150

管理层次

image.png
从下之上,依次是设备驱动程序→基本文件系统→基本 I/O 管理程序→逻辑 I/O 层→实际文件→用户程序(了解即可)

  • 磁盘和磁带驱动,统称为设备驱动程序。它们直接与外围设备通信,负责启动一个设备上的I/O 操作,并继续处理I/O 请求的完成。
  • 基本文件系统,即物理I/O层,处理与磁盘等系统交换的数据块,关注数据块在辅存中的放置,关注在主存中缓冲的数据块
  • 基本I/O管理程序,负责文件I/O 的开始和终止,维护控制结构,辅助磁盘/磁带调度,负责缓冲区的指定和辅存的分配
  • 逻辑I/O,使得用户和应用程序可以访问到记录,提供通用的记录I/O 操作的能力,维护有关文件的基本数据

image.png
这张图展示了文件管理系统的关键组成部分及其相互关系,包括文件结构、目录管理、访问方法、文件操作功能,以及用户访问控制。系统还涉及物理存储管理,如内存中的物理块、磁盘调度、I/O处理、文件分配与空闲存储管理。每个部分都是文件系统性能和效率的关键,需要良好的协调和优化以确保整个系统的高效运作。

文件目录

目录是由文件说明组成的用于文件检索的特殊文件。文件目录的内容主要是文件访问的控制信息(不包括文件内容),主要作用如下:

  • 实现按名存取
  • 提高目录检索速度
  • 文件共享
  • 解决文件重名问题
  1. 文件控制块(FCB)
    文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的有关信息(文件属性),类似进程控制块PCB。
  • 文件控制块是文件存在的标志
  • 文件控制块构成文件目录项
    image.png

FCB有多条信息供给系统,包括文件属性、位置(路径)、属主等。而文件属性包括了文件的基本信息、存取控制信息、使用信息等等。

  1. 文件目录:
    把所有的FCB组织在一起,就构成了目录文件,即文件控制块的有序集合,其中一个FCB就称作一个目录项。
    image.png
    文件名在特定的目录里面必须是唯一的,不能重名。
    不同系统有不同的命名规则,比如有些系统不支持某些特殊符号,有的支持修改有的不支持。

image.png

  • 文件目录也是一个文件
  • 提供文件名与文件自身的映射(双击进入)
  1. 一级目录
  • 线性结构,一个文件一个表项
  • 以文件名为关键字的顺序文件
  • 无法管理和组织文件
  • 没有解决重名问题
    image.png
  1. 二级目录
    image.png
    在主目录下每个用户目录对应一个目录项,解决了不同用户之间的文件重名问题,没有解决用户自身文件重名问题,或者说不能进行文件分类。
  2. 多级目录
    image.png
    每个用户目录下可以有子目录和文件,彻底解决了文件重名问题
  • 文件命名
    image.png
    按名存取,同一路径下不能重名,查找的时候名字是最关键的
  • 工作目录
    image.png
    除了绝对路径,我们常常会基于当前目录/工作目录使用相对路径,比如.表示当前目录,..表示父目录。在Linux类OS中,使用pwd指令就可以知道当前的工作目录了。
  1. 改进的多级文件目录
    image.png
    首先说一下索引节点inode (index node)是指在许多“类Unix文件系统”中的一种数据结构,用于描述文件系统对象(包括文件、目录、设备文件、socket、管道等)。每个inode保存了文件系统对象数据的属性和磁盘块位置。文件系统对象属性包含了各种元数据(如:最后修改时间) ,也包含用户组(owner)和权限数据。
    基于iNode改进的多级目录:
  • 符号文件目录:只有文件名和内部标识iNode组成树状结构,可以按文件名排序
  • 基本文件目录:一张大表,包含iNode和对应文件的全部详细信息。

举个🌰,
image.png
分解前,遍历读取才能知道文件在哪个盘块,平均需要13/2 = 6.5,也就是7次

而分解后,先查找符号目录,两个盘块平均就是一次,然后由于iNode大小确定,通过符号目录编号iNode计算出偏移量,然后根据基址变址寻址找到文件的基本目录项,再查看文件权限和数据等,也就是说总共平均是两次。这样确实能有效减少访问硬盘的次数,提高检索速度

到此总结一下,常见的三种文件目录查询技术:

  • 目录查询:用户给出文件名,按名寻找目录项(FCB,或索引节点)。
  • 线性检索:
    • 全路径名:从根开始
    • 相对路径:从当前目录开始
  • Hash检索:hashed structure,通过键值对进行查询

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

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

相关文章

超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!

众所周知&#xff0c;实时目标检测( Real-Time Object Detection )一直由 YOLO 系列模型主导。 飞桨在去年 3 月份推出了高精度通用目标检测模型 PP-YOLOE &#xff0c;同年在 PP-YOLOE 的基础上提出了 PP-YOLOE 。后者在训练收敛速度、下游任务泛化能力以及高性能部署能力方面…

我国目前常用的卫星影像星座有哪些(高分二号、高分七号、吉林一号、高景一号······)

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 中国目前的遥感卫星在数量、种类和应用领域上都取得了显著进展&#xff0c;覆盖了陆地、气象、海…

ViT:5 Knowledge Distillation

实时了解业内动态&#xff0c;论文是最好的桥梁&#xff0c;专栏精选论文重点解读热点论文&#xff0c;围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;…

Java17 --- SpringSecurity之前后端分离处理

目录 一、实现前后端分离 1.1、导入pom依赖 1.2、认证成功处理 1.3、认证失败处理 1.4、用户注销处理 1.5、请求未认证处理 1.6、跨域处理 1.7、用户认证信息处理 1.8、会话并发处理 一、实现前后端分离 1.1、导入pom依赖 <dependency><groupId>co…

【python】python股票量化交易策略分析可视化(源码+数据集+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

【fastapi+mongodb】使用motor操作mongodb(三)

本篇文章介绍mongodb的删和改&#xff0c;下面是前两篇文章的链接&#xff1a; 【fastapimongodb】使用motor操作mongodb 【fastapimongodb】使用motor操作mongodb&#xff08;二&#xff09; delete delete 的用法基本和查找一致&#xff0c;包括delete_one&#xff08;删除…

借助AI快速提高英语听力:如何获得适合自己的听力材料?

英语听力是英语学习中的一个重要组成部分&#xff0c;它对于提高语言理解和交流能力至关重要。可理解性学习&#xff08;comprehensible input&#xff09;是语言习得理论中的一个概念&#xff0c;由语言学家Stephen Krashen提出&#xff0c;指的是学习者在理解语言输入的同时&…

时空预测 | 基于深度学习的碳排放时空预测模型

时空预测 模型描述 数据收集和准备&#xff1a;收集与碳排放相关的数据&#xff0c;包括历史碳排放数据、气象数据、人口密度数据等。确保数据的质量和完整性&#xff0c;并进行必要的数据清洗和预处理。 特征工程&#xff1a;根据问题的需求和领域知识&#xff0c;对数据进行…

Canvas绘制图片和区域

如何使用Canvas在图片上绘制区域&#xff1f; 一. 首先&#xff0c;我们需要初始化三个canvas画布&#xff08;初始化Canvas&#xff09; initCanvas() {// 初始化canvas画布let canvasWrap document.getElementsByClassName("canvas-wrap");this.wrapWidth canva…

Android中如何动态的调整Dialog的背景深暗

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 在 Android 开发中&#xff0c;当你使用 Dialog 或 DialogFragment 时&#xff0c;可以通过设置 Window 的背景变暗来突出它的可见性。这个效果…

【密码学】分组密码

文章目录 分组密码的模式分组密码与流密码模式明文分组与密文分组 ECB模式ECB定义ECB特点对ECB模式的攻击改变分组顺序攻击 CBC模式CBC定义初始化向量IVCBC特点对CBC模式的攻击对初始向量进行反转攻击填充提示攻击 CFB模式CFB定义对CFB模式的攻击重放攻击 OFB模式OFB定义CFB模式…

【LocalAI】(13):LocalAI最新版本支持Stable diffusion 3,20亿参数图像更加细腻了,可以继续研究下

最新版本v2.17.1 https://github.com/mudler/LocalAI/releases Stable diffusion 3 You can use Stable diffusion 3 by installing the model in the gallery (stable-diffusion-3-medium) or by placing this YAML file in the model folder: Stable Diffusion 3 Medium 正…

PriorityQueue详解(含动画演示)

目录 PriorityQueue详解1、PriorityQueue简介2、PriorityQueue继承体系3、PriorityQueue数据结构PriorityQueue类属性注释完全二叉树、大顶堆、小顶堆的概念☆PriorityQueue是如何利用数组存储小顶堆的&#xff1f;☆利用数组存储完全二叉树的好处&#xff1f; 4、PriorityQueu…

React AntDesign Layout组件布局刷新页面错乱闪动

大家最近在使用React AntDesign Layout组件布局后刷新页面时&#xff0c;页面布局错乱闪动 经过组件属性的研究才发现&#xff0c;设置 hasSider 为 true 就能解决上面的问题&#xff0c;耽搁了半天的时间&#xff0c;接着踩坑接着加油&#xff01;&#xff01;&#xff01; …

pytorch实现的面部表情识别

一、绪论 1.1 研究背景 面部表情识别 (Facial Expression Recognition ) 在日常工作和生活中&#xff0c;人们情感的表达方式主要有&#xff1a;语言、声音、肢体行为&#xff08;如手势&#xff09;、以及面部表情等。在这些行为方式中&#xff0c;面部表情所携带的表达人类…

SQL找出所有员工当前薪水salary情况

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 有一个薪水表…

Debian Linux安装minikubekubectl

minikube&kubectl minkube用于在本地开发环境中快速搭建一个单节点的Kubernetes集群,还有k3s&#xff0c;k3d&#xff0c;kind都是轻量级的k8skubectl是使用K8s API 与K8s集群的控制面进行通信的命令行工具 这里使用Debian Linux演示&#xff0c;其他系统安装见官网,首先…

使用SpringCache实现Redis缓存

目录 一 什么是Spring Cache 二 Spring Cache 各注解作用 ①EnableCaching ②Cacheable ③CachePut ④CacheEvict 三实现步骤 ①导入spring cache依赖和Redis依赖 ②配置Redis连接信息 ③在启动类上加上开启spring cache的注解 ④ 在对应的方法上加上需要的注解 一 什么…

green bamboo snake

green bamboo snake 【竹叶青蛇】 为什么写这个呢&#xff0c;因为回县城听说邻居有人被蛇咬伤&#xff0c;虽然不足以危及生命&#xff0c;严重的送去市里了。 1&#xff09;这种经常都是一动不动&#xff0c;会躲在草地、菜地的菜叶里面、果树上、有时候会到民房大厅休息&a…

Qt——系统

目录 概述 事件 鼠标事件 进入、离开事件 按下事件 释放事件 双击事件 移动事件 滚轮事件 按键事件 单个按键 组合按键 定时器 QTimerEvent QTimer 窗口事件 文件 输入输出设备 文件读写类 文件和目录信息类 多线程 常用API 线程安全 互斥锁 条件变量…