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

news/2024/5/3 19:35:15/文章来源:https://blog.csdn.net/m0_49939117/article/details/128129795

目录

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.luyixian.cn/news_show_228796.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义表单、自定义流程、自定义页面、自定义报表应用开发平台

真正的大师,永远都怀着一颗学徒的心! 一、项目简介 Java开发框架,自定义表单、自定义页面、自定义流程、自定义报表应用开发平台 二、实现功能 支持系统文件在线管理 支持代码在线编辑 支持URL 路由 支持黑白名单 支持定时任务 支持在线监控 支持…

Charles抓取接口报文并修改各种参数信息调试

1.首先介绍Charles面板 图上顶部工具栏常用介绍: 1是清除按钮:点击后将清空左侧抓取的接口列表,如果接口太多,可以点击该按钮清空列表,重新发起请求,一目了然; 2.是停止按钮:点击该按…

Windows OpenGL ES 图像色调

目录 一.OpenGL ES 图像色调 1.原始图片2.效果演示 二.OpenGL ES 图像色调源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

能迪科技智能控制系统对中央空调进行精准、单独调控医院案例

案例背景​ 梅州市妇女儿童医院新院区(以下简称“新院区”)是省、市重点项目工程,建设地点位于江南新城客都大道北侧,一期项目总投资4.8亿元,占地面积50亩,总建筑面积87000平方米,按照三级妇幼保…

mybatis实战:二、mybatis xml 方式的基本用法

注释都在代码里,最好复制了再看! 1.创建表 CREATE TABLE sys_user( id BIGINT NOT NULL AUTO_INCREMENT COMMENT 用户 ID, user_name VARCHAR(50) COMMENT 用户名, user_password VARCHAR(50) COMMENT 密码, user_email VARCHAR(50) COMMENT 邮箱, user…

06【SpringMVC的Restful支持】

文章目录六、SpringMVC的Restful支持6.1 RESTFUL示例:6.2 基于restful风格的url6.3 基于Rest风格的方法6.4 配置HiddenHttpMethodFilter6.5 Restful相关注解六、SpringMVC的Restful支持 REST(英文:Representational State Transfer&#xff…

LabVIEW开发LabVIEW类

LabVIEW开发LabVIEW类 从概念上来说,LabVIEW面向对象编程和其它面向对象编程语言相似。但由于LabVIEW是数据流图形化编程环境,LabVIEW对类数据的操作和交互,以及LabVIEW类代码的调试方法和其它语言有所不同。 LabVIEW中的对象由值来传递&a…

vue2.x和vue3.x 环境相关配置

1.vue2.x配置多个环境 在根目录下创建多环境配置文件 例如: env.devlopment、env.prod、env.sit等,我的环境文件有以下几个: 分别配置各文件的参数 比如说uat环境和生产环境请求url是不同的 uat环境env.uat: # uat环境 NODE_ENV uat# uat环境请求…

X电容和Y电容

X电容和Y电容 1安规电容 安规电容之所以称之为安规,它是指用于这样的场合:即电容器失效后,不会导致电击,也不危及人身安全。安规电容包含X电容和Y电容两种,它普通电容不一样的是,普通电容即使在外部电源断…

数据结构与算法基础(王卓)(3)

前置&#xff1a; //#include<iostream> #include<stdlib.h>//存放exit#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define MAXlength 100 //初始大小为100&…

[附源码]Python计算机毕业设计Django高校商铺管理系统论文

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

【MySQL事务_2_事务提交与回滚】

在MySQL中&#xff0c;事务提交与回滚 对t_act进行提交和回滚操作 (1).提交操作(非事务成功) update t_act set balance400 where actno1; update t_act set balance200 where actno2;(2).提交操作(非事务失败) update t_act set balance400 where actno1; update t_act set…

Talk预告 | 香港中文大学(深圳)颜旭:利用跨模态知识蒸馏增强点云的表征学习

本期为TechBeat人工智能社区第459期线上Talk&#xff01; 北京时间12月1日(周四)20:00&#xff0c;香港中文大学&#xff08;深圳&#xff09;计算机与信息工程在读博士生——颜旭的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “利用跨模态知识蒸…

Python OpenCV 单目相机标定、坐标转换相关代码

前言 本文不讲原理&#xff0c;只关注代码&#xff0c;有很多博客是讲原理的&#xff0c;但是代码最多到畸变矫正就结束了&#xff0c;实际上就是到 OpenCV 官方示例涉及的部分。   在官方示例中使用黑白棋盘格求解了相机的内外参和畸变系数&#xff0c;并对图像做了畸变矫正…

智慧工地安全施工实时监测系统解决方案

背景介绍 随着经济的发展&#xff0c;混凝土搅拌车数量有很大增长&#xff0c;但是其超速、超载等原因造成了很多交通事故&#xff0c;给交通安全带来隐患&#xff0c;也给企业造成损失&#xff0c;严重影响了和谐城市建设的进程。 中国电子科技集团第52研究所经过多年研发与…

Codeforces Round #835 (Div. 4)A.B.C.D.E.F

A. Medium Number 题目链接&#xff1a; Problem - A - Codeforces 题面&#xff1a; 题意&#xff1a; 给定三个数&#xff0c;求中间那个数的值 思路&#xff1a; 我们可以分别求出三个数的总和&#xff0c;最大值和最小值&#xff0c;在通过总和减最大值和最小值的方…

Java+JSP+MySQL基于SSM的学生宿舍管理系统的设计与实现-计算机毕业设计

项目介绍 随着我国教育制度的改革&#xff0c;各大高校一直在不断的扩招相对应的学生的数量也在不断的增加。在学生数量增加之后学校后勤人员就需要对后勤部分更加精准的进行管理&#xff0c;其中宿舍管理就是后勤管理中比较重要的一个组成部分。如何能够对学生的宿舍信息进行…

【网安神器篇】——mimikatz系统取证工具

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门 创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座…

贺利坚汇编课程笔记2 访问寄存器和内存

贺利坚汇编课程笔记2 访问寄存器和内存 文章目录贺利坚汇编课程笔记2 访问寄存器和内存0201 寄存器及数据存储CPU的组成寄存器是CPU内部的信息存储单元通用寄存器--以AX为例“字”在寄存器中的存储0202 mov 和 add指令0203 确定物理地址的方法物理地址8086CPU给出物理地址的方法…

MySQL索引的底层数据结构原理剖析(二叉树、 红黑树、Hash、B-Tree、B+Tree)

一. 前言 1. 说明 我们平时所说的&#xff1a;聚集索引(主键索引)&#xff0c;次要索引&#xff0c;覆盖索引&#xff0c;复合索引&#xff0c;前缀索引&#xff0c;唯一索引在MySQL5.7和 8.0版本默认都是使用BTree索引&#xff0c;除此之外还有 Hash索引。至于MySQL5.7之前版…