#复习# 操作系统 @第四章_文件管理

1. 文件系统基础

1.1 文件的概念

     1. 文件的定义

          - 文件是一段程序或者数据的集合。

1.2 文件的逻辑结构

 -  文件的逻辑结构是从用户观点出发看到的文件的组织形式。

     1. 无结构文件(流式文件)

         - 无结构文件是最简单的文件组织形式。无结构文件是将数据按照顺序组织成记录并积累保存起来的。

         - 他是有序相关信息项的集合,以字节(byte)为单位。

         - 由于无结构文件没有结构,因而对记录的访问只能通过穷举搜索的方式,所以这种文件对大多是应用不适合。 

     2. 有结构文件(记录式文件)

          a) 顺序文件  (所有顺序查找的功能和array是一样的:方便读写,但是对查找,修改增加删除都very苦手)

               - 文件中的记录是顺序排列的,定长的而且要恶意顺序存储或者链式存储的。

                         i) 串结构:记录之间的顺序与关键字无关。由时间决定放入

                         ii) 顺序结构:指文件中的所有记录按关键字顺序排列

          b) 索引文件 (其实自己也是一个定长的顺序文件啦)

               - 对定长记录的文件,如果要查找第i个记录,可以直接根据公式来计算(离散型)

                                               A = (i=0; i<n; i-1)Li + i 

          c) 索引顺序文件

               - 顺序和索引的两种形式的结合。索引顺序文件将顺序文件中的所以记录分成若干组,为顺序文件建立一个索引表,在索引表中为每组中的第一个记录建立一个索引项,其中也包括该记录的关键字值和指向该记录的指针。

               - 索引文件和索引顺序文件都提高了存取的速度, 但也会占用存储空间

          d) 直接文件或散列文件

               - 给定记录的key 值或者通过Hash function 转换的值直接决定了物理地址。这个映射结构不同于顺序或者索引,这个是没有特定的顺序性的。 Hash file有很高的存取速度,但是可能引起冲突。

1.3 目录结构

     1. 文件控制块和索引结点

          a) 文件控制块:和PCB一样的功能(基本信息,使用信息,存取控制信息)

          b) 索引结点:在检查目录文件的过程中,只用到了文件名,而当找到了一个目录项时,才需要从该目录项中读出该文件的物理地址。

     2. 目录结构

         a) 单级目录结构:在整个文件系统中之建立一个目录表,每个文件占有一个目录项。(缺点:不能重名,不能共享,慢)

         b) 两级目录结构:每一个用户目录文件在主文件中可以占用一个目录项!一人一个坑!!主文件目录项记录用户名及相应用户文件目录所在的存储位置。用户文件目录项记录了该用户的FCB,所以这样也避免了重名的问题。但缺乏灵活性

         c) 多级目录结构:(树形目录结构)用户要访问某个文件时用文件的路径名标识文件,文件路径名是字符串,由从根目录出发到找到文件的通路上的所有目录名与数据都要用'/'隔开。 *从根目录出发的叫绝对路径;而从当前目录出发的叫相对路径。

         d) 无环圈目录结构:树形目录结构可以实现文件分类,但是不能实现文件共享。所有就有人very叼, 在这个树形目录基础上高了一些有向边,使得整个目录变成了一个有向无环图。 但是这个太复杂了。

1.4 文件共享

     1.  基于索引结点的共享方式(硬链接)

          -  在树形结构中,当有两个或者多个用户要共享一个子目录或者文件时,必须将共享文件或者子目录连接到两个或者多个用户目录中,才可以方便的找到该文件(有种链表的感觉??)(count的数目代表有多少人在用)

     2. 利用符号链实现文件共享(软连接)

          - 为使用户B可以共享用户A的文件F,需要建立一个LINK类型的新文件,就取名叫F,并且将F写入用户B的目录中,以实现用户B的目录和F的连接。在新文件中包含表连接文件F的路径名。这样的连接方法被称为符号连接。

          - 在利用符号链方法实现文件共享时,只有文件的拥有者才可以拥有指向其索引结点的指针。而共享该文件的其他用户只能得到皮毛!比如路径名。(这就是王的力量!POWER!)

          - 优点是访问方便,缺点是开销太大,消耗磁盘空间 

 

 2. 文件系统实现

2.1 文件系统层次结构

    

