【自用】王道文件管理强化笔记

news2024/11/26 0:42:46

文章目录

      • 操作系统引导:
      • 磁盘初始化
        • 文件打开过程角度1
        • 文件的打开过程角度2
      • 内存映射的文件访问

操作系统引导:

①CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
②)将磁盘的第一块–主引导记录读入内存,执行磁盘引导程序,扫描分区表
③从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
④从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作

在这里插入图片描述

磁盘初始化

在这里插入图片描述
磁盘初始化:
step1:进行低级格式化(物理格式化),将盘的各个磁道划分为扇区。一个扇区通常可分为头、数据区域(如512B大小)、尾三个部分组成。管理扇区所需要的各种数据结构一般存放在头、尾两个部分,包括扇区校验码(如奇偶校验、CRC循环冗余校验码等,校验码用于校验扇区中的数据是否发生错误)
Step2:将磁盘分区,每个分区由若干柱面组成(即分为我们熟悉的C盘、D盘、E盘)
Step3:进行逻辑格式化,创建文件系统。包括创建文件系统的根目录、初始化存储空间管理所用的数据结构(如位示图、空闲分区表)

在这里插入图片描述
ROM:
ROM中只存放很小的“自举装入程序”
开机时计算机先运行“自举装入程序”,通过执行该程序就可找到引导块。并将完整的“自举程序”读入内存,完成初始化。

FCB和inode指针之间的关系
在这里插入图片描述
inode->对应的是struct结构体=>inode a[V],连续存储

引导块:引导操作系统初始化的一系列操作
超级块:包含一些重要的文件系统管理信息,如:魔数(是用来告诉操作系统这个文件的类型的,魔数magic number是计算机(或者说是BIOS)用来判断此设备是否包含引导程序的),磁盘转速,磁道数,扇区数。
位示图
注1:位示图中,每个bit对应一个磁盘块,因此,若磁盘块共有n个则位示图也至少要有 nbit。
注2:这里只用了一个磁盘块存储位示图一个磁盘块大小为4KB,即 32K bit,因此这个位示图能支持的磁盘大小上限为 32K 个块。如果需要支持更多磁盘块,则需要扩充位示图的大小
inode区
注:“inode结点"就是“索引节点”。在Unix文件系统中,所有的索引结点集中存放。用于表示“文件物理结构"的“混合索引表"被包含在inode结点中,通过“混合索引表”,即可找到一个文件中每个块存储的物理位置

注1:在Unix文件系统中,每个文件必须对应一个inode结点,而inode结点的总数量是有上限的。如:该示意图中,仅用两个磁盘块,即8KB作为inode区,假设每个inode大小为64B,则该文件系统最多只能存储8KB/64B=128个inode结点,相应地,该系统最多只能支持128个文件。
注2:当一个进程通过open系统调用打开某个文件时,操作系统需要将该文件对应的inode结点读入主存。

根目录:存储在磁盘的固定位置
注1: 根目录的信息存储在磁盘的固定位置,这样可以保证开机时,能够找到根目录,再从根目录出发找到其他信息
注2: 开机时,根目录的内容通常会被加载到内存,并一直常驻内存
注3: 由于Unix文件系统采用了“索引节点”,因此每个目录项只需包会“文件名、inode号”、文件的具体属性包含在 inode 中
挂4: 每个目录文件中默认包含两个目录项,分别是“…“和"…“。”.“表示当前目录,”…“表示上一级目录。根目录比较特殊,没有所谓的“上一级目录”,因此它的目录项”."指向自身。

问题1:为什么根目录要存放在磁盘的固定位置?
回答1:因为开机的时候,需要从根目录出发,找到操作系统初始化相关的各种文件。因此,将根目录存放在固定位置,那么开机时候取这个固定位置读入根目录的数据即可

索引表和inode 的关系:索引表是inode的一部分,红色框出来的部分是inode
在这里插入图片描述

在这里插入图片描述

思考1:如何确定目录文件A需要占多少个块?
回答1:(目录项的数量*每个目录项的大小)/块大小

文件打开过程角度1

思考2:如果从根目录开始查找,要将文件“/A/Dm”读入内存,描述背后发生了什么?
回答2:根目录文件常驻内存,首先查内存中的根目录,找到目录项A–根据目录项A可知,文件A对应 1号inode结点,因此要将1号inode结点从磁盘读入内存–根据刚读入的1号inode结点,可知文件A的索引信息,也就是知道了文件A的每一个块存储在什么位置,接下来可读入目录文件A的第一块(6号物理块)–尝试查找目录项Dm,如果没找到,那么还需要读入目录文件A的第二块(7号物理块)–找到目录项Dm之后,根据目录项记录的inode号,将Dm的inode结点从磁盘读入内存(前面属于open系统调用的内容)|–根据Dm的inode结点,读入Dm的第一块(m号物理块)、第二块(k号物理块)

