操作系统-笔记-第四章-文件管理

目录

四、第四章——文件管理

1、文件管理——基础概念

(1)文件结构

(2)操作系统提供的接口

(3)总结

2、文件的逻辑结构

(1)有结构文件(类似SQL表文件)

(2)顺序文件

(3)索引文件——类似(SQL索引)

(4)索引顺序文件(结合了顺序+索引)

(5)多级索引——(开始套娃啦~)

(6)总结

3、文件目录

(1)文件控制块

(2)单级目录结构(out)

(3)两级目录结构(out)

(4)树形目录结构(out)

(4)无环图目录结构

(5)索引结点

(6)总结

4、文件的物理结构

(1)连续分配(可以理解为malloc)

(2)链接分配(2种)——隐式链接

(2)链接分配(2种)——显式链接

(3)索引分配

(3)索引表太大——链接方案

(3)索引表太大——多层索引

(3)索引表太大——混合索引(最优解)

(4)还有一种方式(自己想的)

(5)总结

5、物理结构 & 逻辑结构

6、文件存储——空间管理

(1)存储空间的划分(文件卷)

(2)管理方法——空闲表法

(3)管理方法——空闲链表法

(3)管理方法——位示图法

(4)成组链表法(数组+链表)

(5)总结

7、文件的基本操作 (重点——打开+读)

(1)创建文件

(2)删除文件

(3)打开文件

(3)打开文件——打开文件表

(4)关闭文件

(5)读文件——读出外存

(6)写文件——写回外存

(7)总结

8、文件共享

(1)硬链接

(2)软链接 (Windows里面的快捷方式)

(3)总结

(4)硬链接和软链接的区别

9、文件保护

(1)口令保护

(2)加密保护

(3)访问控制

(4)总结

10、文件系统的层次结构

11、文件系统的全局结构

12、虚拟文件系统 

(1)统一接口

(2)下层的文件系统(需要实现特点功能,否则操作系统将不认~)

(3)iNode和Vnode

(4)文件系统的挂载(挂载到操作系统上)

13、磁盘的结构

(1)柱面号、盘面号、扇区号

(2)活动磁头、固定磁头

(3)可换磁盘、固定磁盘

14、磁盘调度算法(重点)

(1)读写操作——花费的时间

(2)先来先服务(绝对公平-简单)

(3)最短寻找时间优先(SSFT-贪心算法-有饥饿现象)

(4)扫描算法【SCAN】

(5)LOOK调度算法【LOOK】(边走边看)

(6)循环扫描算法【C-SCAN】

(6)C-LOOK调度算法【C-LOOK】

(7)总结

15、减少磁盘延迟时间的方法

(1)交替编号

(2)减少磁道移动

(3)不同盘片中的扇区-错位命名

(4)总结

16、磁盘管理

(1)磁盘初始化

(2)引导块

(3)损害的磁盘块

17、固态硬盘

(1)固态和机械

(2)结构

(3)寿命问题(不要担心玩坏~)


四、第四章——文件管理

1、文件管理——基础概念

(1)文件结构

(2)操作系统提供的接口

(3)总结

2、文件的逻辑结构

(1)有结构文件(类似SQL表文件)

无结构——txt文件

有结构——SQL表文件

定长(char)——可变长(varchar)

(2)顺序文件

链式(不考察)

顺序(考察)——注意:他的增加和删除(开销比较大!但是串比较简单)

(3)索引文件——类似(SQL索引)

索引文件——类比——SQL中的索引

能够高效的进行检索——(空间换时间)

注意:你还要维护这个索引表(有额外的开销~)

(4)索引顺序文件(结合了顺序+索引)

创建的索引是进行分组过的——(这是一个折中的方法,结合前两者的优点)

相当于——先对全部数据进行【分组】——再把每一组的特点提出来——创建索引

(5)多级索引——(开始套娃啦~)

既然可以创建一次索引,那么就可以在索引的基础上,再创建一个~

(6)总结

3、文件目录

(1)文件控制块

(2)单级目录结构(out)

(3)两级目录结构(out)

(4)树形目录结构(out)

(4)无环图目录结构

有软链接,还有快捷链接~(这是实际应用中有的唉~)

(5)索引结点

把【目录项】再一次提取信息——创建【一个索引结点】——方便查找

类似——SQL索引(注意:这里也可以套娃~)

