计算机操作系统 第四章、文件管理软件实现

本文详细介绍了操作系统的关键概念,包括进程管理、内存分配(如分页、虚拟内存)、文件管理(如无结构和有结构文件、索引文件、目录结构、文件分配方式)以及文件操作(如打开、读写、共享和保护)。同时涵盖了文件空间管理、文件目录设计和访问控制等内容。
摘要由CSDN通过智能技术生成

第一章 ​​操作系统的概念-CSDN博客

第二章上、进程-CSDN博客

第二章下、调度算法-CSDN博客

第三章、内存-CSDN博客

第三章下:分页、分段存储,虚拟内存-CSDN博客

第四章、文件管理软件实现-CSDN博客

第五章、文件管理硬件实现-CSDN博客

第六章、IO管理-CSDN博客

操作系统补充 上-CSDN博客

操作系统补充 下-CSDN博客


文件的逻辑结构

文件内部的数据是如何组织起来的;文件的数据是如何存放在外存的

无结构文件:文件内部的数据就是一系列二进制流或字符流。又称“流式文件”。如.txt 文件

有结构文件:又称“记录式文件”。由若干记录组成,每条记录又由若干个数据项组成。表格文件。一般来说,每条记录有一个数据项可作为关键字(表格的表头)。根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录可变长记录两种

有结构文件的逻辑结构:

  1. 顺序文件

存储方式

结构

已知文件的起始位置。能否找到第i个记录的地址(随机存取)? 能否找到某个关键字对应的记录(快速检索)?

一般说的顺序文件是指顺序存储的顺序文件

顺序文件不方便增添删除

  1. 索引文件

索引表本身是定长顺序文件,可以随机存取,如果按关键字顺序排列,则可以快速检索

索引文件用于为信息处理及时性要求较高的场合

解决的顺序文件不方便增删的问题,也实现了不定长文件的随机存取,但索引表会占用很多空间

  1. 索引顺序文件

索引指向的不是记录,而是一组记录。先根据索引找到对应的组,组内是顺序文件。

减少了索引表大小,平均查找次数。

当记录过多时,可以建立多级索引(套娃)。

文件目录               (常考选择)

文件控制块FCB(文件目录项)

每个文件目录(文件夹)存放的都是这样的一个表,表中记录文件目录内的内容

包含文件的各种信息,最重要的是文件名和文件的物理地址

  实现了文件名和文件的映射,用户可以按名存取

目录结构:

1、单级目录结构

整个系统只有一张目录表,不允许重名。因此不适合多用户操作(多用户容易有重名文件)。

2、两级目录结构

分为主目录和用户目录,主目录存用户信息 ,每个用户有一个目录。

允许不同用户重名,同一用户不能,以为只有一张表。用户不能对自己的文件进行进一步的分类,缺乏灵活性。

3、多级目录结构

Windows的目录结构,目录套目录。只要是不同目录下,就可以重名。

系统根据绝对路径查找文件位置, 先从外存读入根目录,从根目录里找到“照片”的存放位置,再从外存导入“照片”目录……因此找到自拍的存放位置需要三次IO操作

4、无环图目录结构

两个目录可以通过相同或不同的文件名指向同一个文件或文件夹(文件夹也是特殊的文件)

   

指向同一文件不同于复制文件(复制等于有两个文件)或快捷方式(删除原文件就没了)

索引节点:FCB的改进

该读取一个文件夹的时候,需要把该文件目录的整张表放入内存, 这么多项,表太大,浪费空间且效率低。给目录表“瘦身”: 仅保留文件名,其余信息用指针索引,需要用到再从外存读入,这样表就小了,速度变快,占用内存也少。

文件的物理结构(文件分配方式):        (挺重要)

外存和内存一样,也被分为一个个的内存块。为了方便IO,磁盘块的大小常设置与内存块相同

1、连续分配:     

物理块号=起始块号+逻辑块号

当然,IO是需要检查逻辑块号是否合法(逻辑块号不能大于长度)

优点:支持顺序访问和随机访问。读取速度快(磁盘的读取方式---磁针转转转)

缺点:

