操作系统学习之文件管理:

一.文件的逻辑结构:

1.无结构文件:文件的内部的数据就是一系列的二进制流或字符流组成,又称为流式文件(Windows操作系统中的.txt文件)。

2.有结构文件:由一组相似的记录组成,又称记录式文件,每条记录又由若干条数据项组成。根据各条纪录的长度(占用的存储空间)是否相等,又可分为定长记录和可变长记录两种。

3.顺序文件:文件中的记录一个挨着一个顺序的排列(逻辑上),记录可以是定长的或可变长的。

分为链式存储和顺序存储:

链式存储:无论是定长或者可变长记录,都无法实现随机存取,每次只能从第一个记录开始依次往后查找。

顺序存储:分为可变长记录和定长记录

可变长记录:无法实现随机存取。每次只能从第一个记录开始依次往后查找。

定长记录:可实现随机存取,记录长度为L,则第i个记录存放的相对位置是i*L。若采用串结构,无法快速找到某关键字对应的记录,若采用顺序结构,可以快速找到某关键字对应的记录。

4.索引文件:

(1)建立一个索引表以加快文件检索速度,每条记录对应一个索引项。各个记录不用保持顺序。

(2)索引表本身是定长记录的顺序文件。一个索引表项就是一个定长记录,因此可以快速的找到第i个记录对应的索引项。

(3)若索引表按关键字顺序存储,则可支持快速检索

(4)解决了顺序文件不方便增删的问题,同时让不定长的文件实现了随机存取

5.索引顺序文件:将记录分组,每一组对应一个索引表项,检索记录时先顺序查索引表,找到分组,再顺序查找分组,当记录过多时,可建立多级索引表。

二.文件目录:

1.文件控制块(FCB):

FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。FCB中包含了文件的基本信息(文件名,物理地址,逻辑地址,物理结构等),存取控制信息(是否可读、可写、禁止访问用户名单等),使用信息(文件的建立时间,修改时间)。FCB实现了文件名和文件之间的映射,使用户可以实现按名存取。

2.目录结构:

(1)单级目录结构:单级目录结构实现了按名存取,但是不允许文件重名。在创建一个文件时,需要先检查目录表中有没有重名文件,确定不重名后才允许建立文件,并将新文件对应的目录项插入到目录表中。

(2)两级目录结构:分为主文件目录和用户文件目录。主文件目录记录用户名及其相应用户文件目录存放的位置。用户文件目录由该用户文件的PCB组成。两级目录结构允许不同用户的文件重名,也可以在目录上实现访问控制,但是两级目录不能对自己的文件进行分类

(3)多级目录结构(树形目录结构):

不同目录下的文件可以重名,可以多文件进行分类。但不方便文件共享。系统根据文件路径找到目标文件。从根目录处罚的路径是绝对路径。从当前目录出发的路径是相对路径。

(4)无环图目录结构:

在树形目录结构的基础上,增加一些指向同一节点的又项边,使整个目录成为一个有向无环图。

为共享结点设置一个共享计数器,计数器为0时才真正删除该节点。

3.索引结点(FCB的改进)

(1)除了文件名之外的所有文件信息都放到索引节点中,每个文件对应一个索引节点

(2)目录项中只包含文件名,索引结点指针,因此每个目录项的长度大大减小。

(3)由于目录项的长度减小,因此每个磁盘块可以存放更多个目录项,因此检索文件时磁盘I/O的次数就少了很多。

三.文件的物理结构(文件的分配方式):

1.文件块,磁盘块:文件的逻辑地址被分为了一个一个的文件“块”,文件的逻辑地址可以表示为(逻辑块号,块内地址)的形式。

操作系统为文件分配存储空间都是以块为单位的。用户通过逻辑地址来操作自己的文件,操作系统要负责从逻辑地址到物理地址的映射。

2.文件的分配方式:

(1)连续分配:连续分配方式要求每个文件在磁盘上占有一组连续的块。连续分配支持顺序访问和直接访问(随机访问)。

物理块号=起始块号+逻辑块号