【创建了索引——空间换时间】——同时可以减少磁盘IO总数(就是减少了查找范围)

(6)总结

4、文件的物理结构

3种——连续、链接、索引

(1)连续分配(可以理解为malloc)

优点:速度快,可以直接找到【指定磁盘块】

缺点:拓展大小不方便,会产生很多【磁盘碎片】

结论:物理上采用连续分配的文件不方便拓展。

结论:物理上采用连续分配,存储空间利用率低,会产生难以利用的磁盘碎片

可以用紧凑来处理碎片,但是需要耗费很大的时间代价。

(2)链接分配(2种)——隐式链接

方便拓展,但是只能顺序访问~

(2)链接分配(2种)——显式链接

创建一个索引表(文件分配表——FAT)

空间换时间(和索引一样)

为什么叫显式?为什么叫隐式?估计你也知道了

一个链接是放在每个内存块的屁股,一个是专门创建一个索引表~

但是:一个磁盘,他只会建立一张表!!!(然后开机就读入内存-常驻内存~)

一个磁盘中的所有文件,共用一张表!!!

(3)索引分配

每有一个文件——就为其专门创建一个索引表(太贴心了~)(可以随机访问)

显示就只有共用~

可见,索引分配方式可以支持随机访问。文件拓展也很容易实现(只需要给文件分配一个空闲块,并增加一个索引表项即可)但是索引表需要占用一定的存储空间

(3)索引表太大——链接方案

把索引表分为多个就好啦~(因为你一个磁盘块放不下嘛~那分为几个部分就行了~)

文件太大——这个方案就很低效!!!

(对比一下,MySQL的【B+树索引】,貌似是这样的,狗头.jpg)

(3)索引表太大——多层索引

刚刚提到B+树索引,这里不就来了~(多级索引,树型索引,套娃开始~)

每一层索引,都可以存放不同的大小(2层-64MB,3层-16GB)

(3)索引表太大——混合索引(最优解)

前面几个——直接索引

中间几个——一级索引

后面几个——二级索引

如果还有——三级索引…(以此类推)

软考也考唉~~~(很熟悉,嘻嘻)

优点:灵活(IO次数适中)

小文件——直接索引

中型文件——(直接+二级)

大文件——(直接+二级+三级…)

(4)还有一种方式(自己想的)

在Java中,数组超过一定长度时,会自动转为红黑树

那么咱也可以自动切换,当你小于多少时,用直接索引,大于多少时,变为二级索引~

以此类推(临时的想法,虽经不住推敲,但是还是想记录下来~)

同时,咱要知道,索引方法还有其他的,不止这几张,长路漫漫,学无止境,加油!

(5)总结

5、物理结构 & 逻辑结构

一个是用户来操心(逻辑)

一个是操作系统来操心(物理)

互相独立,互不干扰

6、文件存储——空间管理

(1)存储空间的划分(文件卷)

(2)管理方法——空闲表法

和内存管理类似

如何分配空间?(有对应的算法)——参考【内存分配】

如何回收空间?(有没有相邻的空间,需要合并?)

(3)管理方法——空闲链表法

类似链表(适用于离散空间)

(3)管理方法——位示图法

离散和连续分配——都适用

被占用——为1

未使用——为0

(4)成组链表法(数组+链表)

注意分配+回收的方法【不容易考】

(5)总结

7、文件的基本操作 (重点——打开+读)

记住这些是单独进行的,只是软件把动作添加了而已

比如,你【打开文件】之后,就会自然有一个【读文件的】操作

这里把动作拆解开来,是方便理解每一步具体干了什么!

(1)创建文件

1、申请空闲空间—2、创建目录项——(索引表也得维护)

目录项——你可以理解为SQL创建了一条数据(里面包含他所有的信息)

但是内容是在外存里面的——他只是存储了对应的【磁盘块号】~

(2)删除文件

1、找到目录项——2、回收磁盘块 —— (索引表什么的~)

(3)打开文件

1、找到目录项——2、权限检测——3、将目录项+放入内存——3、【打开计算器】+1

(3)打开文件——打开文件表

打开计数器(用于数据共享)——设计一个【打开文件的总表】

(当文件要被删除时,就可以查看该表,是否打开~)

(4)关闭文件

1、打开文件表中【对应的表项】删除——2、内存资源回收——3、打开计算器-1

(如果为0,则直接删除对应的表项)

