个人用书:操作系统教程 第五版 费翔林
学习视频: 王道计算机考研 操作系统.

目录

  • 文件管理
    • 文件的属性
    • 文件的逻辑结构
      • 无结构文件
      • 有结构文件
    • 文件的物理结构!!!(文件分配方式)
      • 文件的物理结构
    • 文件存储空间管理
      • 存储空间的划分与初始化
      • 存储空间管理
        • 空闲表法
        • 空闲链表法
        • 位示图法
        • 成组链接法
    • 文件的基本操作
      • 创建文件
      • 删除文件
      • 打开文件
      • 读,写文件
    • 文件共享
      • 基于符号链的共享方式
    • 文件保护
      • 口令保护
      • 访问控制
    • 磁盘的结构
      • 磁盘,磁道,扇区
      • 磁盘的分类
    • 磁盘调度算法
      • 一次磁盘读写操作需要的时间
      • 先来先服务算法FCFS
      • 最短寻找时间优先SSTF
      • 扫描算法SCAN
      • LOOK调度算法(改进的SCAN)
      • 循环扫描算法C-SCAN(改进的SCAN)
      • C-LOOK调度算法
    • 减少延迟时间的方法
      • 减少延迟时间的方法:交替编号
      • 磁盘地址结构的设计
      • 错位命名
    • 磁盘的管理
      • 磁盘初始化
      • 引导块
      • 坏块的管理

文件管理

文件的属性

  • 文件名:由创建的用户决定文件名,同一目录下不允许有重名文件。
  • 标识符:一个系统内的各文件标识符唯一,用户不可读。
  • 类型:指明文件的类型。
  • 位置:文件存放的路径(用户使用)。外存的地址(OS使用,用户不可见)
  • 创建时间,上次修改时间,文件所有者信息
  • 保护信息:对文件进行保护的访问控制信息。

文件的逻辑结构

逻辑结构:用户看来文件内部的数据是如何组织的。

物理结构:OS看来,数据是怎么存放在外存忠的。

无结构文件

文件的内部的数据是一系列二进制流或字符流。eg:txt文件

有结构文件

由一组相似的记录组成。每条记录若干个数据项组成。eg:数据库表文件

  • 顺序文件

文件忠的记录一个接一个的排列(逻辑上)。记录可以是定长或可变长的。各个记录在物理上可以顺序存储或链式存储。

如果使用链式存储,无论定长还是可变长,每次都只能从第一个记录开始依次往后查找。

如果使用顺序存储,如果是可变长记录,无法实现随机存取。每次只能从第一个记录开始往后查找。如果是定长记录,可实现随机存取。如果使用串结构(不按关键字排序)则无法快速找到关键字对应记录。如果使用顺序结构,可以快速找到某关键字对应的记录。

  • 索引文件

对于可变长的记录文件,要找到第i个记录,必须先找到第i-1个记录。

可以建立一张索引表加快文件检索速度。每条记录对应一个索引项。

  • 索引顺序文件

索引文件的缺点:如果每一个记录对应一个表项,索引表会很大。为了解决这个问题,一组记录对应一个索引表项。

可以先查找分组,再查找组内记录。

文件的物理结构!!!(文件分配方式)

OS需要对磁盘进行哪些管理:对非空闲磁盘块的管理,对空闲磁盘块的管理。

文件的物理结构

文件块:类似于内存的分页,磁盘的存储单元也会被分为一个个“块/磁盘块/物理块”

  • 连续分配

要求每个文件在磁盘上占有一组连续的块。

逻辑地址到物理地址映射:(逻辑块号,块内地址)->(物理块号,块内地址)只需要转换块号,块内地址保持不变

文件目录中记录存放的起始块号和长度。

