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

news2024/11/15 18:13:55

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

  • 7 文件管理
    • 7.1 文件与文件系统
      • 7.1.1 文件
      • 7.1.3 文件系统及其功能
    • 7.2 文件的组织结构
      • 7.2.1 文件的逻辑结构
      • 7.2.2 文件的物理结构
        • 一、顺序结构(顺序文件或连续文件)
        • 二、链接结构(链接文件或串联文件)
        • 三、索引结构(索引文件)

7 文件管理

7.1 文件与文件系统

7.1.1 文件

文件:具有文件名的一组信息组合,包括两部分:
文件体:文件本身的信息;
文件说明:文件存储和管理信息;如:文件名、文件内部标识、文件存储地址、访问权限、访问时间等;

7.1.2 文件的种类
文件系统在管理文件时还要识别和区分文件的类型,如果是文件系统所确认的文件类型,则可根据类型对文件进行合理的操作。
(1)按用途分类
系统文件、库文件和用户文件。
(2)按保护级别分类
根据限定的使用文件的权限:执行文件、只读文件和读写文件等。
(3)按信息流向分类
物理设备的特性决定了文件信息的流向:输入文件、输出文件和输入输出文件。
(4)按文件的性质分类
根据文件的性质分:普通文件、目录文件、设备文件等。
(5)按文件的组织结构分类
由用户组织的文件称逻辑文件:流式文件和记录式文件。
文件在存储介质上的组织方式称文件的物理结构(物理文件):顺序文件、链接文件和索引文件等。

7.1.3 文件系统及其功能

  1. 文件系统:操作系统中管理文件的机构,提供文件存储、提供文件在外存中的组织方式,以及文件访
    问控制等功能。文件系统的三个部分:管理软件、被管理软件、相关的数据结构
  2. 文件系统的功能 :
    (1)目录管理

文件目录是实现按名存取的一种手段。 建立一个新文件,应把与该文件有关的一些属性登记在文件目录中;
读一个文件,应从文件目录中查找指定文件是否存在并核对是否有权使用。
一个好的目录结构应既能方便检索,又能保证文件的安全。

(2)文件的组织

用户按信息的使用和处理方式组织文件,称为文件的逻辑结构或称为逻辑文件。把逻辑文件保存到存储介质上的工作由文件系统来做,这样可减轻用户的负担。根据用户对文件的存取方式和存储介质的特性,文件在存储介质上可以有多种组织形式。把文件在存储介质上的组织方式称为文件的物理结构或称为物理文件。因此,当用户要求保存文件时,文件系统必须把逻辑文件转换成物理文件,而当用户要求读文件时,文件系统又要把物理文件转换成逻辑文件。

(3)文件存储空间的管理

要把文件保存到存储介质上时,必须记住哪些存储空间已被占用,哪些存储空间是空闲的。文件只能保存到空闲的存储空间中,否则会破坏已保存的信息。当文件没有必要再保留而被删除时,该文件所占的存储空间应成为空闲空间。

(4)文件操作

为了保证文件系统正确地存储和检索文件,规定了在一个文件上可执行的操作,这些可执行的操作统称为“文件操作”。文件系统提供的基本文件操作有建立文件、打开文件、读文件、写文件、关闭文件和删除文件等。“文件操作”是文件系统提供给用户使用文件的一组接口,用户调用“文件操作”提出对文件的操作要求。

(5)文件的共享、保护和保密

在多道程序设计的系统中,有些文件是可以共享的,例如,编译程序、库文件等。实现文件共享既节省文件的存放空间,又可减少传送文件的时间,但必须对文件采取安全保护措施。既要防止有意或无意地破坏文件,又要避免随意地剽窃文件。

7.2 文件的组织结构

7.2.1 文件的逻辑结构

逻辑结构:它是用户所观察到的文件组织形式,是用户可以直接处理的数据及结构,它独立于物理特性,又称为文件组织(file organization)。
分类:
a. 有结构记录式文件(数据库):包含若干顺序排列的记录
👉 变长记录:数据项/字段不同;数据项本身不同。
👉 定长记录:文件长度=记录总个数×记录长。
b. 无结构字符流式文件:文件的信息不组成记录,文件的长度即为字符总个数。(源程序、文本文件)

