操作系统学习笔记(Ⅳ):文件

news/2024/10/19 13:18:50/

目录

1 文件管理

1.1 初识文件管理

1.文件属性

2.文件数据组织

3.向上功能

1.2 文件逻辑结构

1.无结构文件

2.有结构文件

3.顺序文件

4.索引文件

5.索引顺序文件

1.3 文件目录

1.文件控制块

2.目录结构

3.索引结点

1.4 文件物理结构

1.连续分配

2.链接分配

3.索引分配

1.5 文件存储空间管理

1.存储空间的划分与初始化

2.空闲表法

3.空闲链表法

4.位示图法

5.成组链接法

1.6 文件基本操作

1.创建文件

2.删除文件

3.读文件

4.写文件

5.打开文件

6.关闭文件

1.7 文件共享

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

2.基于符号链的共享方式

1.8 文件保护

1.口令保护

2.加密保护

3.访问控制

1.9 文件系统的层次结构

2 磁盘

2.1 磁盘结构 

1.组成

2.读写数据

3.磁盘物理地址

4.磁盘分类

2.2 磁盘调度算法

1.磁盘操作时间

2.磁盘调度算法

2.3 减少磁盘延迟时间方法

1.延迟时间问题

2.交替编号

3.磁盘地址结构设计

4.错位命名

2.4 磁盘的管理

1.磁盘初始化

2.引导块

3.坏块处理


1 文件管理

1.1 初识文件管理

1.文件属性

文件名:方便用户找到文件,同一目录下不能有重名文件。

标识符:区分各个文件的一种内部名称

类型:指明文件类型

位置:文件存放路径(用户使用)、在外存中的地址(操作系统使用)

大小、创建时间、保护信息等

2.文件数据组织

无结构文件:由一些二进制或字符流组成,又称流式文件

有结构文件:由一组相似的记录组成,又称记录式文件

3.向上功能

创建文件:create系统调用

读文件:read系统调用

写文件:write系统调用

删除文件:delete系统调用

打开文件:open系统调用

关闭文件:close系统调用

1.2 文件逻辑结构

1.无结构文件

由一些二进制或字符流组成,又称流式文件

2.有结构文件

由一组相似的记录组成,又称记录式文件,每条记录由若干个数据项组成。每条记录中又一个数据项作为关键字。根据各条记录的长度是否相等,可分为定长记录可变长记录两种。

3.顺序文件

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

顺序文件的缺点是增删一个记录较为困难 

4.索引文件

为了在可变长记录文件中快速找到第i个记录,建立一张索引表,每条记录对应一个索引项。索引表本身是定长记录的顺序文件

5.索引顺序文件

索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是: 并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项。为了进一步提高检索效率,可以为顺序文件建立多级索引表。
 

1.3 文件目录

1.文件控制块

 目录文件中的一条记录就是一个文件控制块(FCB)

2.目录结构

·单级目录:系统中只建立一张目录表,每个文件占一个目录项。但不允许文件重名。

·两级目录结构:包括主文件目录和用户文件目录。允许不同用户的文件重名。

·多级目录结构:又称树形目录结构。当用户从根目录开始访问某个文件时使用绝对路径;当用户从当前目录出发访问时使用相对路径。但多级目录结构不便于文件的共享

·无环图目录结构:可以用不同的文件名指向同一个文件,需要为每个共享结点设置共享计数器,用于记录此时有多少共享,当进行删除操作时,FCB被删除,共享计数器减一,只有当共享计数器为0时,结点被删除

3.索引结点

将除文件名外的所有信息都存入索引结点中,可以提升文件检索速度。

1.4 文件物理结构

在外存管理中,为方便对文件数据的管理,文件的逻辑地址空间被划分为文件块。将文件的逻辑地址转换为物理地址即文件分配方式,包括连续分配、链接分配及索引分配。

1.连续分配

每个文件在磁盘上占有一组连续的块。操作系统只需转换逻辑块号为物理块号,块内地址保持不变(物理块号 = 起始块号 + 逻辑块号)。连续分配支持顺序访问和直接访问,其在顺序读写时速度最快。

