《计算机操作系统》(第4版)第7章 文件管理 复习笔记

news2025/1/10 11:32:17

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 域)划分,便可由每一行构成一张访问权限表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Grove Vision AI V2之GPIO

一、说明 实现一个LED闪烁的Demo,Grove Vision AI V2开发板上有一个USER_LED,由GPIO SEN_D2驱动,SEN_D2为高电平是USER_LED亮,SEN_D2为低电平时USER_LED灭。 USER_LED部分电路如下: 二、创建例程 1、创建文件 在See…

MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…

上线eleme项目

(一)搭建主从从数据库 主服务器master 首先下载mysql57安装包,然后解压 复制改目录到/usr/local底下并且改个名字 cp -r mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql 删掉/etc/my.cnf 这个会影响mysql57的启动 rm -rf /etc…

浪潮服务器主板集成RAID常见问题

★主板集成RAID出现Initialize初始化,如下图 判断及解决方案: 1.机器是否有过插拔硬盘等操作。 2.系统初始化-系统启动会非常的慢。一般为非法关机或者断电导致。 3.出现此情况耐心等待磁盘初始化完成即可。系统初始化时间以具体的数据大小来决定&#…

CLion IDE用MSVC和cmake编译darknet(带GPU)

这个配置教程给用过pytorch,懂得深度学习代码的基本流程,但又不熟悉windows c开发环境的宝子们使用。 安装CUDA,CUDNN 一般都有,不说了。注意上nvidia官网看一下显卡架构,后面要用,比如我的丽台M2000架构…

从零开始Dify本地部署|Windows

参考官方文档部署 Dify本地源码启动 windows最好结合WSL使用,懒得配置WSL,就是硬肝! 1.Clone Dify 代码 先找到项目GitHub 开源链接clone 下来,使用docker部署运行(Windows配置docker环境这里不赘述) gi…

Prometheus Alertmanager告警之邮件、钉钉群、企业微信群机器人报警

文章目录 一、部署alertmanager相关组件1.alertmanager-config2.alertmanager-message-tmpl3.alertmanager 二、调试邮件告警三、钉钉群/企业微信群 报警3.1添加钉钉群机器人3.2添加企业微信群机器人3.3部署alertmanager-webhook-adaptermessage-tmplalertmanager-webhook-adap…

Windows环境下,使用bat脚本配置本地域名解析(含新增、修改、清理)

适用场景: 1.内部不存在DNS服务器的客户; 2.客户电脑不知道前期是否过某域名的本地解析。 整体思路: 1.备份原始hosts配置文件; 2.将hosts配置文件中包含xxxxxxxxxx.com域名的解析清空; 3.写入正确的解析到hosts配置文…

发布MindSearch到ModelScope创空间

一、创建空间 1.点击【我要创建】来创建一个应用 2.填写完基础信息 会出现一个未发布的应用 二、上传代码 1.参照当前页的指示一步一步将MindSearch部署需要的文件上传到指定的repo即可 2.在当前页点击【空间文件】查看刚才通过命令上传的文件 三、上线应用 1.点击【设置】可…

【论文阅读】A Closer Look at Parameter-Efficient Tuning in Diffusion Models

Abstract 大规模扩散模型功能强大,但微调定制这些模型,内存和时间效率都很低。 本文通过向大规模扩散模型中插入小的学习器(称为adapters),实现有效的参数微调。 特别地,将适配器的设计空间分解为输入位置、输出位置、函数形式的…

什么是ConcurrentHashMap?实现原理是什么?

什么是ConcurrentHashMap?实现原理是什么? 在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap。 HashTable是一个线程安全的类&#xff…

HashMap是线程安全的吗?为什么呢?

HashMap是线程安全的吗?为什么呢? HashMap是线程不安全的! 线程不安全体现在JDK.1.7时在多线程的情况下扩容可能会出现死循环或数据丢失的情况,主要是在于扩容的transfer方法采用的头插法,头插法会把链表的顺序给颠倒…

【亲测有效】JS Uncaught TypeError: [function] is not a constructor

【亲测有效】JS Uncaught TypeError: [function] is not a constructor 在JavaScript编程中,Uncaught TypeError: [function] is not a constructor 是一个相对常见的错误,通常发生在尝试使用某个值作为构造函数,但实际上它不是构造函数的情况…

鸿蒙卡片服务开发

首先先创建一个项目 在该项目下创建一个卡片服务 在module.json5文件下配置 {"module": {..."extensionAbilities": [{"name": "EntryFormAbility","srcEntry": "./ets/entryformability/EntryFormAbility.ets",…

Linux文件操作:文件描述符fd

文章目录 前言:回顾一下文件提炼一下关于文件的理解: 理解文件:通过系统调用操作文件:理解标志位传参:打开文件 open写入信息 write 理解文件描述符:对于open的返回值:文件描述fd的本质是什么呢…

设计模式之Decorator装饰者、Facade外观、Adapter适配器(Java)

装饰者模式 设计模式的基本原则,对内关闭修改。 Decorator Pattern,装饰者模式,也叫包装器模式(Wrapper Pattern):将一个对象包装起来,增加新的行为和责任。一定是从外部传入,并且可以没有顺序&#xff0…

Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)

【写在前面】 经常接触前端的朋友应该经常见到下面的控件: 在前端中一般称它为 Notification 或 Message,但本质是一种东西,即:悬浮弹出式的消息提醒框。 这种组件一般具有以下特点: 1、全局/局部显示:它不…

基于单片机的信号发生器设计

本设计采用了STM32F103C8T6单片机作为控制核心,通过控制DDS模块产生不同频率且高稳定和低失真的信号,再通过放大电路对信号的幅值进行放大。此外通过按键可以使用户对频率进行调节以及对输出波形进行切换,由于AD9833输出的幅值是固定的&#…

启动docker镜像

1、运行容器 2、当前运行的进程 3、当前位置和启动时间 4、cat/etc/redhat-release查看版本 5.镜像是模版,容器是实例 6.容器中没有命令运 7.容器总是能轻易获取 8.配置yum 9.安装http 10.修改index⽂件 11.httpd -k start 12.访问 13.退出就没有服务了 14…

细谈LCM驱动电压VGHVGL电路原理

前言: ***在液晶显示屏驱动电路中,VGH电压负责对TFT栅极电容进行充电开启,并使电容电压保持一个场周期,VGL电压负责TFT栅极的关闭。 如果VGH和VGL电压出现不稳或者幅度变化,都会引起图像显示故障,例如花屏…