每个进程一个用户打开文件表(PCB中,通过PCB,操作系统可以访问和管理进程的打开文件表。),用于记录该进程已经打开的文件。表中每一项都对应一个已打开的文件,并通过一个文件描述符(fd)来标识。文件描述符是一个整数,用于在用户进程的打开文件表中唯一标识一个已打开的文件。当进程通过系统调用(如open)打开文件时,系统会为该文件分配一个文件描述符,并返回给进程。

系统打开文件表独一份,用于记录所有已打开的文件。表中每一项都包含了文件的各种信息,如文件的inode节点指针(指向内存中已读入的inode信息)、打开该文件的进程数等。

文件的打开过程角度2

当一个进程通过open系统调用打开文件时,系统会首先查找文件的inode节点(如果尚未在内存中,则先从磁盘读取,以块为单位进行检索),并将其信息存储在系统级的打开文件表中。
然后,在用户进程的打开文件表中创建一个新的表项,指向系统级打开文件表中的相应项,并分配一个文件描述符。
最后,将文件描述符返回给进程,以便后续的文件读写操作。

TIPS:
如果多个进程同时打开同一个文件,每个进程都会在自己的打开文件表中创建一个表象,但这些表象都指向系统级打开文件表中的同一个项。
系统级打开文件表中的“打开该文件的进程数”字段会相应增加,以记录有多少个进程正在使用该文件。

在这里插入图片描述

内存映射的文件访问

解决读写文件效率低下的中心思想是:把磁盘访问变成内存访问。实现这种访问转变的手段就是内存映射的文件访问

内存映射的文件访问原理:把需要访问的文件映射到一个进程的虚拟地址内,这样访问该虚拟地址就相当于访问文件。

内存映射的文件访问目的:是为了文件的共享,即可以将同一个文件映射到两个或多个进程的虚拟地址空间。

文件的访问类型:顺序访问和随机访问

  • 文件的实现要解决如下问题:
    • 给文件分配磁盘空间

    • 记录这些磁盘空间的位置

    • 将文件内容存放在这些空间

      非连续存放方式通过链表方式实现,在每个数据块里面留出一个指针的空间,用来存放下一个数据块所在的地址。
      把所有指针从单个数据块抽取出来,全部放在一起,形成一张表。称为文件分配表(File Allocation Table)


FAT数据结构是静态链表
问题1:FAT表中,每个表项的大小对文件系统有什么影响?
回答1:①对文件系统支持的最大磁盘块数有影响,如:每个FAT表项16bit,则最多只能表示2^16个块号;②)对FAT表的总大小有影响,每个表项的大小*表项的数量=FAT表的大小

问题2:简述操作系统是如何使用FAT表的?
回答2:开机时,就会把整个FAT表读入内存,系统运行过程中,该表会一直常驻内存,也就是说,查FAT表不需要读磁盘,内存里本来就有这个表。系统运行过程中,如果要访问某个文件,则首先要找到这个文件对应的目录项,从目录项中找到文件的起始块号,再根据起始块号查FAT表,从而确认文件的后序那些块存放在哪里。

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

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

相关文章

【机器学习】深度学习、强化学习和深度强化学习?

深度学习、强化学习和深度强化学习是机器学习的三个重要子领域。它们有着各自独特的应用场景和研究目标,虽然都属于机器学习的范畴,但各自的实现方式和侧重点有所不同。 1. 深度学习(Deep Learning) 深度学习是一种基于神经网络的…

2024 年在线翻译谁称霸?论文翻译场景大揭秘!

现在这世界,语言就是把我们连在一起的绳子,挺关键的。不管搞研究、做生意还是传文化,翻译得又快又准。2024年,翻译这行竞争挺猛的,各种在线翻译工具都挺拼的。咱们今天就聊聊论文翻译,瞅瞅谁能在这场翻译比…

Meta 发布 Quest 3S 头显及 AR 眼镜原型:开启未来交互新视界

简介 在科技的浪潮中,Meta 始终站在创新的前沿,不断为我们带来令人惊叹的虚拟现实和增强现实体验。2024 年 10 月 6 日,让我们一同聚焦 Meta 最新发布的 Quest 3S 头显及 AR 眼镜原型(Orion),探索这两款产品…

【Blender Python】5.Blender场景中的集合

概述 这里的“集合”是指Blender场景中的集合。你可以在“大纲视图”面板中看到 图标的,就是集合,可以看做是文件夹,用于分类和整理场景中的对象。 获取场景的集合 >>> C.scene bpy.data.scenes[Scene]>>> C.scene.coll…

nodejs 构建高性能服务器的关键技术

nodejs 构建高性能服务器的关键技术 演示地址 演示地址 源码地址 源码地址 获取更多 获取更多 在现代 Web 开发中,Node.js 已成为构建高性能、可扩展网络应用的首选平台之一。它的非阻塞 I/O 模型与事件驱动架构使其能够在处理大量并发请求时表现出色&#xff0…

环形缓冲区(Ring Buffer)在STM32 HAL库中的应用:防止按键丢失

环形缓冲区(Ring Buffer)又称为循环缓冲区或圆形队列,是一种数据结构,它用于管理固定大小的数据存储空间。环形缓冲区本质是一个一维数组,不过是收尾相连的,类比一条蛇咬自己尾巴。 环形缓冲区重要性&…