但该分配方式不便于拓展,且存储空间利用率低,会产生磁盘碎片。

2.链接分配

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

·隐式链接

只支持顺序访问,不支持随机访问,查找效率较低。但便于拓展文件,不会有磁盘碎片问题。

·显式链接

将用于链接文件各物理块的指针显式地存放在一张表中,即文件分配表(FAT)。一个磁盘仅设置一个FAT。从目录项找到起始块号,若i>0,则查询内存中的文件分配表,往后找到i号逻辑块对应的物理块号。逻辑块号转换成物理块号的过程不需要读磁盘操作。因此访问速度较快,但FAT需要占用一定内存空间。

3.索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表――建立逻辑页面到物理页之间的映射关系)。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。
从目录项中可知索开画放位置,将索引表从外存读入内存,并查找索引表即可只i号逻辑块在外存中的存放位置。

索引分配支持随机访问,文件拓展较方便,但索引表需要占据一定空间

若文件大小超过了磁盘块大小,其解决方式如下:

·链接方案

若索引表过大,将多个索引块链接存放。

·多层索引

建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层的索引块。还可根据文件大小的要求再建立第三层、第四层索引块。各层索引表大小不能超过一个磁盘块。

采用n层索引结构,且顶级索引表未调入内存,则访问弄一个数据块需要K+1次读磁盘操作。

计算:若磁盘块大小为x,一个索引表项占y,则一个磁盘块能存放 z = x / y 个索引项。若采用n层索引,则该文件最大长度可以为z^n * x 

·混合索引

多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)。

1.5 文件存储空间管理

管理空闲磁盘区

1.存储空间的划分与初始化

存储空间的划分:将物理磁盘划分为文件卷

存储空间初始化:将各文件卷划分为目录区(存放文件目录信息、用于磁盘存储空间管理的信息)、文件区(存放文件数据)

2.空闲表法

记录空闲盘块起始位置与块数,适用于连续分配方法。 

3.空闲链表法

空闲盘块链中系统保存着链头和链尾指针。若某文件申请K个盘块,则从链头开始一次分配K个盘块,并修改空闲链的链头指针。

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

4.位示图法

 

5.成组链接法

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

1.6 文件基本操作

1.创建文件

2.删除文件

3.读文件

4.写文件

5.打开文件

6.关闭文件

1.7 文件共享

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

设置一个包含文件物理地址都索引结点,内置一个链接技术变量count,用于表示链接到本索引结点上的用户目录项数。

2.基于符号链的共享方式

1.8 文件保护

1.口令保护

设置存放在系统内部的访问口令,一致时才可访问

2.加密保护

使用加密密码对文件进行加密,如异或加密,需要花费一定时间

3.访问控制

在每个文件FCB中增加访问控制列表,限制不同用户可以执行的操作

为了精简访问列表,可以以组为单位,标记各组用户的权限。

1.9 文件系统的层次结构

2 磁盘

2.1 磁盘结构 

1.组成

磁盘:表面由磁性物质组成,可记录二进制数据

磁道:磁盘的盘面被划分成一个个磁道

扇区:一个磁道又被划分成一个个扇区,每个扇区就是一个“磁盘块”。各个扇区存放的数据量相同(如1KB)。最内侧数据密度最大

2.读写数据

需要把“磁头”移动到想要读/写的扇区所在的磁道。磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作。


3.磁盘物理地址

4.磁盘分类

根据磁头类型分为:活动头磁盘、固定头磁盘

根据盘片是否可更换分为:可换盘磁盘、固定盘磁盘

2.2 磁盘调度算法

1.磁盘操作时间

2.磁盘调度算法

·先来先服务(FCFS):根据进程请求访问磁盘的先后顺序进行调度。公平但性能差,寻道时间长

·最短寻找时间优先(SSTF):优先处理的磁道是与当前磁头最近的磁道。性能好,但可能产生饥饿现象

