考试大纲
四、文件管理
因内存容量有限,且不能长期保存,
故平时把要用到的大量程序和数据以文件形式存放在外存,需要时再随时将其调入内存。
操作系统中增加文件管理功能,即构成一个文件系统,
负责管理外存上的文件,向用户提供对文件的存取、共享和保护等手段。
方便用户(用户不用直接管理外存上的文件,不用熟悉外存特性,了解各种文件属性,以及它们在外存上的位置),
保证文件的安全性(多用户环境下保持数据的安全性和一致性),
有效提高系统资源利用率。
文件的定义:一组有意义的信息的集合
文件的属性:文件名、标识符、类型、位置、大小、保护信息…
文件内部应该如何被组织起来(文件的逻辑结构)
文件之间应该如何被组织起来(目录结构)
操作系统应向上提供哪些功能(create、delete、open、close、read、write系统调用)
文件应如何存放在外存中(文件的物理结构)
操作系统如何管理外存中的空闲块(存储空间的管理)
操作系统需要提供的其他文件管理功能:文件共享,文件保护
(一)文件系统基础
1.文件概念
2.文件的逻辑结构
顺序文件;索引文件;索引顺序文件。
3.目录结构
文件控制块和索引节点;单级目录结构和两级目录结构;树形目录结构;图形目录结构。
4.文件共享
5.文件保护
访问类型;访问控制。
1.文件和文件系统
现代OS,通过文件系统来组织和管理在计算机中所存储的大量程序和数据
文件系统的管理功能,通过把它所管理的程序和数据组成一系列文件的方法来实现
文件是指具有文件名的若干相关元素的集合,元素通常是记录。
记录是一组有意义的数据项的集合
文件系统数据组成成分,分为数据项、记录、文件三级
1.1文件
- 文件(文件系统中最大的数据单位,描述了一个对象集)
由创建者所定义的、具有文件名的一组相关元素的集合。
{文件的定义:一组有意义的信息的集合} - 记录
一组相关数据项的集合,用于描述一个对象在某方面的属性 - 数据项(文件系统中最低级的数据组织形式)
类型
(1)基本数据项:描述一个对象的某种属性的字符集,数据组织中可以命名的最小逻辑数据单位(原子数据/数据元素/字段)
(2)组合数据项(组项)若干基本数据项组成
文件分为有结构文件、无结构文件
(1)有结构文件:文件由若干个相关记录组成
(2)无结构文件:是一个字符流
文件名
文件必须要有文件名,通常由一串ASCII码,汉字构成
名字的长度因系统不同而异,有的系统规定8个字符,有的14个字符可用
用户利用文件名来访问文件
文件属性
文件具有的属性
(1)文件类型
(2)文件长度
文件的当前长度,长度单位可以是字节,字或者块,最大允许长度
(3)文件的物理位置
指针指示文件在哪个设备及在该设备哪个位置
(4)文件的建立时间
文件最后一次的修改时间
1.2文件类型
为了便于管理和控制文件而分
- 按用途分
(1)系统文件
由系统软件构成的文件,大多只允许用户调用,不允许读,更不允许修改,有的不直接对用户开放
(2)用户文件
用户的源代码、目标文件、可执行文件或数据等所构成的文件。用户将文件委托给系统保管。
(3)库文件
标准子子例程及常用例程等构成的文件,允许用户调用,但不允许修改。 - 按文件中的数据形式分
(1)源文件
由源程序和数据构成
(2)目标文件
源程序经过编译,但尚未链接的目标代码构成的文件,属于二进制文件,后缀名“.obj”
(3)可执行文件 - 按存取控制属性分
(1)只执行文件
(2)只读文件
(3)读写文件 - 按组织形式和处理方式分
(1)普通文件
(2)目录文件
由文件目录组成,用来管理和实现文件系统功能的系统文件,通过目录文件可对其他文件信息进行检索。目录文件由字符序列构成,对其可进行与普通文件一样的文件操作。
(3)特殊文件
1.3文件系统模型
用户(程序) | ||
---|---|---|
文件系统模型 | ↓↓↓↓ | |
最高层 | 文件系统接口 | 向用户提供两种类型接口(1)命令接口(2)程序接口 |
中间层 | 对对象操纵和管理的软件集合 | 文件管理系统核心,实现大多功能:管理文件存储空间、文件目录、文件读和写,将文件逻辑地址转换成物理地址机制,对文件的共享和保护 |
最底层 | 对象及其属性 | 管理的对象:(1)文件(2)目录(3)磁盘/磁带存储空间 |
(1)文件:文件管理的直接对象
(2)目录:为了方便用户对文件存取和检索,配置目录,每个目录项包含文件名及该文件所在的物理地址(或指针)。对目录组织和管理是方便用户和提高对文件存取速度的关键。
(3)磁盘/磁带存储空间:管理文件和目录占用的存储空间,提高外存利用率,提高对文件的存取速度
(1)命令接口:指作为用户与文件系统交互的接口,用户通过键盘键入命令取得文件系统的服务
(2)程序接口:指作为用户程序与文件系统的接口,用户程序通过系统调用取得文件系统的服务
1.4文件操作
-
最基本的文件操作
(1)创建文件
创建新文件时,首先为新文件分配必要外存空间,并在文件系统的目录中为之创建一个目录项。
目录项由新文件的文件名及其在外存的地址,用于对文件读/写的指针等属性。
(2)删除文件
删除时,应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占存储空间。
(3)读文件
读文件时,在相应系统调用中给出该文件名和应读入的内存目标地址,此时系统同样要查找目录,找到指定目录项,从中得到被读文件在外存中的位置
(4)写文件
写文件时,在相应系统调用中给出该文件名及该文件在内存中的(源)地址,系统同样要先查找目录,找到指定文件的目录项,再利用目录中的写指针进行写操作。
(5)截断文件
一个文件内容需要全部更新时,
方法1将此文件删除,再创建一个新文件
方法2如果文件名及属性均无法改变,采用截断文件方法,将原文件长度设置为0,或者说放弃原有的文件内容
(6)设置文件的读/写位置
设置文件读/写指针的位置。以便每次读/写文件时,从所设置的位置开始操作,才能改顺序存取为随机存取 -
文件的“打开”和“关闭”操作
(1)对文件的操作步骤大致两步:
1)通过检索文件目录来找到指定文件的属性及其在外存上的位置
2)对文件实施相应操作,读或写。
为了避免当对一个文件多次操作时而多次重复检索目录,OS引入“打开”这一文件系统调用 ,当用户第一次请求对某文件进行操作时,先利用open系统调用将文件打开。
(2)打开:系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(也称索引)返回给用户
(3)打开文件表,索引号:OS维护一个所有打开文件信息的表(打开文件表,open-file table)。当用户再要求对该文件操作时,可通过该表的一个索引号向系统提出操作请求,系统直接利用该索引号到打开文件表去查找,因此省略了搜索环节。
节省检索开销,提高对文件操作速度
(4)关闭:系统将把该文件从打开文件表中的表目上删除掉
当文件不再对该文件实施相应操作时,进程可以利用关闭系统调用关闭此文件,操作系统从打开文件表中删除此文件。
(5)open系统调用返回指针:大部分操作系统要求在文件使用之前就被显式地打开。操作open会根据文件名搜索目录,并将目录条目复制到打开文件表。若调用open的请求(创建、只读、读写、添加等)得到允许,则进程就可打开文件,而open通常返回一个指向打开文件表中的一个条目的指针。通过使用该指针(而非文件名)进行所有I/O操作,以简化步骤并节省资源。
注意,在open调用完成后,操作系统对该文件的任何操作都不再需要文件名,而只需要open调用返回的指针。
整个系统表包含进程相关信息,如文件在磁盘的位置、访问日期和大小。
(6)多进程打开一个文件:一个进程打开一个文件,系统打开文件表就会为打开的文件增加相应的条目。当另一个进程执行open时,只不过是在其进程打开表中增加一个条目,并指向整个系统表的相应条目。
(7)文件打开计数器及何时回收:系统打开文件表的每个文件时,还用一个文件打开计数器(Open Count),以记录多少进程打开了该文件。每个关闭操作close使count递减,当打开计数器为0时,表示该文件不再被使用,系统将回收分配给该文件的内存空间等资源。
(8)文件修改:若文件被修改过,则将文件写回外存,并将系统打开文件表中的相应条目删除,最后释放文件的文件控制块(File Control Block,FCB)。 -
其他文件操作
文件操作的系统调用分类:
(1)对文件属性操作,即允许用户直接设置和获得文件的属性
如改变已存文件的文件名、
改变文件的拥有者、
改变对文件的访问权,
以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权)
(2)对目录操作
创建一个目录,
删除一个目录,
改变当前目录和工作目录
(3)实现文件共享的系统调用
(4)对文件系统进行操作的系统调用
利用基本操作加以组合来实现其他操作:
文件拷贝操作,可利用两条基本操作实现,第一步利用创建文件的系统调用来创建一个新文件,第二步将原文件内容写入新文件
每个打开文件都有如下关联信息:
- 文件指针。系统跟踪上次的读写位置作为当前文件位置的指针,这种指针对打开文件的某个进程来说是唯一的,因此必须与磁盘文件属性分开保存。
- 文件打开计数。文件关闭时,操作系统必须重用其打开文件表条目,否则表内空间会不够用。因为多个进程可能打开同一个文件,所以系统在删除打开文件条目之前,必须等待最后一个进程关闭文件。计数器跟踪打开和关闭的数量,计数为0时,系统关闭文件,删除该条目。
- 文件磁盘位置。绝大多数文件操作都要求系统修改文件数据。该信息保存在内存中,以免为每个操作都从磁盘中读取。
- 访问权限。每个进程打开文件都需要有一个访问模式(创建、只读、读写、添加等)。该信息保存在进程的打开文件表中,以便操作系统能够允许或拒绝之后的I/O请求。
2.文件的逻辑结构/文件组织
这是从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构
文件的物理结构/存储结构
文件在外存上的存储组织形式,与存储介质的存储性能和采用的外存分配方式有关
文件是由一系列记录组成,文件系统设计关键,将这些记录构成一个文件的方法,将一个文件存储到外存上的方法
2.1文件逻辑结构类型
3.目录管理
(二)文件系统实现
1.文件系统层次结构
2.目录实现
3.文件实现
(三)磁盘组织与管理
1.磁盘的结构
2.磁盘调度算法
3.磁盘的管理