文件管理原理

文章目录


1)一个文件,它是文件内容和文件属性的集合
文件=文件属性+文件内容
文件属性
在这里插入图片描述
文件内容
在这里插入图片描述
2)文件分为打开的文件和未打开的文件
3)打开的文件是谁打开的?
由进程打开!而研究一个被打开的进程本质就是研究进程和文件的关系。
而被打开的文件之后,必须先被加载到内存,而文件=文件属性+文件内容,那么是谁先被加载到内存?属性先被加载到内存,属性中有文件的编号,可以用来定位哪一个文件,然后再找到指定文件内容。
一个进程可能打开多个文件,而而操作系统中,注定不止存在一个进程,因此也注定存在了多个进程打开大量文件的现象,进而这些被打开的文件,操作系统要进行管理,那么怎么管理这些被打开的文件–先描述,再组织。在Linux内核中,一个被打开的文件,都必须有自己的文件打开对象,其中包含文件的很多属性也就是文件属性的集合,然后操作系统对文件对象的管理就转换成了对数据结构的增删查改!一般为链表。
4)那么没打开的文件,存储在哪里?
没有打开的文件,在磁盘上存储,而放着的这些文件,对于我们来说最关心的是什么?便是这些文件是如何存储的!在磁盘上没有被打开的文件是非常多的,那么这些文件是被如何放置在磁盘上的,也就是如何存储的?分区域进行存储,在磁盘上划分空间来对文件存储,磁盘上存储文件就是要存储文件的内容和文件的属性,在Linux中对文件内容的存储采用数据块的存储方式,文件属性用inode存储,而Linux中文件在磁盘上的存储,这两者是分开存储的!如何分开存储就先剖析磁盘的结构磁盘也就是以前像光盘一样的东西
在这里插入图片描述
磁盘它的盘面是近乎光滑的,磁盘它由一块一块的盘片构成,每一盘片两面都是光滑的,而文件就是存储在这样一块块盘片之上,一块盘片存储大量的文件,而磁盘容量越来越大是因为它的盘片越来越多,它有很多片构成
在这里插入图片描述
每一面都有一个磁头,磁头摆动是在磁盘上面读写数据,它会左右摆动就是在定位文件,然后进行读写,电脑在开机时,盘面会高速转动,而磁头会在不停的左右摆动,这是在读取数据的过程,盘面转动是在读取不同的数据。在磁头左右摆动的时候磁头和盘面是不会接触的尽管这样看着可能是接触的,但是根本没有接触,因为若是接触的话,会将磁盘上面的数据给损坏,然后可能会造成数据的丢失,磁头是悬浮在盘面上的!其实磁头在左右摆动的时候,就是在定位数据寻址。磁头和盘片之间若是存在灰尘那么就会影响磁头的寻址,影响数据的定位,所以要保证在真空技术下存储。保证真空的技术很难因此在磁盘一旦进入灰尘之后就会慢慢的使数据寻址丢失,然后慢慢变卡!磁盘存数据是在盘面上存储的,磁盘是一个永久性存储介质。磁盘的存储构成有盘面,扇区,柱头,磁头
在这里插入图片描述
一个盘面它由无数个同心圆组成,而每一个同心圆称为一个个磁道,从圆心向外划半径向外延伸半径之间形成的弧道为一个个扇区,这样一个个扇区在磁道上存在无数个,一个磁道上存在大量的扇区,数据就是存在在这样一个个的扇区之上,在操作系统中扇区默认最小单位为512字节一个扇区大小为512字节。所以存储大文件的时候就可能是多个扇区连续使用,这样便于磁头定位数据,然后使访问数据效率提升!扇区是磁盘上访问的最小单位(512字节),因此我们可以把磁盘看作由无数个扇区构成的存储介质,而要把数据写入到磁盘中就是要先在磁盘中找到扇区来存储数据,存储数据总得先找到能存放的地方然后再将数据给存放进去而一个盘面有无数个扇区,磁盘也有很多盘面所以要先知道在哪一个盘面而磁头是定位盘面的所有要知道在哪一个磁头,磁头有自己对应编号便于定位盘面,知道在那一面之后要确定磁道,再确定再哪一个扇区这些查找的存储定位都要带有自己的编号,这样以便于确认访问在哪?磁头在左右摆动的过程中是在定位磁道和柱面的过程,而盘面在高速旋转就是在定位扇区的过程
在这里插入图片描述
所有磁盘的效率取决去磁头的运动和盘面的高速旋转,是由寻址决定的效率而这样一个寻址动作寻址越少的话,效率就是越高的,若是寻址动作越多相应的效率就越低下。所有在软件设计上要尽可能的把相关的数据放在一起,就是在程序设计上也是,尽量把相同类型的数据定义在一起,然后在磁盘上访问寻址时,才能更尽可能的拿出更多的数据,并且不用做大量的寻址工作。
因此未被打开的文件在磁盘上扇区存储着的,以固定大小在扇区上一个个扇区存储!

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

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