用户调用接口文件系统为用户提供的相关调度什么的~
文件目录系统管理文件目录
存取控制验证保护该软件的完成
逻辑文件系统与文件信息缓冲区根据文件的逻辑结构将用户要读写的逻辑记录转换成文件逻辑结构的相应块号
物理文件系统把逻辑记录所在的相对块号转换成实际物理地址
分配模块管理辅存空间
设备管理程序模块分配设备的调度等

 

2.2 目录实现

- 目录查询是需要反复的进行I/O操作的,开销大。所以为了减少I/O操作,所以需要把使用的文件目录复制到内存里,以后要使用的话再从内存里调用出来

     1. 线性列表

         - very简单;就使用存储文件名和数据块指针的array~创建新文件时,首先要搜索目录表以确定没有同名的文件存在,然后在目录表后增加一个目录项。实现简单,但是比较耗时。

     2. Hash Table

          - 根据文件名得到一个值,并返回一个指针里面的元素的指针。优点是比较快,但是要避免意外冲突。

2.3 文件实现

     1. 文件分配方式(对应文件的物理结构,是指如何为文件分配磁盘块)

          a)连续分配

               - 连续分配方法要求灭个文件在磁盘上占有一组连续的块。实现简单,但是不能动态增加或减少,而且还会产生碎片

          b) 链接分配

               i) 隐式链接: 每个文件对应一个磁盘块的链表;磁盘块分布在磁盘的任何一个地方除最后一块盘块,每一个盘块都指向下一个盘块的指针,(指针对用户是透明的)。(反正就是踢皮球…你就在里面疯狂找吧)

               ii) 显式链接:是把用于链接文件各物理块的指针,从每个物理块的块末尾提取出,显示的放在内存的第一张链接表里。

               iii) FAT: (File Allocation Table)文件分配表,就是分配给文件的所以盘块号都放在这里的一个表。

          c) 索引分配:链式分配可以解决碎片的问题,但是无法有效的支持直接访问(除了FAT)。索引分配把每个文件的所以的块号都集中在了一起,变成了一个索引表。

 访问第n个记录优点缺点
顺序分配需要访问磁盘1次顺序存取时速度快,当文件是定长时可以根据文件起始地址及记录长度进行随机访问文件存储要求连续的存储空间,长产生碎片,也不利与动态扩充
链接分配需要访问磁盘n次可以解决外存的碎片问题,提高了外存空间的利用率,动态增长方便只能按照文件的指针链顺序访问,查找效率低,指针信息存放会消耗外存空间
索引分配m级需要访问磁盘m+1次可以随机访问,易于文件的增删索引表增加存储空间的开销,索引表的查找策略对文件系统效率影响大

     2. 文件存储空间管理

          - 文件储存设备分成许多大小相同的物理块,并以块为单位交换信息,因此,文件存储设备的管理其实是对空闲块的组织和管理

               a) 空闲表法:空闲表法余数连续分配法,他与内存的动态分配类似,为每个文件都分配一块连续的存储空间。而且空闲去起始盘号都是递增的次序排列的。

               b) 空闲链表法: 分空闲盘块链(以盘块为单位拉成一条链)和空闲盘区链(以盘区,即若干个盘块,组成的链)

               c) 位示图法:用 0 或者 1 表示空闲或分配

               d) 成组链接法:把顺序的n个空间区地址保存在第一个空闲扇区,后面第一个空闲扇区册要保存另一个空区的地址,以此类推,直到所有的空闲区都连接上。

                *举个栗子: 你现在后面有1000个学生,但是你上里只有100个可以让学生登记的表。所以你让学生分成了10组,每组100人。你让他们报完100个人后,最后一个要说出下面100个人的信息。每一组的名单在上一组的最后一个人的手里,而最后一组的名单就在第一组的第一个人的手里~形成了一个环链表~


3. 磁盘调度算法(就写几个重要的)

     1. 扫描算法:自里向外,自外向里;scan算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次的服务对象。就是在最短寻找时机优先上做了一个磁头的限定。但是缺点是刚访问的要等好久才可以进行下一次的访问

     2. 循环扫描算法(aka 电梯算法):在scan算法上的一个对磁头限定的提升,让磁头可以单向移动来提供服务。回返时,直接快速移动至起始点而不服务任何请求。

 优点缺点
FCFS算法公平,easy平均寻道距离大,仅应用在磁盘I/O较少的场合
SSTF算法性能比FCFS算法好不能保证平均寻道时间最短, 可能出现饥饿
SCAN算法寻道性好,可以避免饥饿现象不利于远距离磁头一端的访问
C-SCAN算法消除了对两端磁道请求的不公平/

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值