《计算机操作系统》(第4版)第7章 文件管理 复习笔记
第7章 文件管理
一、文件和文件系统
1. 数据项、记录和文件
数据组成可分为数据项、记录和文件三级,它们之间的层次关系如图7-1所示。
图7-1 文件、记录和数据项之间的层次关系
(1)数据项
在文件系统中,数据项是最低级的数据组织形式,可以分为基本数据项和组合数据项两种类型。
(2)记录
记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。
(3)文件
文件是指由创建者所定义的、具有文件名的一组相关元素的集合,它是文件系统中一个最大的数据单位。
2.文件类型
(1)按用途分类
按照用途分将文件分为系统文件、用户文件、库文件。
(2)按文件中数据的形式分类
按文件中数据的形式将文件分为源文件、目标文件(后缀名是“.obj”) 、可执行文件(后缀名是.exe)。
(3)按存取控制属性分类
按存取类型属性将文件分为只执行文件、只读文件、读写文件。 (4)按组织形式和处理方式分类
按组织形式和处理方式分为普通文件、目录文件、特殊文件。
(5)按照逻辑结构分类
按照逻辑结构将文件分为无结构文件(流式文件)和有结构文件(记录式文件)。
3.文件系统的层次结构
如图7-2所示,文件系统的模型可分为三个层次。
图7-2 文件系统模型
其中,文件系统的接口分为命令接口和程序接口。
4 . 文件操作
(1)最基本的文件操作
①创建文件。
②删除文件。
③读文件。
④写文件。
⑤设置文件的读/写位置。
(2)文件的“打开”和“关闭”操作
①“打开”操作(open)
调用完 open 操作后,操作系统对文件的任何操作都不会再使用文件名,只需要open 调用返回的指针。
②“关闭”操作(close)
调用“关闭”系统调用来关闭此文件,OS 将会把该文件从打开文件表中的表目上删除掉。
二、文件的逻辑结构
1.文件逻辑结构的类型
(1)按文件是否有结构分类
①有结构文件(记录式文件)。
②无结构文件(流式文件)。
(2)按文件的组织方式分类
①顺序文件。
②索引文件。
③索引顺序文件。
2. 顺序文件
(1)顺序文件的排列方式
①串结构。
②顺序结构。
(2)顺序文件的优缺点 ①优点
a. 所有逻辑文件中顺序文件的存取效率是最高的;
b.对于顺序存储设备(如磁带),也只有顺序文件才能被存储并能有效地工作。 ②缺点
a. 若要求查找或修改单个记录,顺序文件所表现出来的性能就可能很差;
b. 对记录的增删操作困难。
3. 记录寻址
(1)隐式寻址方式。
(2)显式寻址方式
可以通过两种方式对定长记录实现随机访问:
①通过文件中记录的位置。
②利用关键字。
4. 索引文件
(1)按关键字建立索引
主要用于对信息处理的及时性要求较高的场合。
(2)具有多个索引表的索引文件
满足不同的用户,为了不同的目的,希望能按不同的关键字来检索一条记录的要求。
5. 索引顺序文件
(1)索引顺序文件的特征
①保留了顺序文件的关键特征;
②引入了文件索引表,可以实现对索引顺序文件的随机访问;
③增加了溢出文件,用它来记录新增加的、删除的和修改的记录。
(2)一级索引顺序文件
最简单的索引顺序文件只使用了一级索引。如图7-3所示。
图7-3 索引顺序文件
(3)两级索引顺序文件
为索引文件再建立一张索引表,从而形成两级索引表,进一步提高了检索效率。
6. 直接文件和哈希文件
(1)直接文件
直接文件可根据给定的关键字直接获得指定记录的物理地址。
(2)哈希 (Hash) 文件
哈希 (Hash) 文件利用Hash 函数(或称散列函数)将关键字转换为相应记录的地址。
三 、文件目录
1.文件目录管理的要求
(1)实现“按名”存取。
(2)提高对目录的检索速度。
(3)文件共享。
(4)运行文件重名。
【说明】目录管理最基本的功能是——实现按名存取。
2.文件控制块和索引结点
(1)文件控制块(FCB)
在文件控制块中,通常应含有三类信息:
①基本信息类。
②存取控制信息类。
③使用信息类。
(2)索引结点
①索引结点的引入
采用了把文件名与文件描述信息分开的办法,即,使文件描述信息单独形成一个称为索引结点的数据结构, 简称为i 结点。
②磁盘索引结点
这是存放在磁盘上的索引结点。每个文件有唯一的一个磁盘索引结点。
③内存索引结点
这是存放在内存中的索引结点。 ④作用
可以降低平均启动磁盘的次数,节省系统开销。
3. 简单的文件目录
(1)单级文件目录 ①概述
在整个文件系统中只建立一张目录表,每个文件占一个目录项。 ②优点
单级文件目录的优点是简单。 ③缺点
a. 查找速度慢
对于一个具有N 个目录项的单级目录,为检索出一个目录项,平均需查找N/2 个目录项。
b. 不允许重名
c. 不便于实现文件共享,只适用于单用户环境。
(2)两级文件目录 ①概述
在系统中建立一个主文件目录MFD, 为每一个用户再建立一个单独的用户文件目录UFD。在主文件目录中, 每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录文件的指针。
②特点
a. 提高了检索目录的速度
如果在主目录中有n 个子目录,每个用户目录最多为m 个目录项,则为查找一指定的目录项,最多只需检 索 n+m 个目录项。
b. 在不同的用户目录中,可以使用相同的文件名。
c. 不同用户还可使用不同的文件名访问系统中的同一个共享文件。
4. 树形结构目录
(1)树形目录概念
在每个文件目录中,只能有一个根目录(主目录),每个文件和每个目录都只能有一个父目录。把数据文件 称为树叶,其他的目录均作为树的结点,或称为子目录。
(2)路径名和当前目录 ①路径名
由树的根目录开始到指定数据文件的通路上全部目录文件名与数据文件名依次地用“\”连接起来,即构成 该数据文件唯一的路径名。
②当前目录
a. 定义
为了提高文件的检索速度,文件系统向用户提供了一个当前正在使用的目录,称为当前目录。
b. 相对路径
把从当前目录开始直到数据文件为止所构成的路径名称为相对路径名。
c. 绝对路径
把从树根开始的路径名称为绝对路径名。
(3)目录操作
①创建目录。
②删除目录。
③改变目录。
④移动目录。
⑤链接操作。 ⑥查找。
5. 目录查询技术
(1)线性检索法(顺序检索法)。
(2)Hash 方法。
四 、文件共享
1. 基于有向无循环图实现文件共享
(1)有向无循环图DAG
DAG 实现了文件共享,但是使得文件系统的管理变得复杂。
(2)基于索引结点的共享方式(硬链接)
如图7-4所示。索引节点中count 的值说明有几个用户共享此文件。
图7-4 基于索引结点的共享方式
2. 利用符号链接实现文件共享(软链接)
(1)利用符号链接的基本思想
允许一个文件或子目录有多个父目录,但其中仅有一个作为主父目录,其他的几个父目录都是通过符号链接 方式与之相链接的。
(2)利用符号链实现共享的优点
①只有文件主才拥有指向其索引结点的指针;而共享该文件的其他用户则只有该文件的路径名。
②不会发生在文件主删除一共享文件后留下一悬空指针的情况。
③当文件的拥有者把一个共享文件删除后,其他用户再访问时会访问失败,再将符号链删除,此时不会产生 任何影响。
(3)利用符号链的共享方式存在的问题
①每次访问共享文件时都可能多次读盘,访问文件的开销大,增加了启动磁盘的频率。
② 符号链的索引结点耗费一定的磁盘空间。
五、文件保护
1. 确保文件安全性的措施
(1)通过存取控制机制,防止由人为因素所造成的文件不安全性。
(2)采取系统容错技术,防止系统部分的故障所造成的文件不安全性。
(3)建立后备系统,防止由自然因素所造成的不安全性。
2. 保护域
用于对系统中资源进行保护的保护机制是“访问权”和“保护域”。 (1)访问权
把一个进程能对某对象执行操作的权力,称为访问权。
(2)保护域
简称为“域”。“域”是进程对一组对象访问权的集合,进程只能在指定域内执行操作。 (3)进程和域间的静态联系
在进程和域之间可以一一对应,即一个进程只联系着一个域。
(4)进程和域间的动态联系方式
在进程和域之间,也可以是一对多的关系,即一个进程可以联系着多个域
3. 访问矩阵
(1)基本的访问矩阵。
(2)具有域切换权的访问矩阵。
4. 访问矩阵的修改
经常对访问矩阵进行修改时,可通过在访问权中增加拷贝权、拥有权及控制权的方法来实现现有控制的修改。
5. 访问矩阵的实现
(1)访问控制表
对访问矩阵按列(对象)划分,为每一列建立一张访问控制表ACL。
(2)访问权限表
如果把访问矩阵按行 (RP 域)划分,便可由每一行构成一张访问权限表。
相关文章:

《计算机操作系统》(第4版)第7章 文件管理 复习笔记
第7章 文件管理 一、文件和文件系统 1. 数据项、记录和文件 数据组成可分为数据项、记录和文件三级,它们之间的层次关系如图7-1所示。 图7-1 文件、记录和数据项之间的层次关系 (1)数据项 在文件系统中,数据项是最低级的数据组织形式,可以分为…...

uniapp 修复使用 uni.saveImageToPhotosAlbum 方法在部分安卓手机上保存失败
场景:使用 uni.saveImageToPhotosAlbum 保存图片,其他手机都是可以的,但在鸿蒙系统的手机上出现了bug,报错Object {errMsg:"savelmageToPhotosAlbum:fai..errMsg:savelmageToPhotosAlbum:fail invalid filetype"} 原因&…...

电脑无法新建 Word Excle PPT 这些文件是咋回事
咦 我的电脑怎么没有 Excel文件 Word文件 和 PPT选项嘞 !! 今天突然要写个材料,发现自己新建文件竟然没有excel文档 word和ppt幻灯片这些选项。哦 原来是我自己上次把电脑从win7升级win10系统之后还没有安装wps这些所以不能使用。如果你的电…...

CANoe.DiVa的应用——生成TP层测试用例过程流程详解(二)
🙋♂️【Vector CANdelastudio配置CDD】文章合集💁♂️点击跳转 ——————————————————————————————————–—— 从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 一.概述2.经典CAN T…...