相关文章

WebSocket用户验证

在WebSocket中,如何携带用户的验证信息 一、在OnMessage中进行验证 客户端在连接到服务器后,客户端通过发送消息,服务器端在OnMessage方法中,进行信息验证,这种方式需要将用户身份验证及接收用户消息进行混合处理&am…

NBU备份oracle详细配置文档(含常见报错处理方法)

​前提 NBU master和media服务器已经配置OK,现在需要oracle主机安装agent并配置备份任务。 NBU master版本8.3.0.2 Oracle OS版本redhat 6.8 Oracle版本 11.2.0.4 1.Oracle 安装agent 下载安装档 https://www.veritas.com/content/support/zh_CN 选择…

行人重识别项目 | 基于Pytorch实现ReID行人重识别算法

项目应用场景 面向行人重识别场景,项目具有轻量化 (训练的时候也只需要 2GB 的显存占用)、性能好 (只使用 softmax 损失就能够达到 Rank188.24%, mAP70.68%),另外提供友好的上手项目流程教程 项目效果: 项目流程 > 具体参见项目内README.…

Redis的配置与优化

一、关系型数据库和非关系型数据库 1.1 关系型数据库 一个结构化的数据库创建在关系模型基础上,一般面向于记录,包括:Oracle、MySQL、SQLServer、Microsoft Access、DB2等 1.2 非关系型数据库 除了主流的关系型数据库外的数据库,都…

KIl5:Stm32L071下载出现flash download faild “cortex-m0+“的解决方法

首先看看有没有芯片,没有芯片下载一下 下载并在device选择对应的芯片 选择调试器 选择flash

深度学习_NLP常用库报错问题解决

1、SpaCy can‘t find model ‘zh_core_web_sm‘. It doesn‘t seem to be a python package or a valid path to a data 或者 can‘t find model ‘en_core_web_sm‘. It doesn‘t seem to be a python package or a valid path to a data 安装最新的版本: en_…

Layui三级联动插件使用方法

Layui高版本中没有在提供三级联动这个动画了,而是封装成了一个插件,使用方式也很简单 官网 省市县区三级联动下拉选择器 layarea - Layui 第三方扩展组件平台 (layuion.com)https://dev.layuion.com/extend/layarea/#doc html页面约束 整个选择器需要…

使用虚拟引擎为AR体验提供动力

Powering AR Experiences with Unreal Engine ​​​​​​​ 目录 1. 虚拟引擎概述 2. 虚拟引擎如何为AR体验提供动力 3. 虚拟引擎中AR体验的组成部分是什么? 4. 使用虚拟引擎创建AR体验 5. 虚拟引擎中AR的优化提示 6. 将互动性融入AR与虚拟引擎 7. 在AR中…

R语言,数据类型转换

原文链接:R语言技能 | 不同数据类型的转换 本期教程 写在前面 今天是4月份的第一天,再过2天后再一次迎来清明小假期。木鸡大家是否正常放假呢? 我们在使用R语言做数据分析时,会一直对数据进行不同类型的转换,有时候…

LAN和WAN, 调制解调器, 路由器,交换机 区别

LAN LAN(Local Area Network)是指在相对较小的地理范围内(如办公室、学校、实验室、家庭等)连接在一起的计算机和网络设备的集合。LAN通常由路由器、交换机、网线、无线路由器等设备组成,用于连接多台计算机、打印机、…

【面试八股总结】超文本传输协议HTTP(二)

一、HTTP缓存技术 将资源(如网页、图像、脚本等)的副本存储在客户端或中间代理服务器上,以便将来的请求可以直接从缓存中获取,而不必重新从服务器下载资源。这有助于减少网络延迟,提高页面加载速度,并减轻…

Windows提权—数据库提权-mysql提权mssql提权Oracle数据库提权

目录 Windows 提权—数据库提权一、mysql提权1.1 udf提权1.1.2 操作方法一 、MSF自动化--UDF提权--漏洞利用1.1.3 操作方法二、 手工导出sqlmap中的dll1.1.4 操作方法三、 moon.php大马利用 1.2 mof提权1.3 启动项提权1.4 反弹shell 二、MSSQL提权MSSQL提权方法1.使用xp_cmdshe…