7.2.2 文件的物理结构

  1. 物理结构:文件在外存上的实际的组织形式。
    1) 物理块:以物理块为基本单位分配和传输信息,物理块大小由存储设备和 OS 确定。
    2) 物理块大小与逻辑记录大小之间不一定一致。
  2. 文件物理结构的几种形式:1)顺序结构件 2)链接结构 3)索引结构
一、顺序结构(顺序文件或连续文件)

一个文件在逻辑上连续的信息被存放到磁盘上依次相邻的块上。逻辑记录顺序与磁盘块的顺序相一致。
例:在这里插入图片描述

优点:存取速度快、结构简单、支持顺序存取和随机存取。
存在的问题:
(1)磁盘存储空间的利用率不高,容易产生碎片。
(2)对输出文件很难估计需多少磁盘块。
(3)影响文件的扩展。

二、链接结构(链接文件或串联文件)

基本思想:将文件存放在外存中若干个物理块中,这些物理块不必连续。每个物理块的最后一个单元用作指针,指向下一个物理块的地址。最后一块中的指针可用特殊字符(例如“-1”)表示文件到此结束, 从而将同一个文件的物理块链接起来。
优点:解决了顺序结构中的所有问题。
在这里插入图片描述

磁盘上所有空闲块都可以被利用;
建立文件时也不必事先考虑文件的长度,文件可继续扩展;
便于在文件的任何位置插入一个记录或删除一个记录。
缺点:采用随机存取方式是低效的。文件只能按指针链接顺序访问,故存取速度慢;
可靠性问题,如指针出错。
链接指针占用一定的空间。
读出一块信息时,应将其中的指针分离出来,保证用户使用信息的正确性。

三、索引结构(索引文件)

基本思想:为每一个文件建立一张索引表,每一表项记录文件所在的一个物理块。
在这里插入图片描述
优点:能方便地实现文件的扩展、记录的插入和删除。
缺点:必须增加索引表占用的空间和读写索引表的时间。索引表的查找策略对文件系统效率影响很大.
索引表的管理:当索引表非常大时,需要多个磁盘块存放,各磁盘块之间可用指针链起来。当随机存取某个记录时,可能要沿链搜索才能找到该记录的存放地址,很费时间。
解决方案:多级索引、混合索引(下例适用 Unix System V)

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

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

相关文章

STM32串口通信初探:使用HAL库实现基本功能

在本文中,我们将探索如何使用STM32的HAL库来实现串口通信的基本功能。串口通信是一种常见的外设通信方式,用于在微控制器和其他外部设备之间进行数据传输。在STM32系列微控制器中,HAL库提供了简单且灵活的方法来实现串口通信。我们将重点讨论…

UE4 双屏分辨率设置

背景: 做了一个UI 应用,需要在双屏上进行显示。 分辨率如下:3840*1080; 各种折腾,其实很简单: 主要是在全屏模式的时候 一开始没有选对,双屏总是不稳定。 全屏模式改成:Windows 之…

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技术可行性:…

Java 基础学习(五)面向对象编程-对象和类

1 类和对象 1.1 面向对象概述 1.1.1面向对象简史 面向对象编程思想最初的起源可以追溯到1960年的Simula语言,这被认为是第一个支持面向对象编程概念的语言。Simula引入了类、对象、继承等概念,将数据和操作进行封装。Simula的创始人奥利-约翰达尔&…

论文解读--2D Car Detection in Radar Data with PointNets

基于PointNets的雷达数据二维汽车检测 摘要 对于许多自动驾驶功能,高精度的感知车辆环境是一个重要的前提。现代高分辨率雷达传感器为每个目标产生多个雷达目标,这使得这些传感器特别适合于二维目标探测任务。这项工作提出了一种方法,使用Po…

Redis高可用之Sentinel哨兵模式

