[操作系统]4.文件管理

news2024/11/15 23:23:49

因为复习时间来不及了

还是老规矩,知识点覆盖不完全,具体内容请参考黑书,知识脉络来自王道操作系统

关于文件操作系统

1.文件系统基础

(1)文件的定义

文件时操作系统中的重要概念,是以计算机硬盘为基础载体存储在假期上的信息的集合

(2)文件的属性

文件的属性可以理解为文件的基本信息

包括名称,标识符,类型,位置,大小,保护,时间

(3)文件的基本操作

文件的基本操作是操作系统为用户提供的一些功能

比如创建文件,写文件,删除文件,文件重定位,截断文件.读文件

所有文件的复杂操作都可以被拆分为这六个步骤

2.文件的逻辑结构(*)

文件的逻辑结构指的是以用户的视角看待文件

(1)无结构文件也叫做流式文件

流式文件打个比方,很类似那种txt文件,在早期进行java流学习的时候,就是使用这些文件来存储一些信息.这种数据是按顺序,但是没有任何结构存放,只能使用穷举法获取某个数据

(2)有结构文件

有结构文件,其实可以类比为excel,或者数据库表这种形式的内容

并且能正常的区分出结构的数据,这种记录分为数据定长度和数据不定长度两种类型,按照组织记录的形式可以分为两种

1.顺序文件:顺序文件的特点是文件记录一个接一个按照顺序排列,如果文件和关键字有关(比如关键字为1的文件就是第一个文件)称之为顺序结构,而和关键字无关的,称之为串结构