若文件aaa要拓展,需要再增加个1磁盘块(总共需要连续的4个磁盘块)由于采用连续结构,因此文件A占用的磁盘块必须是连续的。所以必须将文件整个迁移

连续分配不方便拓展,并且容易产生碎片

2、链接分配

  1. 隐式链接

                                                                                                   除了文件最后一个磁盘块之外,每个磁盘块都跑村指向下一个磁盘块的指针,指针对用户是透明的

优点:方便拓展,无碎片、利用率高

缺点:只支持顺序访问,不支持随机访问,查找效率低,每个块存放指针也占用空间

  1. 显式链接

目录只记录起始块号。文件分配表FAT(一个磁盘只有一个FAT,开机时放入内存常驻;FAT每个表项长度相同,因此物理块号可以是隐含的)存放每个物理块的指针 -1表示最后一块。

采用显式链接方式的文件,支持顺序访问,也支持随机访问(为啥???),由于块号转换的过程不需要访问磁盘,因此相比于隐式链接来说,访问速度快很多。

优点:方便拓展,无碎片,支持随机访问,地址转换不需要访问磁盘(为啥???)、效率高

缺点:FAT占用内存

3、索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为块。  索引表每项定长,因此可以隐含块号。

 

支持随机访问,易拓展

若文件很大,索引表一个块装不下?

  1. 链接方案

索引块最后有下一个索引块的指针

  1. 多层索引

如果索引块非常多,前者效率低

K层索引,访问一个数据块需要k+1次IO

  1. 混合索引

多级索引虽然容量大了,但需要的IO次数太多。数据使用频率不同有的数据块常用,有的不常用。

这种索引支持的最大文件长度为:8+256+65536

文件空间管理  对空闲区域的管理

存储空间的划分:

将一个磁盘划为多个分区(文件卷),每个分区需要有文件区和目录区

也可以把多个磁盘划分成一个分区

存储空间管理方法:空闲表法

如何分配磁盘块:与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间。同样可采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间。

回收空间时:表中该合并的就合并

空闲列表法:       由OS保存链头链尾指针

空闲盘块链:以一个空闲块作为单位

 

空闲盘区链:以一组连续的空闲块作为单位

   

位示图法:

 

表中:位号最大为机器字长(一行对应一个字,字号说明了表占用了几个字)。字中的每一位对应了一个块的状态,1是占用,0是空闲。

重点是会盘块号和字号位号的转换: (n是字长)

文件的基本操作

打开文件: 调用OS的open指令

流程:从打开文件的所在目录中找到该文件的目录项,检验权限,目录项复制到打开文件表、将编号给用户,之后用户通过编号指明文件进行操作

打开文件表(这个表在内存里):

将已经打开的文件记录在表里。打开文件并没有对文件进行什么操作,因此文件并没有调入内存,而是把文件的存储地址等信息放入内存,在对文件进行具体操作的时候在调入文件。

两种打开文件表:系统的打开文件表(记录所有打开文件);进程的打开文件表(记录进程打开的文件)

打开计数器清零前,文件是删不掉的

读文件:

进程使用 read系统调用完成。需要指明是哪个文件(打开文件表中的编号),还需要指明要读入多少数据(如:读入1KB),指明读入的数据要放在内存中的什么位置。操作系统在处理read系统调用时,会从读指针指向的外存中,将用户指定大小的数据读入用户指定的内存区域中

写文件:

与读文件类似。注意,写文件指的是完成对文件的修改之后,保存修改时OS对外存的修改,而非用户对文件的修改。(例如写txt文档,写文件指的不是用户编辑的过程,而是编辑完保存时,系统的操作)

文件共享

硬链接(索引链接)

前面其实说过

软连接:快捷方式,一看就懂

文件保护

口令保护

 

口令一般存放在文件的FCB或者索引节点中

加密保护

对文件原始数据通过秘钥处理,即系统中存放的并不是原始数据,而是加密后的数据,用户需要对加密数据进行解密才能得到正确数据

控制访问

OS对用户的权限进行限制(rwx权限啥的)

访问控制表:

优点:实现灵

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值