java设计模式--组合模式、适配器模式
组合模式 组合模式(Composite Pattern)允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式让客户端可以统一地处理单个对象和组合对象。在这个模式中,组合对象(Composite)和叶子对象(Lea…...

保姆级-C#与Halcon的窗体界面展示阈值分割图像教程(机器视觉保姆级教程)
经历上一篇《零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功》的发布已经过去三天啦, 零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功_添加halcondotnet.dll-CSDN博客 在友友的催更下…...

Kotlin学习-01创建kotlin学习环境
安装idea https://www.jetbrains.com/zh-cn/ 创建项目 选择kotlin 修改Main.kt fun main() {print("Hello World!") }运行...

NGINX 之 location 匹配优先级
章节 1 NGINX 的源码安装 2 NGINX 核心配置详解 3 NGINX 之 location 匹配优先级 4 NGINX 基础参数与功能 目录 1 location 基础语法 1.1 location 语法说明表 1.2 URI部分简单介绍 2 location 匹配优先级 2.1 URI匹配的规则与顺序 2.2 精确匹配(location /1.txt) 2.3 区…...

算法_字符串专题---持续更新
文章目录 前言最长公共前缀题目要求题目解析代码如下 最长回文子串题目要求题目解析代码如下 二进制求和题目要求题目解析 字符串相乘题目要求题目解析代码如下 前言 本文将会向你介绍有关字符串的相关题目:最长公共前缀、最长回文子串、二进制求和、字符串相乘。本…...

Anaconda与conda、pip与conda的区别
Anaconda与conda、pip与conda的区别 1. 引言1.1 背景介绍1.2 文章目的 2. 什么是Anaconda?2.1 Anaconda简介2.2 Anaconda的优势2.3 Anaconda的安装与配置 3. 什么是Conda?3.1 Conda简介3.2 Conda的功能和用途3.3 Conda与Anaconda的关系 4. 什么是Pip&…...

odoo Request Entity Too Large
在数据库恢复中,文件有256M大小,无法正常恢复下。显示如下: 解决办法: 修改http.py文件里面的 DEFAULT_MAX_CONTENT_LENGTH参数, odoo\http.py DEFAULT_MAX_CONTENT_LENGTH 128 * 1024 * 1024 # 128MiB 修改为300M,即…...

【C++ 面试 - 面向对象】每日 3 题(六)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...

基于tcp c/s的网络通信
TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数 据无误、数据无丢失、数据无失序、数据无重复到达的通信) tcp协议特点: 1. 面向连接 //类似打电话通话之前 ,必须先打通 2. 可靠传输 …...

论文翻译:Universal and Transferable Adversarial Attacks on Aligned Language Models
Universal and Transferable Adversarial Attacks on Aligned Language Models https://arxiv.org/pdf/2307.15043v2 通用且可转移的对抗性攻击对齐语言模型 文章目录 通用且可转移的对抗性攻击对齐语言模型摘要1 引言2 一个针对LLMs的通用攻击2.1 产生肯定回应2.2 贪婪坐标梯…...

Axure RP 9高手速成秘籍:解锁终极快捷键,设计效率飙升10倍!
Axure RP 9作为一款功能强大的原型设计工具,提供了丰富的快捷键来加速设计流程。以下是一份详尽的Axure RP 9快捷键大全,旨在帮助用户更高效地完成设计工作。 一、文件操作 新建:Ctrl N(Windows)/ Command N&#…...