一、背景与简介 Redis关于高可用与分布式有三个与之相关的运维部署模式。分别是主从复制master-slave模式、哨兵Sentinel模式以及集群Cluster模式。 这三者都有各自的优缺点以及所应对的场景、对应的业务使用量与公司体量。 1、主从master-slave模式 【介绍】 这种模式可以采用…

win10、11系统安装班智达藏文输入法并正常使用(完美解决)

1. 结果图 2. 先闲聊两句 班智达输入法对于藏语初学者可谓是太好用了(哈哈)特别是联想提示的功能。不禁为开发团队点个赞。 表扬完了该批评批评了。班智达输入法的安装难度真是一言难尽。也许是开发者没有继续维护的缘故吧。想当年,哪个藏语…

视频的关键知识

1 引言 视频技术发展到现在已经有100多年的历史,虽然比照相技术历史时间短,但在过去很长一段时间之内都是最重要的媒体。 由于互联网在新世纪的崛起,使得传统的媒体技术有了更好的发展平台,应运而生了新的多媒体技术。而多媒体技…

MVSNeRF:多视图立体视觉的快速推广辐射场重建

MVSNeRF:多视图立体视觉的快速推广辐射场重建 摘要1 引言 摘要 在2021年,作者提出了MVSNeRF,一种新的神经渲染方法,在视图合成中可以有效地重建神经辐射场。与之前对神经辐射场的研究不同,我们考虑了对密集捕获的图像…

【模电】放大电路的组成原则

放大电路的组成原则 组成原则常用的两种共射放大电路 组成原则 通过对基本共射放大电路的简单分析可以总结出,在组成放大电路时必须遵循以下几个原则:    1. 必须根据所用放大管的类型提供直流电源,以便设置合适的静态工作点,并…

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B 目录 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B 需要环境或者解析可以私信 (二)A 模块基础设施设置/安全加固(200 分&…

EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-GRU-Multihead-Attention…

探索 SSO 的世界:简化登录流程的最佳实践(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

深度学习项目基于Tensorflow卷积神经网络人脸年龄预测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 系统介绍 基于Tensorflow的卷积神经网络人脸年龄预测系统是一种先进的深度学习应用,能够通过对大量人脸…

『亚马逊云科技产品测评』活动征文|基于亚马逊EC2云服务器安装Prometheus数据可视化监控

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器(Elastic Compute Cloud)是亚马…

思维模型 路径依赖定律

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。难以摆脱的惯性。 1 路径依赖定律的应用 1.1 打破路径依赖定律的苹果 在 20 世纪 80 年代,苹果公司推出了 Macintosh 电脑,这是一款具有图形用户界面和鼠标的创新产…

在intelliJ spring boot gradle插件3.2.0中未找到匹配的变量

我正在尝试使用spring启动Gradle插件的版本3.2.0。这是我的build.gradle文件: plugins {id javaid org.springframework.boot version 3.2.0id io.spring.dependency-management version 1.1.4 }group com.yaxin version 0.0.1-SNAPSHOTjava {sourceCompatibilit…

【unity3D】创建游戏物体的三种方式

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是在unity中创建游戏物体的三种方式 unity中创建游戏物体 使用构造函数创建一个空的游戏对象根据现有的预制体资源或者场景中已有的物体进…

三大兼容 | 人大金仓兼容+优化MySQL用户变量特性

目前,KingbaseES对MySQL的兼容性,已从功能兼容阶段过渡到强性能兼容、生态全面兼容阶段,针对客户常常遇到的用户变量问题,KingbaseES在兼容MySQL用户变量功能的基础上,优化了MySQL用户变量的一些原生问题,使…

.Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)

机缘 不知不觉,.NET8都已经面世,而我们一直还停留在.netframework4.5开发阶段,最近准备抽空研究一下.Net6,一是为了提高技术积累,一方面想着通过这次的学习,看有没有可能将老的FX版本替换到.Net6开发上,经过查找官方资料,对.Net6支持的系统版本做一个分享,方便大家后期…