·扫描算法(SCAN):只有磁头移动到最外侧磁道时才能往内移动,移动到最内侧磁道时才能往外移动。不会产生饥饿现象,但不同磁道响应频率不平均。

·LOOK调度算法:若磁头移动方向上没有请求,立即改变磁头移动方向。

·循环扫描算法:磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请求。响应频率较为平均,但比SCAN平均寻道时间更长。

·C-LOOK调度算法:若磁头移动方向上没有磁道访问请求,就可立即让磁头返回,需返回到有磁道访问请求的位置即可。

2.3 减少磁盘延迟时间方法

1.延迟时间问题

磁头读入一个扇区数据后需要一小段时间处理,如果逻辑上相邻的扇区在物理上也相邻,则读入几个连续的逻辑扇区,可能需要很长的“延迟时间”

2.交替编号

采用交替编号的策略,让逻辑上相邻的扇区在物理上有一定间隔,使读取连续扇区需要的延迟时间减小。


3.磁盘地址结构设计

磁盘的物理地址是(柱面号、盘面号、扇区号),无需移动磁头臂,减少磁头移动消耗时间。

4.错位命名

相邻盘面相对位置相同处扇区号若相同会增加延迟时间。采用错位命名可以减少延迟时间

2.4 磁盘的管理

1.磁盘初始化

2.引导块

部分初始化程序放在ROM中,不可修改;完整的初始化程序放在磁盘的启动快上,位于磁盘的固定位置。

3.坏块处理

扇区损坏故障无法使用。可以在逻辑格式化时对整个磁盘进行检查,并进行标记。磁盘中保留一些备用扇区,用于替换坏块。


http://www.ppmy.cn/news/654.html

相关文章

品质创未来!流辰信息技术公司实力谱新章!

对于一个企业而言,一辈子用心做好一件事就是对社会最大的贡献。自从深耕于低代码开发平台领域以来,流辰信息技术公司便时刻保持着奋斗和创新的研发心态,不仅增强自主创新能力,而且还积极扩大队伍团队和实力,立志为每一…

数据库学习

数据是描述事务的符号记录,包括数字、文字、图像、音频等,以“记录”的形式按统一的格式进行存储;表将不同的记录组织在一起,用来存储具体的数据;数据库是表的集合,是存储数据的仓库,它以一定的…

【Javadoc生成开发文档(Terminal或IDEA中)】

Javadoc生成开发文档一、Javadoc工具介绍二、常用标记三、使用方式四、生成文档的两种方式1.Terminal方式2.IDE方式一、Javadoc工具介绍 大家在查看官网文档的时候,会不会感慨人家的帮助文档写的真有逻辑,层次分明? 不要羡慕,你…

【踩坑】double和BigDecimal的精度问题

【踩坑】double和bigdecimal的精度问题背景debug尝试测试代码结果总结背景 今天生产报了个问题,在申报和预算相同的金额的时候,后台返回超出预算。一开始以为是判断逻辑的问题,找了个数据试了下发现重现不出来。又是改数据又是找前端传参最后…

手撕一个图片色卡提取器,可自定义提取色卡数量!

在一些特殊的业务场景中,我们需要一次性提取一张图片中的色卡信息,并且需要使用十六进制的颜色表示方法进行展示。 今天得空做了一个小工具,用来自定义的提取某一张图片中的色卡信息,需要提取某张图片中的色卡可以自行选择。 实现…

m基于可见光通信系统的RFID接口过程以及ALOHA防碰撞算法的matlab仿真

目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 射频识别技术(Radio Frequency Identification,RFID)是一种非接触式自动识别技术,与传统的识别方式相比,它无需直接接触、无需光学可视、无需人工干预即…

[附源码]Python计算机毕业设计Django第三方游戏零售平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【Linux】Linux下基本指令(一)

作者:一个喜欢猫咪的的程序员 专栏:《Linux》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 一、浅谈操作系统: 1.1什么是操作系统?&#xff…