Springcloud从零开始--Eureka(一)
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有…...

[数据集][目标检测]agvs仓储机器人检测数据集VOC+YOLO格式967张3类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):967 标注数量(xml文件个数):967 标注数量(txt文件个数):967 标注类别…...

(八)Flink Join 连接
在分布式数据处理中,JOIN 是一个非常重要的操作。Flink 的 JOIN 是用于将两个数据流按照一定的条件进行连接,生成新的数据流。Flink 双流 JOIN 主要分为两大类:一类是基于窗口的 JOIN 操作,另一类是基于原生 State 的 Connect 算子操作。其中基于窗口的 JOIN 可细分为 Wind…...

你也想转行成为一名程序员吗?作为过来人的我希望你想清楚这几个问题再做决定
1 有个朋友突然找我:“现在的工作不想干了,我现在转行搞IT能不能行?学哪个编程语言比较有前景?现在去搞网络安全应该没问题吧?”我相信,很多人出于各种原因都在考虑要不要进行职业转换,迷茫又焦…...

Linux文件属性和打包压缩详解
1、文件属性体系 1.1 文件系统概述 [rootyunwei /]# ls -lhi 总用量 72K3505 lrwxrwxrwx. 1 root root 7 3月 7 2019 bin -> usr/bin 262152 dr-xr-xr-x. 5 root root 4.0K 12月 19 16:00 boot 399635 drwxr-xr-x 2 root root 4.0K 11月 5 2019 data1026 drw…...

微服务注册到nacos时,注册失败报错解决
微服务注册到nacos时,注册失败报错解决 微服务注册nacos时报错nacos报错alipay-jraft.log日志报错原因排查 微服务注册nacos时报错 NacosException: failed to req API:/nacos/v1/ns/instance/list after all servers([127.0.0.1:28100]) tried: ErrCode:503, ErrM…...

基于Sringboot+Vue个人驾校预约管理系统--论文pf
TOC springboot503基于SringbootVue个人驾校预约管理系统--论文pf 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。…...

python-逆序数(赛氪OJ)
[题目描述] 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。比如一个元素个数为 4 的数列,其元素为 2,4,3,1,则 (2,…...

PCIE-flit mode retry
下一个即将发送的seq num: 下一个即将发送的ack或者nak的seq num: Tx发送exp seq num的个数: Tx发送nak的个数 下一个期望收到的flit的seq num,注意是指下个期望收到的有效的、non-idle、non_duplictae的flit: 收到的flit的真实的seq num(implicit…...

使用Obsidian实现Anki快速制卡
文章目录 前言准备双双启用遇到问题查看是什么问题解决问题 开始使用使用前的一些设置快速制卡 前言 我现在使用 Anki 的同时也使用 Obsidian,正好可以通过插件来让这两个十分好用的软件实现联动。 在 Obsidian 中实现 Anki 的快速制卡。 准备 首先要在这两个软…...

Python编程:从入门到实践书籍介绍
对于Python入门的书籍推荐,以下是五本详细讲解的书籍,它们各自具有不同的特点和适用对象: 1. 《Python编程:从入门到实践》 作者:埃里克马瑟斯(Eric Matthes)《Python编程:从入门到实践》是一本经典的Pyth…...

Vue 3 的 emit 简单使用
在 Vue 3 中使用 emit,子组件可以将事件通知父组件,父组件可以在响应这些事件时执行特定的逻辑。 emit 是一种非常灵活的通信方式,允许组件之间以解耦的方式进行交互。 1. 基本用法 1、使用 defineEmits 子组件 <template><div…...

java在实际开发中反常识bug
目录 1.背景 2.案例 1.包装类型拆箱导致空指针异常 2.switch传入null,导致空指针异常 3.Arrays.asList添加异常 4.转BigDecimal类型时精度丢失 5.除以0不一定抛异常 6.Steam filter后集合修改,会修改原数据 3.完美&评论 1.背景 这篇博客,将列举本人在实际开发中看…...

java多线程(三)重排序与Happens-Before
一、重排序 1.1 指令重排定义和含义 定义:重排序是指编译器和处理器为了提高程序执行效率,在不改变单线程程序执行结果的前提下,对指令执行顺序进行重新排列的一种优化手段。 重排序可以发生在编译器优化阶段,也可以发生在处理…...

RUST知识框架与学习框架
RUST知识框架与学习框架 Rust是一门系统级编程语言,以其内存安全、高性能和并发性而著称,特别适用于开发低级系统、网络服务和并发应用,具有广泛应用前景。 一、Rust知识框架 基础语法与核心概念 变量与类型:包括基本数据类型、…...