优点:连续分配支持顺序访问和直接访问(随机访问)。补充:读取某个磁盘块时,需要移动磁头。访问的两个磁盘块相隔越远,移动磁头所需的时间越长。结论:连续分配的文件在顺序读写的时候速度最快。缺点:如果文件A要拓展,需要增加磁盘块,必须把整个文件全部移动。如果需要创建新的文件,离散的块难以利用。
  • 链接分配

隐式链接:只记录了起始块号。用户访问i,从目录中将0读入内存,再找1,2,3…i。一共要读取i+1次。

优点:方便文件拓展。
缺点:只支持顺序访问,不支持随机访问。

显示链接:用于链接文件的指针显示的存放在一张表(FAT)中。FAT读入后常驻内存。

优点:支持顺序和随机访问。不会产生外部碎片。
缺点:文件分配表需要一定的空间。
  • 索引分配

文件离散分配在各个磁盘块中,系统为每个文件建立索引表。索引表记录了文件的各个逻辑块对应的物理块。索引表存放的磁盘块称为索引块,文件数据存放的磁盘块称为数据块。

如果一个磁盘块装不下整张索引表:

  1. 链接方案:可以将多个索引块链接起来存放。想找到i索引块,需要先找到0-i-1号索引块。
  2. 多层索引:类似多级页表,第一层索引块可以索引第二层索引块。k层索引,访问数据块需要读k+1次。
  3. 混合索引:多种索引分配方式混合,一层索引表可以包含一级索引表,同时可以包含多层索引表。

考点:根据多层索引,混合索引的结构计算文件的最大长度。能分析访问某个数据块所需要的读磁盘次数。

文件存储空间管理

存储空间的划分与初始化

安装windows OS的时候会把磁盘分区。CDE盘等。每个文件卷分为目录区和文件区。

目录区:存放FCB,磁盘存储空间管理的信息。
文件区:存放文件数据。

存储空间管理

空闲表法

如何分配磁盘块:与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间。

如何回收磁盘块:注意回收区前后是否空闲,注意表项的合并问题。

空闲链表法

分为 空闲盘块链 和 空闲盘区链。 (多个连续的空闲或者占用的盘块可以作为一个盘区)

空闲盘块:OS保存着链头,链尾指针。

如何分配:文件申请K个盘块,从链头依次摘下K个盘块分配。

如何回收:回收的盘块依次挂到链尾,并修改空闲链的链尾指针。

空闲盘区:OS保存着链头,链尾指针。

如何分配:需要采用首次适应,最佳适应等算法,找到符合要求的空闲盘区。也可以将不同的盘区分给一个文件,需要修改相应的链指针,盘区大小等数据。

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

位示图法

每个二进制位对应一个盘块。在本例中“0”代表盘块空闲。“1”代表已分配。

!!!需要自己推出盘块号与(字号,位号)转换的公式。注意题目的盘块号,字号,位号是从0还是1开始。

(字号,位号) = (i , j)的二进制对应的盘块号 b = ni + j。

成组链接法

空闲表法,空闲链表法不适用于大型文件系统。

文件卷的目录区中专门用一个磁盘块作为“超级块”,系统启动时需要将超级块读入内存。并且要保证内存与外存的“超级块”数据一致。

超级块:需要记录下一组空虚盘块数,空闲块号。

文件的基本操作

创建文件

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

  1. 所需的外存空间大小(如:一个盘块,1kb)
  2. 文件存放路径(“D:/Demo”)
  3. 文件名(这个地方默认为“新建文本文档.txt”)

OS在处理Create系统调用时,主要做了两件事:

  1. 在外存中找到文件所需的空间。
  2. 根据文件存放路径的信息找到该目录对应的目录文件。在目录中创建该文件的目录项。

删除文件

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

  1. 文件存放路径。
  2. 文件名称。

OS处理Delete:

  1. 根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项。
  2. 根据目录项记录的文件在外存的存放位置。
  3. 从目录表删除文件的目录项

打开文件

在很多OS中,需要open系统调用,参数:

  1. 文件存放路径
  2. 文件名
  3. 需要的操作类型