(5)读文件——读出外存

(6)写文件——写回外存

(7)总结

8、文件共享

(1)硬链接

硬链接是在文件系统中【创建多个文件名】指向【同一个文件的数据块】。

这些文件名在文件系统中被视为等同的,因为它们指向相同的数据块。

(2)软链接 (Windows里面的快捷方式)

(3)总结

硬链接和软链接的主要区别:

硬链接是指多个文件名指向同一个文件数据块,

软链接则是指一个特殊的文件,其中包含了指向另一个文件的路径。

硬链接通常用于在不同的目录中创建相同文件的多个副本,以节省存储空间。

软链接通常用于创建指向其他文件或目录的快捷方式,以方便用户访问。

(4)硬链接和软链接的区别

1、本质不同

硬链接:同一个文件,多个名称。

软链接:不同的文件。

2、跨分区

硬链接:不支持跨分区。

软链接:支持跨分区。

3、目录

硬链接:不支持对目录创建。

软链接:支持对目录创建。

4、相互关系

硬链接:删除某一个硬链接,另一个硬链接不影响使用。

软链接:原始文件和软链接有依赖关系,原始文件删了,软链接就失效了。

5inode编号

硬链接:inode编号是相同的。

软链接:inode编号不同。

6、链接数

硬链接:删除一个硬链接,硬链接的链接数会有变化。

软链接:删除一个软链接,链接数不会有变化,删除的相当于是一个文件(或快捷方式)。

7、相对路径:原始文件路径

硬链接:硬链接的相对路径,是相对的当前工作目录的相对路径。

软链接:软链接的原始文件路径是,相对的软链接的相对路径,而不是相对当前工作目录。

8、文件类型

硬链接:硬链接的文件类型是,原来是什么就是什么,例如:原来是普通文件,还是普通文件。

软链接:软链接的文件类型是L

9、命令的实现不一样

硬链接:ln

软链接:ln -s

9、文件保护

(1)口令保护

保存在操作系统中,不够安全~

(2)加密保护

