操作系统学习笔记(5. 文件管理)
个人用书:操作系统教程 第五版 费翔林
学习视频: 王道计算机考研 操作系统.
目录
- 文件管理
- 文件的属性
- 文件的逻辑结构
- 无结构文件
- 有结构文件
- 文件的物理结构!!!(文件分配方式)
- 文件的物理结构
- 文件存储空间管理
- 存储空间的划分与初始化
- 存储空间管理
- 空闲表法
- 空闲链表法
- 位示图法
- 成组链接法
- 文件的基本操作
- 创建文件
- 删除文件
- 打开文件
- 读,写文件
- 文件共享
- 基于符号链的共享方式
- 文件保护
- 口令保护
- 访问控制
- 磁盘的结构
- 磁盘,磁道,扇区
- 磁盘的分类
- 磁盘调度算法
- 一次磁盘读写操作需要的时间
- 先来先服务算法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读入后常驻内存。
优点:支持顺序和随机访问。不会产生外部碎片。
缺点:文件分配表需要一定的空间。
- 索引分配
文件离散分配在各个磁盘块中,系统为每个文件建立索引表。索引表记录了文件的各个逻辑块对应的物理块。索引表存放的磁盘块称为索引块,文件数据存放的磁盘块称为数据块。
如果一个磁盘块装不下整张索引表:
- 链接方案:可以将多个索引块链接起来存放。想找到i索引块,需要先找到0-i-1号索引块。
- 多层索引:类似多级页表,第一层索引块可以索引第二层索引块。k层索引,访问数据块需要读k+1次。
- 混合索引:多种索引分配方式混合,一层索引表可以包含一级索引表,同时可以包含多层索引表。
考点:根据多层索引,混合索引的结构计算文件的最大长度。能分析访问某个数据块所需要的读磁盘次数。
文件存储空间管理
存储空间的划分与初始化
安装windows OS的时候会把磁盘分区。CDE盘等。每个文件卷分为目录区和文件区。
目录区:存放FCB,磁盘存储空间管理的信息。
文件区:存放文件数据。
存储空间管理
空闲表法
如何分配磁盘块:与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间。
如何回收磁盘块:注意回收区前后是否空闲,注意表项的合并问题。
空闲链表法
分为 空闲盘块链 和 空闲盘区链。 (多个连续的空闲或者占用的盘块可以作为一个盘区)
空闲盘块:OS保存着链头,链尾指针。
如何分配:文件申请K个盘块,从链头依次摘下K个盘块分配。
如何回收:回收的盘块依次挂到链尾,并修改空闲链的链尾指针。
空闲盘区:OS保存着链头,链尾指针。
如何分配:需要采用首次适应,最佳适应等算法,找到符合要求的空闲盘区。也可以将不同的盘区分给一个文件,需要修改相应的链指针,盘区大小等数据。
如何回收:若回收区和某个空闲盘区相邻,需要将回收区和空闲区合并作为一个单独的盘区挂到链尾。
位示图法
每个二进制位对应一个盘块。在本例中“0”代表盘块空闲。“1”代表已分配。
!!!需要自己推出盘块号与(字号,位号)转换的公式。注意题目的盘块号,字号,位号是从0还是1开始。
(字号,位号) = (i , j)的二进制对应的盘块号 b = ni + j。
成组链接法
空闲表法,空闲链表法不适用于大型文件系统。
文件卷的目录区中专门用一个磁盘块作为“超级块”,系统启动时需要将超级块读入内存。并且要保证内存与外存的“超级块”数据一致。
超级块:需要记录下一组空虚盘块数,空闲块号。
文件的基本操作
创建文件
进行Create系统调用时,需要提供的几个参数:
- 所需的外存空间大小(如:一个盘块,1kb)
- 文件存放路径(“D:/Demo”)
- 文件名(这个地方默认为“新建文本文档.txt”)
OS在处理Create系统调用时,主要做了两件事:
- 在外存中找到文件所需的空间。
- 根据文件存放路径的信息找到该目录对应的目录文件。在目录中创建该文件的目录项。
删除文件
进行Delete系统调用,需要提供几个参数:
- 文件存放路径。
- 文件名称。
OS处理Delete:
- 根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项。
- 根据目录项记录的文件在外存的存放位置。
- 从目录表删除文件的目录项
打开文件
在很多OS中,需要open系统调用,参数:
- 文件存放路径
- 文件名
- 需要的操作类型
OS处理open:
- 根据路径找到目录文件,从目录找到目录项,检查用户是否有权限
- 将目录项复制到打开文件表。将对应的表目标号返回用户,用户使用打开文件表的编号指明要操作的文件。
这之后用户进程操作文件就不需要查目录了,加快文件访问速度。
一共有两种打开文件表。(用户进程的打开文件表,系统打开文件表)
系统的打开文件表会记录某个文件被打开了多少次,当需要删除的时候如果文件被占用则不能删除。
读,写文件
读写文件之前,都需要把文件先打开。
- 读文件时,指明读多少数据,存放位置。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。导致读入几个连续的扇区需要很长的延迟时间。
减少延迟时间的方法:交替编号
若采用交替编号策略,即让逻辑上相邻的扇区有一定的间隔,可以使读取连续的逻辑扇区所需要的延迟时间更小。
磁盘地址结构的设计
磁盘的物理地址是(柱面号,盘面号,扇区号)。
这样设计可以读完一个柱上所有扇区后再移动磁头。
错位命名
让相邻盘面的扇区编号错位
磁盘的管理
磁盘初始化
磁盘初始化:
- 进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区。一个扇区可以分为头,数据区域,尾三个部分组成。管理扇区所需要的各种数据结构一般放在头尾。包括扇区校验码,循环冗余校验码。
- 将磁盘分区,每个分区有若干柱组成。
- 进行逻辑格式化,创建文件系统。包括创建文件系统根目录,初始化存储空间管理所用的数据结构。
引导块
计算机开机时需要进行一系列的初始化工作。这些初始化工作是通过执行初始化程序完成的。
完整的自举程序放在磁盘的启动块上,启动块位于磁盘的固定位置。
ROM:初始化程序放在ROM(只读)存放自举装入程序。
拥有启动分区的磁盘叫做系统盘(C:)
坏块的管理
坏了,无法正常使用的扇区是“坏块”。OS是不能修复的,应该将坏块标记出来,以免错误的使用。
对于简单的磁盘,可以再逻辑格式化的时候,对整个磁盘进行坏块检查,标明哪些是坏扇区。
对于复杂的磁盘,磁盘控制器维护一个坏块链表,再磁盘出场前低级格式化时将坏块链进行初始化。
操作系统学习笔记(5. 文件管理)相关推荐
- 操作系统学习笔记-01-操作系统的概念(定义),功能和目标
操作系统学习笔记-2019 王道考研 操作系统-01-操作系统的概念(定义),功能和目标 文章目录 1-操作系统的概念(定义),功能和目标 1.1常见的操作系统 1.2概念(定义) 1.3-操作系统的 ...
- 操作系统学习笔记-2.1.5线程概念和多线程模型
操作系统学习笔记-2019 王道考研 操作系统-2.1.5线程概念和多线程模型 文章目录 5线程概念和多线程模型 5.1知识概览 5.2 什么是线程?为什么要引入线程? 5.3引入线程及之后,有什么变 ...
- 操作系统学习笔记-2.1.4进程通信
操作系统学习笔记-2019 王道考研 操作系统-2.1.4进程通信 文章目录 4进程通信 4.1知识总览 4.2前置知识:什么是进程通信? 4.3共享存储 4.4 管道通信 4.5消息传递 4.6小结 ...
- 操作系统学习笔记-2.1.3进程控制
操作系统学习笔记-2019 王道考研 操作系统-2.1.3进程控制 文章目录 3.进程控制 3.1知识概览 3.2 基本概念 3.2.1什么是进程控制? 3.2.2如何实现进程控制? 3.3进程控制相 ...
- 操作系统学习笔记-2.1. 2进程的状态与转换
操作系统学习笔记-2019 王道考研 操作系统-2.1. 2进程的状态与转换 文章目录 2进程的状态与转换 2.1知识概览 2.2进程的状态-三种基本状态 2.3进程的状态-另外两种状态 2.4进程状 ...
- 操作系统学习笔记-2.1.1.进程的定义、组成、组织方式、特征
操作系统学习笔记-2019 王道考研 操作系统-2.1.1.进程的定义.组成.组织方式.特征 文章目录 2.1.1.进程的定义.组成.组织方式.特征 1.1知识概览 1.2进程的定义 1.3进程的组成 ...
- 操作系统学习笔记目录(暂时不全223)
操作系统学习笔记目录章节汇总 (暂时不全,目前只有第一章+第二章-浅谈线程,进程-2020.3.6) 文章目录 操作系统学习笔记目录章节汇总 1.打开钢琴的盖子(序章) 1.1-操作系统的概念(定义) ...
- 操作系统学习笔记-06-系统调用
操作系统学习笔记-2019 王道考研 操作系统-06-系统调用 文章目录 6-系统调用 6.1 知识概览 6.2什么是系统调用?有什么作用? 6.3系统调用与库函数的区别 6.4系统调用背后的过程 6 ...
- 操作系统学习笔记-05-中断和异常
操作系统学习笔记-2019 王道考研 操作系统-05-中断和异常 文章目录 5-中断和异常 5.1知识概览 5.2 中断机制的诞生 5.3中断概念和作用 5.4中断的分类 5.5 外中断的处理过程 5 ...
- 操作系统学习笔记-04-操作系统的运行机制和体系结构
操作系统学习笔记-2019 王道考研 操作系统-04-操作系统的运行机制和体系结构 文章目录 4-操作系统的运行机制和体系结构 4.1知识总览 4.2运行机制 4.2.1预备知识:什么是指令? 4.2 ...
最新文章
- CentOS6.4下安装xampp
- Ceryx —— 基于 OpenResty 的动态反向代理
- 2.6 处理数据不匹配问题-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
- 软件测试需求人才越来越多
- 从使用传统Web框架到切换到Spring Boot后的总结
- Flutter轮播图
- 云原生架构及设计原则
- Eclipse 有望超越 Visual Studio!
- 小学计算机教师德育工作计划,小学教师个人德育工作计划
- 正则表达式 之 回溯引用:前后一致匹配
- OpenStack互操作性认证 为何有UnitedStack?
- 实验一 DOS命令解释程序的编写
- layui 点击头像 上传头像
- Python(三)微信公众号开发
- AVR 上的汇编圈圈操作系统
- 一、C语言[typedef、结构体、共用体、枚举体]
- 设置屏幕常亮 switch
- PSpice 仿真混沌电路的相图的步骤
- iMX6ULL RTL8723BU WiFi蓝牙模块
- css3多米诺骨牌动画特效