OS处理open:

  1. 根据路径找到目录文件,从目录找到目录项,检查用户是否有权限
  2. 将目录项复制到打开文件表。将对应的表目标号返回用户,用户使用打开文件表的编号指明要操作的文件。

这之后用户进程操作文件就不需要查目录了,加快文件访问速度。

一共有两种打开文件表。(用户进程的打开文件表,系统打开文件表)
系统的打开文件表会记录某个文件被打开了多少次,当需要删除的时候如果文件被占用则不能删除。

读,写文件

读写文件之前,都需要把文件先打开。

  • 读文件时,指明读多少数据,存放位置。OS的读指针指向外存,把用户需要的数据读入内存。
  • 写文件时,指明写多少数据,存放位置。OS把内存中数据存入外存。

文件共享

注意:多个用户共享同一个文件,意味着系统中只有一份文件,一个用户修改,别的用户可见。与复制相区分
###基于索引结点的共享方式
索引结点:检索文件只需要文件名,可以把文件名之外的其他信息放入索引结点。目录项只包含文件名,索引结点指针。

索引结点中设置一个链接计数变量count,表示链接到本索引结点上的用户目录项数。若count = 2 说明有两个用户在共享这个文件。若count > 0 说明有用户在使用,文件不能删除。

基于符号链的共享方式

文件2是一个LINK类型的文件,这个文件会根据其中记录的文件存放路径,OS根据路径找到该文件。(快捷方式)

文件保护

口令保护

为文件设置一个口令,用户访问该文件必须提供口令。

优点:保存口令开销不多,验证口令的时间开销很小。
缺点:正确的口令存放在系统中,不安全

###加密保护
可以用某个密码加密,访问文件需要提供正确的密码才能正确解析文件。

eg:简单的加密算法——异或加密。

优点:保密性强,不需要系统存放密码。
缺点:加密解密需要花费时间

访问控制

系统在FCB中增加访问控制表,表记录用户的权限。

有的计算机可能用户很多,导致访问控制表很长,可以使用精简访问控制表:以组为单位,标记各组可以进行的操作。

磁盘的结构

磁盘,磁道,扇区

  • 磁盘:磁盘表面有一些磁性物质组成,用这些磁性物质记录二进制数据。
  • 磁道:磁盘的盘面上有一圈圈的环状磁道。
  • 扇区:一个磁道被划分为多个扇区

需要把磁头移动到想读写的磁道,磁盘转起来,让目标扇区从磁头下面划过,才能完成读写。

磁盘是多层的,每层一个盘面,一个磁头。磁头是被固定在一起的,只能共进退。