优点**:支持顺序访问和直接访问(随机访问);连续分配的文件在顺序读/写时速度最快。**

缺点:不方便文件拓展;存储空间利用率低,会产生磁盘碎片

(2)链式分配:采用离散的分配方式,可以将文件分配离散的磁盘块。分为隐式链接和显示链接

隐式链接:除了文件的最后一个盘快之外,每个盘块中都存下一个指向下一个盘块的指针。文件目录包括第一块的指针和最后一块的指针。只支持顺序访问,不支持随机访问

优点:很方便文件拓展,不会有碎片问题,外存利用率高。

缺点:只支持顺序访问,不支持随机访问,查找效率低,指向下一个盘块的指针也需要耗费少量的存储空间。

显示链接:把用于链接文件的各物理块的指针显式的存放在一张表中,即文件分配表(FAT)。一个磁盘只会建立一张文件分配表。开机时分配表放入内存中,并常驻内存。

优点:很方便文件扩展,不会有碎片问题,外存利用率高,支持随机访问,和隐式链接相比,地址转换不需要访问磁盘,文件访问效率更高。

缺点:文件分配表需要占用一定的存储空间。

(3)索引分配:索引分配允许文件离散的分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表记录了文件的各个逻辑块对应的物理块。索引表存放的磁盘块称为索引块,文件数据存放的磁盘成为数据块。

链接方案:如果一个索引表太大,一个索引块装不下,可以将多个索引块链接起来存放。

多层索引:建立多层索引,使第一层索引块指向地热层索引快,还可根据文件大小的要求建立第三,第四索引块。

混合索引:多种索引方式的结合。

3.各种分配方式的比较:

四.文件的物理结构和逻辑结构的区别:

1.逻辑结构:用户(文件创建者)的视角。在用户看来,整个文件占用连续的逻辑地址空间。文件内部的信息组织完全由用户自己决定

2.物理结构:由操作系统决定文件采用什么样的物理结构存储。操作系统负责将逻辑地址转变为(逻辑块号,块内偏移量)的形式,并负责实现逻辑块号到物理块号的映射。

五.文件的存储空间的管理:

1.存储空间的划分与初始化:将各个文件卷划分为目录区和文件区。目录区主要存放文件目录信息(FCB),空闲表,位示图,超级快表,用于磁盘存储空间管理的信息。文件区用于存放文件数据。

2.存储空间管理的方法:

(1)空闲表法:为文件分配连续的存储空间,可采用首次适应,最佳适应,最坏适应,算法来决定要为文件分配那个区间。

(2)空闲链表法:空闲盘快链:以盘快为单位组成一条空闲链

​ 空闲盘区链:以盘区为单位组成一条空闲链(连续的空闲盘块组成空闲盘区)

分配:若文件申请k个盘块,则可以采用首次适应,最佳适应等算法,从链头开始检索,按照算法规则找到一个大小符合要求的空闲的盘块区,分配给文件,若没有合适的连续空闲块,也可以将不同盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针,盘区大小等的数据。

回收:若回收区和某个空闲盘区相邻,则需要将回收区合并到空闲盘区中。若回收区没有和任何空闲区相邻,将回收区作为单独的空闲盘区挂到链尾。

(3)位示图法:一个二进制表示对应一个盘块。

如何分配:若需要k个块(1)顺序扫描位示图,找到k个相邻或者不相邻的0(2)根据字号,位号算出对应的盘块号,将相应的盘块分配给文件(3)将相应的位设置为1

如何回收:(1)根据回收的盘块号计算出对应的字号,位号(2)将相应的二进制位设为0

(4)成组链接法: 文件卷的目录区中专门用一个磁盘块作为超级块,当系统启动时需要将超级块读入内存,并且要保证内存与外存中的超级块数据一致。

六.文件的基本操作:

1.创建文件(create系统调用):

进行Create系统调用时,需要提供几个参数:

(1)所需的外存空间的大小(2)文件存放的路径(3)文件名

调用create系统调用时,主要做了两件事:(1)在外存中找到文件所需的空间(2)创建文件对应的目录项