2.索引文件:索引文件可以类比为有序列表or数组or切片,根据信息可以直接一次计算出所需文件的位置,索引文件的分为定长和不定长两种,定长文件可以通过算数得到我们需要的地址,而不定长文件实际上还是要通过遍历叠加,计算出我们所需的地址的`位置

3.顺序索引文件,顺序索引文件是前两种的集合,将顺序排列的文件划分为多个小组,每个组中的第一个被视为索引文件块,这些索引文件块会单独建立一个索引表管理

查询某个文件快,可以先找到所在组的第一个文件块,然后再通过遍历在组中寻找

4.直接文件或者散列文件

散列的性质已经很简单了,散列避免了顺序的特性,但是会造成冲突

(3)文件目录:

文件目录在就要用来管理一些东西,并且执行一些搜索,创建文件,删除文件,显示文件这类工作,进行操作的时候,可以考虑以下几种目录结构

1.单级目录结构:整个文件系统中只有一张表,所有的目录项都不能重名

2.二级目录结构;二级目录结构的第一节目录就算用户,每个用户拥有一个自己的目录表

3.多级目录结构:将两级目录结构进行推广,完成了一个树形的目录结构,当层次较多的时候,从根目录进行查询会导致目录查询耗费时间过长,所以会引入"相对目录"概念

4.无环图目录结构:无环图目录结构便于实现文件的共享,通过一个"共享节点"的数据结构来管理某个文件的共享状态.使用计数器来计算有多少用户在共享整个文件

当一个用户试图删除整个节点,count-1,当count=0的时候,即可真正删除整个绩点

(4)关于文件的共享

这里的文件共享指的是静态共享,并行和并发处理的则是动态共享

1.基于索引节点的共享方式

通过创建一个索引节点,然后进行计数,如果count为0,则可以删除整个索引节点

2.使用符号链来实现文件共享

只有文件的拥有者又有索引节点的指针

其他用户拥有的只是一个路径

(5)文件保护

文件保护可以使用以下几种方式来进行实现

1.访问类型:限制操作的类型

2.访问控制:对于访问者的身份进行验证

3.口令和密码:口令和密码的区别就是是否明文保存

2.文件系统的实现

(1)文件系统的层次结构

文件系统的层次结构是有多层次实现的

(1)用户调用接口:文件系统对于用户提供的与文件和目录相关的系统调用,比如新建删除文件这些操作

(2)文件目录系统:文件目录系统的主要功能是管理文件目录

(3)存取控制和验证模块

(4)逻辑文件系统与文件信息缓冲区

(5)物理文件系统

(6)辅助分配模块/设备管理程序模块

(2)文件的分配方式

1.连续分配方法

连续分配方法要求每个文件在内存中占据一个连续的区间

同时存在一个排序表,记录了文件的名字,起始地点和长度

比如                                       [ddaa, 0 ,2]

 名为ddaa的文件,起点是0,长度为2,可以理解为占据0,1这个两个块

连续分配杠十的优势就算支持顺序访问和世界访问,实现简单,但是缺点在于文件长度不易动态增加,因为一个文件结尾的下一个块可能也被分给了其他的文件,此外会产生大量的外部碎片,难以使用

2.连接分配

在链接分配中,文件可以分为多个盘块离散地存储内存中

每个盘块会单独开辟出一小块内存,来存储一个指向下一个盘块的指针,这些指针对于用户是透明的

缺点是盘块指针会消耗一定的存储空间,而且稳定性不好,容易造成文件丢失

但是可以使用别的方式来进行节约这个空间,比如单独成立一个FAT表数据结构

这种表会在系统启动的时候存入内存,所以可以直接在内存中寻找盘块,减少了IO次数

3.索引分配

在索引分配中,每个文件都存在一个索引块,这个索引块中存在了这个文件所有相关的盘块索引

例如,某个索引块(代表file1文件)的内容为[1,23,44,-1,-1]

代表这个文件是盘块1,盘块23,盘块44组成的文件

-1代表长度还没有这么长

但是如果盘块的数目太多,导致索引块长度不够无法完全记录文件的盘块有以下三种处理方案

1.连接方案:将多个索引块视为一体,另一种性质的连续分配

2.多层索引:类似属性表的处理方式

3.混合索引:总和以上两种方案

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

空闲表法:空闲表法其实属于另一种形式的连续分配方式,不过这次是管理空闲的列表

会按照一定顺序记录每一个空闲的区间,空闲块起始盘号,以及空闲盘块数目

空闲链表法: 

位视图法:纵列为磁盘序号,横行为磁盘块号,1代表着块被使用了

成组链接法:不知道是干啥的

3.关于磁盘的组织和管理

(1)磁盘的结构

 

简单的画了个示意图供给参考,可以分为盘面,扇面柱面三个维度,就可以定位到某个位置上

(2)关于磁盘调度的几个算法

或者说,是查询硬盘文件的方法

1.先来先服务:

先来先服务算法其实就是按照请求,寻址的顺序来获取磁盘盘块

其实就是按请求的需求不断跳转

2.最短时间寻找优先算法:

SSFT算法的处理是每次寻找距离当前磁头嘴贱的刺刀,以便每次寻找到时间最短

顾名思义,每次都去寻找距离自己最近的一个

3.扫描算法

扫描算法和最短时间寻找算法一样,但是这个的区别在于不是每次都寻找距离自己最近的,而是在开始时刻,选择距离自己最近的目标的方向,然后一直运行到磁盘的尽头.

到达尽头以后,会反方向继续遍历

4.循环扫描算法

循环扫描算法在扫描算法上做出的改动是

每次运行到磁盘的尽头,不是反方向继续扫描,而是快速回到起点,开始下一次的扫描

快速回到起点的过程不会服务任何进程,形象点理解就是......黄金矿工?

5.还有一种lock算法,是在上面两种扫描算法上做出的改动

不会直接遍历到边界了,如果探查到该方向没有其他任务,就会停下

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

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

相关文章

json-server 详解

这几天在写react的前端项目,想着后端接口没有,在网上也找不到比较合适的接口,所以在github和npm上翻了许久关于前端简单生成后端接口的工具,终于被找到了这个神仙工具json-server JSON-Server 是一个 Node 模块,运行 Express 服务器,你可以指定一个 jso…

CENTOS上的网络安全工具(二十四)Windows下的Hadoop+Spark编程环境构建

前面我们搭建了hadoop集群,spark集群,也利用容器构建了spark的编程环境。但是一般来说,就并行计算程序的开发,一刚开始一般是在单机上的,比如hadoop的single node。但是老师弄个容器或虚拟机用vscode远程访问式开发&am…

APM代码阅读(一):串口驱动

文章目录 前言一、AP_RangeFinder_TeraRanger_Serial.h二、AP_RangeFinder_TeraRanger_Serial.cpp三、AP_RangeFinder.cppinitdetect_instance_add_backendupdate 四、 AP_RangeFinder_Backend_Serial.cpp 前言 APM 4.2.3 以测距传感器的串口驱动为例进行阅读 其他的传感驱动都…

【Applied Algebra】扩域(Galois域)上的乘加法表构造

【Applied Algebra】扩域(Galois域)上的乘法表构造 在之前的文章里,我们讨论了扩域上(Galois域)的计算及其实现,但是侧重的是扩域中元素之间运算的细节实现,而如果想描述整个域的结构,就需要构造乘法表和加法表;实现仍然是基于c和符号计算库GiNaC; 运算表及其设计 考虑 F p n …

Zookeeper 基础知识汇总

一、zookeeper 概述 中文教程:https://www.docs4dev.com/docs/zh/zookeeper/r3.5.6/reference/zookeeperOver.html 1.1 概述 ZooKeeper 是⼀种分布式协调服务,⽤于管理⼤型主机。在分布式环境中协调和管理服务是 ⼀个复杂的过程。ZooKeeper 通过其简单的…

网内计算:可编程数据平面和技术特定应用综述

网内计算:可编程数据平面和技术特定应用综述 摘要——与云计算相比,边缘计算提供了更靠近终端设备的处理,降低了用户体验的延迟。最新的In-Network Computing范例采用可编程网络元素在数据达到边缘或云服务器之前计算,促进了常见…

Linux性能分析之perf(1)基础知识总结

Linux(09)之perf(1)基础知识总结 Author:Onceday Date:2023年1月31日 漫漫长路,才刚刚开始… 参考文档: Tutorial - Perf Wiki (kernel.org) linux性能分析工具专题-perf(事件采样,全面性能分析&#x…

时钟树综合跑不下去,怎么破?

吾爱IC社区第二十一期IC训练营正式开始招募啦(5月21号开营)!不知不觉小编的IC后端训练营课程已经举办21期了。每一期的报名时间也就1-3天,而且几乎每期都是爆满的情况。这背后的逻辑很简单。大家都信任吾爱IC社区这个品牌&#xf…

做副业的我很迷茫,但ChatGPT却治好了我——AI从业者被AI模型治愈的故事

迷茫,无非就是不知道自己要做什么,没有目标,没有方向。 当有一个明确的目标时,往往干劲十足。但做副业过程中,最大的问题往往就是 不知道自己该干什么。 干什么?怎么干?干到什么程度&#xff1f…

通过部署Java工程学习Jenkins

今天来学习Jenkins部署应用,在工作中一般都是提交代码到git之后,通过自动打包的功能形成jar包,然后运行jar包。服务器自动从git拉取最新代码进行打jar包的这个过程就通过Jenkins来进行。 Jenkins官网地址 首先我们可以看一下官网的版本 我们…

智能学习 | MATLAB实现GWO-SVM多输入单输出回归预测(灰狼算法优化支持向量机)

智能学习 | MATLAB实现GWO-SVM多输入单输出回归预测(灰狼算法优化支持向量机) 目录 智能学习 | MATLAB实现GWO-SVM多输入单输出回归预测(灰狼算法优化支持向量机)预测效果基本介绍模型原理程序设计参考资料预测效果 基本介绍 Matlab实现GWO-SVM灰狼算法优化支持向量机的多输…

Vue中如何进行状态持久化(LocalStorage、SessionStorage)

Vue中如何进行状态持久化(LocalStorage、SessionStorage)? 在Vue应用中,通常需要将一些状态进行持久化,以便在用户关闭浏览器或刷新页面后,仍能保留之前的状态。常见的持久化方式包括LocalStorage和Sessio…

Cracking C++(8): 开发环境的选择

Cracking C(8): 开发环境的选择 文章目录 Cracking C(8): 开发环境的选择1. 目的2. 工具代码编辑器 和 IDEWindows命令行界面编译器gcc/gclang/clangMicrosoft Visual Studio基于浏览器的编译器 3. 其他工具补充调试器代码分析工具其他 1. 目的 在看了 hackingcpp 的 C Develo…

《百年孤独》15句经典语录

句句都是人生真相,说透了所有人的孤独。 1、生命中曾经有过的所有灿烂,原来终究,都需要用寂寞来偿还。 2、过去都是假的,回忆是一条没有尽头的路。 这句话是最受读者欢迎的一句话,回忆就是一条没有尽头的路&#xf…

shell脚本基础5——常用命令写作技巧

文章目录 一、grep命令二、sed命令2.1 选项参数2.2 常用命令 三、AWK命令3.1 常用参数3.2 常用示例 四、find与xargs五、date命令六、对话框6.1 消息框6.2 yes/no对话框6.3 表单输入框6.4 密码输入框6.5 菜单栏6.6 单选对话框6.7 多选对话框6.8 进度条 七、常用写作技巧7.1 EOF…

我,ChatGPT,打钱

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 一、ChatGPT是个啥? chat:表示“聊天”。 GPT:则是G…

提升Python函数调用灵活性:参数传递类型详解

前言 在Python编程中,函数参数起着非常重要的作用。函数参数允许我们向函数传递数据,并在函数内部使用这些值。Python提供了多种参数传递类型,包括位置参数、关键字参数、默认参数、可变数量的位置参数、可变数量的关键字参数。这些不同的参数…

数据结构——串(字符串)

文章目录 **一 串的定义和实现****1 定义****2 串的存储结构****2.1 定长顺序存储表示****2.2 堆分配存储表示****2.3 块链存储表示** **3 串的基本操作** **二 串的模式匹配****1 简单的模式匹配算法****2 串的模式匹配算法——KMP算法****2.1 字符串的前缀,后缀和…

一起学SF框架系列5.4-模块Beans-DefaultListableBeanFactory

在生成ApplicationContext过程中,AbstractRefreshableApplicationContext.refreshBeanFactory()完成旧BeanFactory关闭,创建新的BeanFactory,即new DefaultListableBeanFactory(…)。然后bean实例化时调用本类的preInstantiateSingletons方法…

网安笔记12 IPsec

IPSec 基于通信IP环境下一种端到端,保证数据安全的机制 包含 两个安全协议,一个密钥管理协议, 标准价秘密技术为基础 DES/其他分组加密算法键值hash算法认证公钥有效的数字证书 AH协议提供信息源验证、完整性保证ESP提供信息源验证、机密…