操作系统 - 王道 - 第四章 文件

本文探讨了操作系统中文件的属性,包括文件名、标识符、类型、位置、大小等,并讨论了文件数据的组织方式及文件在外存的存储。文件管理功能包括共享和保护。此外,还介绍了文件的逻辑结构,包括无结构文件和有结构文件(顺序文件、索引文件、索引顺序文件)的概念,强调了逻辑结构与物理结构的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

4.1.1 文件管理

 

一、文件的属性

1、文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录不允许有重名 文件

2、标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,

          因此标识符只是操作系统用于区分各个文件的一种内部名称

3、类型:指明文件的类型 txt pdf

4、位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)

5、大小:指明文件大小

6、创建时间、上次修改时间文件所有者信息

7、保护信息:对文件进行保护的访问控制信息

 

 

二、文件内部的数据应该怎样组织起来?

 

 

 

三、文件之间应该怎样组织起来?

 

 

四、操作系统应该向上提供哪些功能?

 

 

 

五、从上往下看,文件应该如何存放在外存

 

(1)与内存一样,外存也是由一个个存储单元组成的,每个存储单元可以存储一定量的数据  

      每个存储单元对应一个物理地址

 

(2)类似于内存分为一个个“内存块”,外存会分为一个个“块/磁盘块/物理块”

     每个磁盘块的大小是相等的,每块一般包含2的整数幂个地址

    (如本例中,一块包含2^10个地址,即1KB)

     同样类似的是,文件的逻辑地址也可以分为(逻辑块号块内地址),

     操作系统同样需要将逻辑地址转换为外存的物理地址(物理块号,块内地址)的形式

     块内地址的位数取决于磁盘块的大小

 

(3)操作系统以“块”为单位为文件分配存储空间,因此即使一个文件大小只有10B,

     但它依然需要占用1KB的磁盘块

     外存中的数据读入内存时同样以块为单位

 

 

 

 

六、其他需要由操作系统实现的文件管理功能

1、文件共享: 使多个用户可以共享使用一个文件

2、文件保护: 如何保证不同的用户对文件有不同的操作权限

 

 

4.1.2 文件的逻辑结构

 

 

一、概述

 

(1)“逻辑结构”,就是指在用户看来,文件内部的数据应该是如何组织起来的

     “物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的

 

(2)类似于数据结构的“逻辑结构”和“物理结构”

    “线性表”就是一种逻辑结构,在用户角度看来,线性表就是一组有先后关系的元素序列,如: a,b,c…

    “线性表”这种逻辑结构可以用不同的物理结构实现,如:顺序表/链表

     顺序表的各个元素在逻辑上相邻,在物理上也相邻;

     而链表的各个元素在物理上可以是不相邻的

 

(3)因此,顺序表可以实现“随机访问”,而“链表”无法实现随机访问

 

 

二、无结构文件

    文件内部的数据就是一系列二进制流or字符流组成,又称“流式文件

    如:Windows操作系统中的.txt文件

 

 

三、有结构文件

1、定义

    由一组相似的记录组成,又称“记录式文件”

    每条记录由若干个数据项组成; 如:数据库表文件

    一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID)

    根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录and可变长记录两种

 

 

2、逻辑结构

(1)顺序文件

  Δ1、定义:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的or可变长的

             各个记录在物理上可以顺序存储or链式存储

 

  Δ2、分类:串结构 ---- 记录之间的顺序与关键字无关(通常根据存入事件排序)

             顺序结构 -- 记录之间的顺序按关键字顺序排列

 

 

 

 

(2)索引文件

     对于可变长记录文件,要找到第i个记录,必须先顺序第查找前i-1个记录,

     但是很多应用场景中又必须使用可变长记录,如何解决这个问题?

索引表本身是定长记录的顺序文件

因此可以快速找到第i个记录对应的索引项

 

可将关键字作为索引号内容

若按关键字顺序排列,则还可以支持按照关键字折半查找

 

每当要增加/删除一个记录时,需要对索引表进行修改

由于索引文件有很快的检索速度,

因此主要用于对信息处理的及时性要求比较高的场合

 

另外,可以用不同的数据项建立多个索引表

如:学生信息表中,可用关键字“学号”建立一张索引表,也可用“姓名”

这样就可以根据“姓名”快速地检索文件了

(Eg: SQL就支持根据某个数据项建立索引的功能)

 

 

(3)索引顺序文件

  Δ1、思考索引文件的缺点

       每个记录对应一个索引表项,因此索引表可能会很大

       比如:文件的每个记录平均只占8B,而每个索引表项占32个字节,那么索引表都要比文件内容本身大4

       倍,这样对存储空间的利用率就太低了

 

  Δ2、索引顺序文件是索引文件和顺序文件思想的结合

       索引顺序文件中,同样会为文件建立一张索引表,

       但不同的是:并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值