(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”。可以根据该地址读取一个块。

磁盘的分类

磁头:

  • 磁头可以移动的称为活动头磁盘。磁臂可以来回伸缩。
  • 磁头不可移动称为固定头磁盘。

盘面:

  • 盘片可更换
  • 盘片不可更换

磁盘调度算法

一次磁盘读写操作需要的时间

  • 寻找时间Ts:在读写数据前,需要移动磁头。启动磁头臂所需要时间s,移动磁头(假设均匀移动)每跨越一个磁道需要m,总n磁道。Ts = s + m*n
  • 延迟时间Tr:旋转磁盘,磁头定位到扇区需要时间。转速为r(单位:转/秒。转/分)平均所需的延迟时间TR = (1/2)*(1/r) = 1/2r
  • 传输时间Tt:从磁盘读写数据所需要的时间,假设转速r,读写字节数目b,每个磁道字节数N。 Tt = (1/r)*(b/N) = b/(rN)

总时间 Ta = Ts + 1/2r + b/(rN)唯一可以影响的时间是寻找时间。

先来先服务算法FCFS

根据访问磁盘的先后顺序进行调度。

优点:公平,先到先服务,如果访问的磁道集中,算法性能还行。
缺点:大量进程使用磁盘,请求访问的磁道分散,FCFS性能上很差。

最短寻找时间优先SSTF

会优先处理与当前磁头最近的磁道。保证每次的寻道时间最短,但是不能保证总的寻道时间最短。

优点:性能较号,平均寻道时间短。
缺点:可能产生“饥饿”现象。磁头可能在小区域内来去移动。

扫描算法SCAN

磁头只有到达最外层才能往内移动,到达最内侧才能往外移动。

优点:性能较好,平均寻道时间较短,不会产生饥饿现象。
缺点:只有到达磁道边才能改变方向。SCAN对于各个位置磁道的响应频率并不平均。

LOOK调度算法(改进的SCAN)

如果磁头移动方向已经没有别的请求可以立即改变方向。

优点:比起传统SCAN扫描时间缩短

循环扫描算法C-SCAN(改进的SCAN)

磁头只有朝某个方向移动方式才处理请求,返回的时候快速返回起始端。

优点:比起SCAN对各个磁道的响应频率平均
缺点:只有到达边上才能改变磁道方向,比起SCAN算法,平均寻道时间长。

C-LOOK调度算法

比起C-SCAN只需要返回到有请求的位置

优点:比传统的LOOK使寻道时间进一步缩短。

减少延迟时间的方法

假设磁头要读取2,3,4扇区,读完2后磁头要时间处理,此时经过3不能读取,需要磁盘下一次转到3。导致读入几个连续的扇区需要很长的延迟时间。

减少延迟时间的方法:交替编号

若采用交替编号策略,即让逻辑上相邻的扇区有一定的间隔,可以使读取连续的逻辑扇区所需要的延迟时间更小。

磁盘地址结构的设计

磁盘的物理地址是(柱面号,盘面号,扇区号)。

这样设计可以读完一个柱上所有扇区后再移动磁头。

错位命名

让相邻盘面的扇区编号错位

磁盘的管理

磁盘初始化

磁盘初始化:

  1. 进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区。一个扇区可以分为头,数据区域,尾三个部分组成。管理扇区所需要的各种数据结构一般放在头尾。包括扇区校验码,循环冗余校验码。
  2. 将磁盘分区,每个分区有若干柱组成。
  3. 进行逻辑格式化,创建文件系统。包括创建文件系统根目录,初始化存储空间管理所用的数据结构。

引导块

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

完整的自举程序放在磁盘的启动块上,启动块位于磁盘的固定位置。

ROM:初始化程序放在ROM(只读)存放自举装入程序。

拥有启动分区的磁盘叫做系统盘(C:)

坏块的管理

坏了,无法正常使用的扇区是“坏块”。OS是不能修复的,应该将坏块标记出来,以免错误的使用。

对于简单的磁盘,可以再逻辑格式化的时候,对整个磁盘进行坏块检查,标明哪些是坏扇区。

对于复杂的磁盘,磁盘控制器维护一个坏块链表,再磁盘出场前低级格式化时将坏块链进行初始化。

操作系统学习笔记(5. 文件管理)相关推荐

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

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

  2. 操作系统学习笔记-2.1.5线程概念和多线程模型

    操作系统学习笔记-2019 王道考研 操作系统-2.1.5线程概念和多线程模型 文章目录 5线程概念和多线程模型 5.1知识概览 5.2 什么是线程?为什么要引入线程? 5.3引入线程及之后,有什么变 ...

  3. 操作系统学习笔记-2.1.4进程通信

    操作系统学习笔记-2019 王道考研 操作系统-2.1.4进程通信 文章目录 4进程通信 4.1知识总览 4.2前置知识:什么是进程通信? 4.3共享存储 4.4 管道通信 4.5消息传递 4.6小结 ...

  4. 操作系统学习笔记-2.1.3进程控制

    操作系统学习笔记-2019 王道考研 操作系统-2.1.3进程控制 文章目录 3.进程控制 3.1知识概览 3.2 基本概念 3.2.1什么是进程控制? 3.2.2如何实现进程控制? 3.3进程控制相 ...

  5. 操作系统学习笔记-2.1. 2进程的状态与转换

    操作系统学习笔记-2019 王道考研 操作系统-2.1. 2进程的状态与转换 文章目录 2进程的状态与转换 2.1知识概览 2.2进程的状态-三种基本状态 2.3进程的状态-另外两种状态 2.4进程状 ...

  6. 操作系统学习笔记-2.1.1.进程的定义、组成、组织方式、特征

    操作系统学习笔记-2019 王道考研 操作系统-2.1.1.进程的定义.组成.组织方式.特征 文章目录 2.1.1.进程的定义.组成.组织方式.特征 1.1知识概览 1.2进程的定义 1.3进程的组成 ...

  7. 操作系统学习笔记目录(暂时不全223)

    操作系统学习笔记目录章节汇总 (暂时不全,目前只有第一章+第二章-浅谈线程,进程-2020.3.6) 文章目录 操作系统学习笔记目录章节汇总 1.打开钢琴的盖子(序章) 1.1-操作系统的概念(定义) ...

  8. 操作系统学习笔记-06-系统调用

    操作系统学习笔记-2019 王道考研 操作系统-06-系统调用 文章目录 6-系统调用 6.1 知识概览 6.2什么是系统调用?有什么作用? 6.3系统调用与库函数的区别 6.4系统调用背后的过程 6 ...

  9. 操作系统学习笔记-05-中断和异常

    操作系统学习笔记-2019 王道考研 操作系统-05-中断和异常 文章目录 5-中断和异常 5.1知识概览 5.2 中断机制的诞生 5.3中断概念和作用 5.4中断的分类 5.5 外中断的处理过程 5 ...

  10. 操作系统学习笔记-04-操作系统的运行机制和体系结构

    操作系统学习笔记-2019 王道考研 操作系统-04-操作系统的运行机制和体系结构 文章目录 4-操作系统的运行机制和体系结构 4.1知识总览 4.2运行机制 4.2.1预备知识:什么是指令? 4.2 ...

最新文章

  1. CentOS6.4下安装xampp
  2. Ceryx —— 基于 OpenResty 的动态反向代理
  3. 2.6 处理数据不匹配问题-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  4. 软件测试需求人才越来越多
  5. 从使用传统Web框架到切换到Spring Boot后的总结
  6. Flutter轮播图
  7. 云原生架构及设计原则
  8. Eclipse 有望超越 Visual Studio!
  9. 小学计算机教师德育工作计划,小学教师个人德育工作计划
  10. 正则表达式 之 回溯引用:前后一致匹配
  11. OpenStack互操作性认证 为何有UnitedStack?
  12. 实验一 DOS命令解释程序的编写
  13. layui 点击头像 上传头像
  14. Python(三)微信公众号开发
  15. AVR 上的汇编圈圈操作系统
  16. 一、C语言[typedef、结构体、共用体、枚举体]
  17. 设置屏幕常亮 switch
  18. PSpice 仿真混沌电路的相图的步骤
  19. iMX6ULL RTL8723BU WiFi蓝牙模块
  20. css3多米诺骨牌动画特效

热门文章

  1. Superset 制作 地图 柱状图 饼状图
  2. Linux的实时监测命令(watch)
  3. 图片如何添加水印文字?如何设置照片水印?
  4. 软件开发方法论:TDD、BDD、DDD、ATDD、DevOps
  5. PHP防花生日记官网源码【前后端分离】源码
  6. 运筹说 第75期 | 数学家欧拉也玩跨界
  7. 物理隔离网闸——入门篇(2)
  8. 基于阿里平头哥的单片机软、硬件i2C驱动oled
  9. HTML.网页程序设计
  10. android 读取excel表格数据(暂时只支持xls格式)