2.删除文件(delete系统调用):

进行delete系统调用时,需要提供的参数:(1)文件存放路径(2)文件名

系统在处理Delete系统调用时,主要做的几件事:(1)根据目录找到文件对应的目录项(2)回收文件占用的磁盘块(3)删除文件对应的目录项

3.读文件(read系统调用):

操作系统在处理read系统调用时,会从读指针指向的外存中,将用户指定大小的数据读入用户指定的内存区域中。

4.写文件(write系统调用):

操作系统在处理write系统调用时,会从用户指定的内存区域中,将指定大小的数据写回写指针指向的外存中。

5.打开文件(open系统调用):

打开文件需要提供的参数:(1)文件的存放路径(2)文件名(3)要对文件的操作类型( r:只读;rw:读写等)

操作系统在处理open系统调用时,主要要做的几件事:(1)找到文件名对应的目录项(2)将目录项复制到内存中的打开文件表中,用户使用打开文件表的编号来指明要操作的文件。

6.关闭文件(close系统调用):

关闭文件操作处理Close系统调用时,主要做了几件事:

(1)将进程的打开文件表相应的表项删除(2)回收分配给该文件的内存空间等资源(3)系统打开文件表的打开计数器count减一,若count=0.则删除对应的表项。

七.文件共享

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

(1)各个用户的目录项指向同一个索引节点

(2)索引节点中需要有链接计数count

(3)某用户想要删除文件,只是删除该文件的目录项,且count–

(4)只有count==0时才能真正的删除文件的数据和索引节点,否则会导致指针悬空。

2.软链接(符号链接):基于符号链的共享方式

(1)在一个link型的文件中记录共享文件的存放路径(windows快捷方式)

(2)操作系统根据路径一层层的查找目录,最终找到共享文件

(3)即使软链接指向的共享文件一杯删除,link型文件依然存在,只是通过link型文件中的路径去查找共享文件会失败(找不到对应的目录项)

(4)由于用软连接的方式访问共享文件时要查找多级目录,会有多次的磁盘I/O

八.文件保护:

1.口令保护:为文件设置一个口令,用户想要访问文件时需要提供口令,由系统验证口令是否正确。

优点:保存口令的空间开销不多,验证口令的时间开销也很小

缺点:正确的口令存放在系统内部,不够安全

2.加密保护:使用某个密码对文件进行加密,在访问文件时需要提供正确的密码才能对文件进行正确的解密。

优点:保密性强,不需要在系统中存储密码

缺点:加密和解密需要花费一定的时间

3.访问控制:在每个文件的FCB(或索引结点)中增加一个访问控制表(ACL),该表中记录了各个用户可以对该文件执行那些操作:

精简的访问控制表:

优点:实现灵活,可以实现复杂文件的保护功能

九.文件系统的层次结构:

1.用户需要通过操作系统提供的口令发出请求——用户接口

2.由于用户提供的是文件的存放路径,因此需要操作系统一层一层的查找目录,找到对应的目录项——文件目录系统

3.不同的用户对文件有不同的操作权限,为了保证安全,需要检查是否有访问权限——存取控制模块(存取控制验证层)

4.验证了用户的访问权限之后,需要吧用户提供的记录号转换为逻辑地址——逻辑文件系统与文件信息缓冲区

5.知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址——物理文件系统

6.要删除这条记录,要对磁盘设备发出请求——设备管理程序模块

7.删除这条记录后,会有一定的盘块空闲,因此要对这些空闲盘块回收——辅助分配模块

十.磁盘的结构:

1.磁盘,磁道,扇区:

磁盘的表面被划分成一个一个的磁道,这样的一个圈就是一个磁道。

2.如何在磁盘中 读写数据:把磁头移动到想要读写的扇区所在的磁道,磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读写操作。

3.盘面,柱面:

(1)磁盘有多个盘片叠起来,每个盘片有两个盘面

4.磁盘的物理地址:可用(柱面号,盘面号,扇区号)来定位任意一个磁盘块