危机四伏|盘点紧盯我国的五大APT组织

毒云藤(APT-C-01) 命名:该组织是 360 独立发现的,并率先披露了该组织的部分相关信息符合 360 对 APT 组织就行独立命名的条件。 360 威胁情报中心将 APT-C-01 组织命名为“毒云藤”,主要是考虑了以下几方面的因素&…

L1415 【哈工大_操作系统】CPU调度策略一个实际的schedule函数

L2.7 CPU调度策略 1、调度的策略 周转时间:任务进入到任务结束(后台任务更关注)响应时间:操作发生到响应时(前台任务更关注)吞吐量:CPU完成的任务量 响应时间小 -> 切换次数多 -> 系统…

curses函数库简介及使用

curses函数库简介及使用 导语curses简介屏幕输出读取清除移动字符 键盘键盘模式输入 窗口WINDOW常用函数屏幕刷新优化 子窗口keypad彩色显示pad总结参考文献 导语 curses函数库主要用来实现对屏幕和光标的操作,它的功能定位处于简单文本行程序和完全图形化界面之间…

【重学 MySQL】五十八、文本字符串(包括 enum set)类型

【重学 MySQL】五十八、文本字符串(包括 enum set)类型 CHAR 和 VARCHARTEXT 系列ENUMSET示例注意事项 在 MySQL 中,文本字符串类型用于存储字符数据。这些类型包括 CHAR、VARCHAR、TEXT 系列(如 TINYTEXT、TEXT、MEDIUMTEXT 和 L…

鸿蒙开发(NEXT/API 12)【管理应用与Wear Engine服务的连接状态】手机侧应用开发

监测应用与Wear Engine服务的连接状态 华为运动健康App在后台停止服务(如功耗过高),从而导致应用与Wear Engine服务的连接状态发生变化。对于类似这种不确定的断开情况,开发者可以通过本功能特性了解当前应用和Wear Engine的连接…

NatGo我的世界联机篇

书接上回 这里的TCP是JAVA,UDP是BE,选自适合你的映射类型 内网端口就填下面图片在你游戏同一个地方的数字!!! 就是我填12345的地方,mod-自定义局域网联机 默认 25565,如果出现无法创建本地游戏,那可能是端口被占用或…

卷积层是如何学习到图像特征的?

你好啊,我是董董灿。 想搞懂这个问题,需要先了解我们所说的特征指的是什么?然后再了解卷积核是如何学到的特征。 我们一步步来。 1、我们先来理解图像的特征 对于一张原始图像而言,说原始图像是相对于经过卷积处理而言的。 对…

【文心智能体】旅游攻略版,手把手教你调用插件实现智能体,绝对的干货满满!

1.灵感来源 需要创建一个智能体,首先当然是需要一个创作灵感啦,那么恰逢国庆假期,但是网上各种各样的旅游资料使我头晕目眩,刚好呢百度的文心智能体平台给我们提供了各种各样的插件以及知识库,可以供我们随心所欲地调…

嵌入式硬件设计中EDA布局与布线实现

大家好,今天主要给大家分享一下,如何使用立创EDA进行布局和布线,具体实现过程如下: 第一:PCB概念介绍 在介绍PCB的时候,先来说明一下,电子管的发明史。 贝尔在1876年发明了电话,爱迪生1879年发明了白炽灯、特斯拉于1888年发明了电动机,所有这些,都为电子学的诞生准…

2024 热门的4大电脑剪辑软件大盘点。

在电脑上进行视频剪辑能够让我们更好的发挥创意,制作出精彩的视频作品。同时也需要依赖一些比较专业的视频剪辑工具。这几款视频剪辑软件,无论是制作个人视频、商业广告还是电影预告片,都是非常不错的选择。 1、福昕电脑剪辑 直达链接&#…

vSAN05:vSAN延伸集群简介与创建、资源要求与计算、高级功能配置、维护、故障处理

目录 vSAN延伸集群延伸集群创建延伸集群的建议网络配置vSAN延伸集群的端口见证主机的资源要求vSAN延伸集群中见证节点带宽占用vSAN延伸集群的允许故障数vSAN延伸集群不同配置下的空间占用 vSAN延伸集群的HA配置vSAN延伸集群的DRS配置vSAN存储策略以及虚拟机/主机策略的互操作vS…

系统架构设计师③:数据块系统

系统架构设计师③:数据块系统 数据库模式 数据库模式是指数据库的结构和组织方式,它描述了数据库中数据的逻辑结构和组织方式,是数据库设计的核心组成部分。以下是关于数据库模式的详细解析: 一、定义与组成 定义:…

4款专业电脑数据恢复软件,帮你保障数据安全。

电脑里面会出现的数据丢失场景有很多,像硬盘故障、回收站清空、电脑格式化、系统崩溃、病毒入侵等等;如果发现数据丢失后,建议应停止使用电脑,避免新的数据写入覆盖丢失的数据。然后再尝试进行数据找回,如果想自己进行…