编码和译码,要花费额外时间(不过保密性不错~

除了简单的异或加密之外,还有一些常用的文件加密保护算法。以下是其中几种:

  1. 对称加密算法:对称加密使用相同的密钥来加密和解密数据。常见的对称加密算法包括 AES(高级加密标准)和DES(数据加密标准)等。
  2. 非对称加密算法:非对称加密使用一对密钥,即公钥和私钥。公钥用于加密数据,而私钥用于解密数据。常见的非对称加密算法包括 RSA ECC(椭圆曲线加密)等。
  3. 哈希函数:哈希函数将输入数据转换为固定长度的哈希值,通常是一个唯一的标识符。常见的哈希函数包括 SHA-256 MD5 等。虽然哈希函数本身不是加密算法,但它们常用于验证数据完整性和生成数字签名。
  4. 混淆和编码:混淆和编码是通过改变数据的表示形式来隐藏其真实内容。常见的技术包括 Base64 编码和 URL 编码等。这些方法并不提供真正的加密,但可以用于隐藏敏感数据的原始格式。

(3)访问控制

大部分操作系统都支持控制访问(分组、给文件加权限…)

用户分组——Linux中就有(root用户可以建立分组,并把用户进行分组~

还有chmod 修改文件权限~

Windows中,也可以设置权限~

(4)总结

10、文件系统的层次结构

例子:

用户使用—文件查询—权限查询—逻辑地址—物理地址—完成操作—空间重组

11、文件系统的全局结构

Open(打开文件)——在目录缓存中查询文件

找到文件后——文件表信息更新

在该进程中——新建信息(记录文件操作)【方便后续操作】

12、虚拟文件系统 

(1)统一接口

(2)下层的文件系统(需要实现特点功能,否则操作系统将不认~)

(3)iNode和Vnode

将【iNode】读入主存后,进一步封装,变为【vnode】,方便后续操作

PSVnodeiNode的加强版

目的:方便操作系统对文件进行操作

(4)文件系统的挂载(挂载到操作系统上)

比如:你插了一个U盘,U盘的文件就需要挂载到操作系统上~

1注册到挂载表上,让【虚拟文件系统】发现【新的文件系统】

2、【新的文件系统】提供功能函数给【操作系统】

目的:方便【虚拟文件系统】操作。【类似:告诉他如何在本地实行各种权利】

3、把文件系统加入到【挂载点】

挂载后的截图:

13、磁盘的结构

 

         

(1)柱面号、盘面号、扇区号

(2)活动磁头、固定磁头

(3)可换磁盘、固定磁盘

14、磁盘调度算法(重点)

(1)读写操作——花费的时间

时间优化问题:

1、硬件——转速(延迟、传输)

2、软件(操作系统)——寻道时间——尽可能让磁头减少移动!!!

(2)先来先服务(绝对公平-简单)

(3)最短寻找时间优先(SSFT-贪心算法-有饥饿现象)

在一系列的磁道请求中,找到目前离他最短的磁道

(4)扫描算法【SCAN】

我愿称之为——【调头算法】~或者【老牛算法】

一条路走到头,才死心!(这是缺点)

(往一个方向走到头,才可以调头~)

(5)LOOK调度算法【LOOK】(边走边看)

边走边看【当前面没有需求时,就调头~

(6)循环扫描算法【C-SCAN】

扫描算法的优化

原来的扫描——往返扫描(类似往返跑)

循环扫描是(只能从头到脚,不能再从脚到头)

目的:响应磁道平均~

(但是也有点呆板,需要加一个LOOK~边走边看)

(6)C-LOOK调度算法【C-LOOK】

循环扫描的加强版——边走边看~

(7)总结

其实,SCAN和LOOK差不多C-SACN和C-LOOK差不多

都只是加了一个边走边看~

15、减少磁盘延迟时间的方法

相邻的扇区,无法连续读取(因为每读取一个扇区,就得处理数据)

要读下一个扇区,就等他在转一圈~

如何实现连续的读取呢?

(1)交替编号

把扇区交替编号~【给读取数据加一个间隔时间,来处理数据】

(2)减少磁道移动

磁盘编址方式——【磁道号,盘面号,扇区号】(不能随意换位置哟~)

连续地址都是从低位到高位

那么就可以【减少移动磁头】,【切盘】就行了~

(3)不同盘片中的扇区-错位命名

磁头不需要移动了,但是切盘后读取来不及,得错位命名

留出空闲时间,来处理数据

(4)总结

16、磁盘管理

(1)磁盘初始化

(2)引导块

(3)损害的磁盘块

17、固态硬盘

固态硬盘(Solid State Disk或Solid State Drive,简称SSD),又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。

(1)固态和机械

(2)结构

(3)寿命问题(不要担心玩坏~)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无涯教程-PHP - preg_match()函数

preg_match() - 语法 int preg_match (string pattern, string string [, array pattern_array], [, int $flags [, int $offset]]]); preg_match()函数在字符串中搜索pattern,如果存在pattern,则返回true,否则返回false。 如果提供了可选…

Pandas学习(完成文件写入、追加写入、读取操作)

问题引入 现在有这么一个需求 我要对我的很多设备进行快照处理,打完快照之后需要记录我的设备IP和快照时间 当我们解决了需求的其他内容,只剩记录信息的时候,可以怎么做呢 这时候就可以引入我们的pandas模块啦,它对数据进行一系列…

Java【HTTP】什么是 Cookie 和 Session? 如何理解这两种机制的区别和作用?

文章目录 前言一、Cookie1, 什么是 Cookie2, Cookie 从哪里来3, Cookie 到哪里去4, Cookie 有什么用 二、Session1, 什么是 Session2, 理解 Session 三、Cookie 和 Session 的区别总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 …

开源在线图片设计器,支持PSD解析、AI抠图等,基于Puppeteer生成图片

Github 开源地址: palxiao/poster-design 项目速览 git clone https://github.com/palxiao/poster-design.git cd poster-design npm run prepared # 快捷安装依赖指令 npm run serve # 本地运行将同时运行前端界面与图片生成服务(3000与7001端口),合成图片时…

【C语言学习】指针变量

一、运算符& 1.&运算符可以获得变量的地址,它的操作数必须是变量 int i; printf("%x",&i);2.地址的大小是否与int相同取决于编译器 int i; printf("%p",&i);//%p以32进制输出i的地址二、指针变量 指针变量是保存地址的变量…

JavaWeb+JSP+SQL server学生学籍管理系统设计与实现(源代码+论文+开题报告+外文翻译+答辩PPT)

需求分析 本系统主要是针对各个高校的学生学籍进行管理,系统满足以下几点要求: 系统安全性。由于此系统中的操作都是由用户操作的,所以对于用户的权限设置比较严格。对于数据库,设置了不同用户的权限,不同权限进入不…

【并发编程】详解并发编程中Synchronized的特性(可见性、有序性、可重入性、禁止指令重排序)(๑•̀ㅂ•́)و✧

1、synchronized 禁止指令重排分析 我们先看如下代码: class MonitorExample {int a 0;public synchronized void writer() { //1a; //2} //3public synchronized void reader() { //4int i …

[虚幻引擎] UE使用虚拟纹理在模型上显示挖空效果

此教程是记录如在UE中使用虚拟纹理,实现模型挖洞的效果。 1. 新建项目,开启项目支持虚拟纹理并并重启。 2. 新建一个基础关卡 3. 拖动“运行时虚拟纹理体积” 进入场景,并把体积修改变大,以可以完全包括到地板。 4. 创建一个虚拟纹…

记一次从Redis弱口令到RCE

Fscan扫描网段发现了一些开启了6379的服务器,逐个尝试了下未授权,然后尝试了下爆破 hydra爆破redis hydra -P [字典目录] redis://xxx.xxx.xxx.xxx结果还真让爆出来一个 得到密码后,连接上去,这里用的是Another Redis Desktop M…

FastDFS与Nginx结合搭建文件服务器,并实现公网访问【内网穿透】

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

【嵌入式】MKV31F512VLL12 微控制器 (MCU) 、Cyclone® IV E EP4CE10E22I8LN,FPGA-现场可编程门阵列芯片

1、MKV31F512VLL12 微控制器 (MCU) 是适用于BLDC、PMSM和ACIM电机控制应用的高性能解决方案。这些MCU采用运行频率为100MHz/120MHz、带数字信号处理 (DSP) 和浮点单元 (FPU) 的ARM Cortex-M4内核。KV3x MCU配备两个采样率高达1.2MS/s的16位ADC、多个控制定时器以及512KB闪存。 …

Vue使用Element的表格Table显示树形数据,多选框全选无法选中全部节点

使用Element的组件Table表格,当使用树形数据再配合上多选框,如下: 会出现一种问题,点击左上方全选,只能够选中一级树节点,子节点无法被选中,如图所示: 想要实现点击全选就选中所有的…

【HarmonyOS】服务卡片 API6 JSUI跳转不同页面

【引言】 “JS卡片支持为组件设置action,包括router事件和message事件,其中router事件用于应用跳。若设置router事件,则action属性值为"router";abilityName为卡片提供方应用的跳转目标Ability名;params中的…

stm32的命令规则

stm32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:

面试题-React(三):什么是JSX?它与常规JavaScript有什么不同?

在React的世界中,JSX是一项引人注目的技术,它允许开发者在JavaScript中嵌套类似HTML的标签,用于描述UI组件的结构。本篇博客将通过丰富的代码示例,深入探索JSX语法,解析其在React中的用法和优势。 一、JSX基础语法 在…

陕西广电 HG6341C FiberHome烽火 光猫获取超级密码 改桥接模式 提升网速

光猫默认的路由模式实测在100M宽带下只能跑到60M左右,只有改成桥接模式才能跑满,不损失性能。但是改桥接需要给运营商打电话,有的时候不想麻烦他们,这时获取超级密码进行更改就是一个不错的选择了 分析 之前写了一篇HGU B2 光猫的…

触摸屏与PLC之间 EtherNet/IP无线以太网通信

在实际系统中,同一个车间里分布多台PLC,用触摸屏集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候,如果布线的话,工程量较大耽误工期,这种情况下比较适合采用无线通信方式。 本方案以MCGS触摸屏和…

IO流笔记

文件基础知识 创建文件 package org.example; import org.junit.Test;import java.io.File; import java.io.IOException;public class FileCreate{public static void main(String[] args) {}Test//方式1:new File(Strin pathname)public void create01(){File fil…

在线零售供应链管理:从0到100

全球57%的公司将其供应链视为竞争优势,然而只有6%的人表示完全了解它。无论您是首次在线卖家还是经验丰富的专业人士,驾驭管理高效且具有成本效益的零售供应链的复杂性都可能具有挑战性。一起来了解一下吧! 供应链管理是什么?它基…

Python网络爬虫入门到实战

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 网络爬虫(We…