根据该地址读取一个块:

(1)根据柱面号移动磁臂,让磁头指向指定柱面(2)激活指定盘面对应的磁头(3)磁盘旋转的过程中,指定的扇区会从刺头下面划过,这样就完成了对指定扇区的读写。

5.次盘的分类:

(1)固定头磁盘(每个磁道有一个磁头)(2)移动头磁盘(每个盘面只有一个磁头)

根据磁盘是否可更换:(1)固定盘磁盘(2)可换盘磁盘

十一.磁盘调度算法:

1.一次磁盘读写操作所需要的时间:

2.先来先服务算法(FCFS):根据进程请求访问磁盘的先后顺序进行调度

优点:公平

缺点:如果有大量的进程竞争使用磁盘,请求访问的磁道很分散,寻道时间长

3.最短寻找时间优先算法(SSTF):优先处理的时磁道与当前磁头最近的磁道。

优点:性能较好,平均寻道时间短

缺点:可能产生“饥饿”现象(产生饥饿的原因:磁头有可能在一个小区域内来回的移动)

4.扫描算法(SCAN):只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动,又称电梯算法。

优点:性能较好,平均寻道时间较短,不会产生饥饿现象

缺点:对于各个位置磁道的响应频率不平均

5.LOOK调度算法:如果在磁头移动方向上已经没有别的请求,就可以立即改变磁头的移动方向(边移动边观察)

优点:不需要每次都移动到最外侧或者最内侧才改变磁头的移动方向,使寻道时间进一步缩短。

6.循环扫描算法(C-SCAN):只有磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请求。

优点: 对于各个位置磁道的响应频率很平均

缺点:和SCAN算法比起来平均寻道时间更长

7.C-LOOK算法:只要在磁头移动的方向上不再有请求,就立即让磁头返回

优点:和C-SCAN比起来,不需要每次都移动到最外侧才改变磁头的方向

十二.减少延迟时间的方法:

1.采用交替编号的方法:让编号相邻的扇区在物理上不相邻

原理:读取完一个扇区后需要一段时间处理才可以继续读入下一个扇区

2.错位命名: 让相邻盘面的盘区编号“错位”

原理:与交替编号的原理相同,可降低延迟时间

3.磁盘地址采用(柱面号,盘面号,扇区号)的原因:在读取地址连续的磁盘块时,不需要移动磁头

十三.磁盘的管理:

1.磁盘的初始化:

(1)进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区

(2)将磁盘分区,每个分区由若干柱面组成(即分为C盘,D盘,E盘)

(3)进行逻辑格式化,创建文件系统。包括创建文件系统的根目录,初始化存储空间管理所用的数据结构(位示图,空闲分区表)

  1. 引导块:

    (1)计算机开机时需要进行一系列的初始化工作,这些初始化工作是通过执行初始化程序(自举程序)完成的。

    (2)完整的自举程序放在磁盘的启动块(即引导块)上,启动块位于磁盘的固定位置。

    (3)ROM:ROM中只存放很小的自举装入程序。开机时计算机先运行自举装入程序,通过执行该程序就可找到引导块,并将完整的自举程序读入内存,完成初始化。

  2. 坏块的管理(硬件故障):

    (1) 简单的磁盘:逻辑格式化时将坏块标记出来

    (2)复杂的磁盘:磁盘控制器维护一个坏块链,并管理备用扇区

操作系统学习之文件管理:相关推荐

  1. 计算机操作系统学习笔记——文件管理之文件系统基础

    文件系统基础 一.基本概念 1.文件的定义 2.数据项 1)基本数据项 2)组合数据项 3.记录 4.文件 4.1.文件的属性 5.文件类型 5.1.按用途分类 1)系统文件 2)用户文件 3)库文件 ...

  2. 操作系统学习笔记-01-操作系统的概念(定义),功能和目标

    操作系统学习笔记-2019 王道考研 操作系统-01-操作系统的概念(定义),功能和目标 文章目录 1-操作系统的概念(定义),功能和目标 1.1常见的操作系统 1.2概念(定义) 1.3-操作系统的 ...

  3. 操作系统学习-1. 操作系统的目标和作用

    写在前面: 这个类别将记录我学习操作系统的学习笔记.会将视频讲解与书本内容进行内容提炼.每天学习一点,坚持下来会有收获.这篇主要记述操作系统的目标与作用,回顾操作系统发展历程.概念居多,了解即可. 操 ...

  4. 分享--操作系统学习

    分享--操作系统学习 链接: https://mp.weixin.qq.com/s?__biz=MzI1OTY2MzMxOQ==&mid=2247487662&idx=1&sn ...

  5. 操作系统学习-练习题个人总结(一)

    操作系统学习-练习题个人总结(一) 本系列学习总结知识点大部分参考此课程PPT.视频.课程练习解析https://www.zjooc.cn/course/2c9180826f668f7d016f6a5 ...

  6. 哈工大李治军老师的操作系统学习笔记

    文章目录 1 什么是操作系统 2 操作系统启动 3 操作系统接口 命令行发生了什么? 图形按钮怎么回事? 操作系统接口(系统调用) 4 操作系统调用 不应该随意访问内核 怎么不让你访问内核 不让我访问 ...

  7. 操作系统学习之系统调用

    目录 一.操作系统学习之系统调用 1. 什么是系统调用 2. 系统调用有什么用 3. 为什么需要系统调用 4. 系统调用的具体流程 1)执行过程 2)  如何实现用户态与内态之间的切换 3) 系统调用 ...

  8. Puppet学习之文件管理

    Puppet学习之文件管理 使用puppet可以方便的进行文件管理,可以对文件的内容.属组.属主.权限等进行管理.可管理的文件类型包括普通文件.目录.链接文件.类型需要在ensure类型中明确指定.接 ...

  9. linux操作系统学习网站整理(100个)

    linux操作系统学习网站整理(100个) 评选出的这100个优秀站点,将按照下述20个类别作以评介: (一) 文件下载 (二) 幽默娱乐 (三) 相关新闻 (四) 通用硬体 (五) 专用硬体 (六) ...

最新文章

  1. 数据结构与算法:03 C#面向对象设计 I
  2. 什么是Bi-GRU语义解析
  3. Shell echo-使用echo实现更复杂的输出格式控制
  4. C++ Primer 5th笔记(chap 13 拷贝控制) 实例1测试和结果分析
  5. Unity整合TortoiseSVN
  6. ios yymodel 将字典转数组模型_TensorNet——基于TensorFlow的大规模稀疏特征模型分布式训练框架
  7. 快速恢复检测 恢复 故障服务器方法
  8. leetcode390(2022 1.2)
  9. jchdl - GSL实例 - LogicalLeft
  10. IDC 监控技术介绍
  11. 基于51单片机的数码管密码锁设计资料
  12. 亿图图示专家 ((EDraw Max)V5.6 绿色特别版
  13. 如何解决微软自带输入法突然变成繁体
  14. 15000字看完lululemon增长攻略
  15. jieba中文分词组件的词性类型
  16. Android 集成 google 登录并获取 性别等隐私信息
  17. 春分、冬至、黄道、赤道
  18. UMLChina建模竞赛题大全-题目全文+分卷自测(10套100题)
  19. 如何制作查分系统-Leo老师
  20. Esp8266进阶之路14 esp8266的 FreeRtos系统学习的正确姿势,环境配置环境、烧录。(附带demo)

热门文章

  1. DPDK 编译安装(meson ninja)
  2. 动物叫声合集v1.0支持25种动物叫声模拟
  3. 字符串逆序不一样的解法(递归)
  4. 硬盘数据丢失能恢复吗 硬盘数据丢失怎么找回
  5. python-Opencv 图片锐化
  6. 读彬彬有礼压缩感知相关论文笔记3——沙威程序解读
  7. Java中hashcode和equals详解
  8. Cf252中子发射能谱模型
  9. linux升级n卡驱动,Centos 7 更新 NVIDIA 驱动
  10. 微信小程序开发之页面布局