四、文件管理

四、文件管理

因内存容量有限,且不能长期保存,
故平时把要用到的大量程序和数据以文件形式存放在外存,需要时再随时将其调入内存。

操作系统中增加文件管理功能,即构成一个文件系统,
负责管理外存上的文件,向用户提供对文件的存取、共享和保护等手段。

方便用户(用户不用直接管理外存上的文件,不用熟悉外存特性,了解各种文件属性,以及它们在外存上的位置),
保证文件的安全性(多用户环境下保持数据的安全性和一致性),
有效提高系统资源利用率

文件的定义:一组有意义的信息的集合
文件的属性:文件名、标识符、类型、位置、大小、保护信息…
文件内部应该如何被组织起来(文件的逻辑结构)
文件之间应该如何被组织起来(目录结构)
操作系统应向上提供哪些功能(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. 按用途分
    (1)系统文件
    由系统软件构成的文件,大多只允许用户调用,不允许读,更不允许修改,有的不直接对用户开放
    (2)用户文件
    用户的源代码、目标文件、可执行文件或数据等所构成的文件。用户将文件委托给系统保管。
    (3)库文件
    标准子子例程及常用例程等构成的文件,允许用户调用,但不允许修改。
  2. 按文件中的数据形式分
    (1)源文件
    由源程序和数据构成
    (2)目标文件
    源程序经过编译,但尚未链接的目标代码构成的文件,属于二进制文件,后缀名“.obj”
    (3)可执行文件
  3. 按存取控制属性分
    (1)只执行文件
    (2)只读文件
    (3)读写文件
  4. 按组织形式和处理方式分
    (1)普通文件
    (2)目录文件
    由文件目录组成,用来管理和实现文件系统功能的系统文件,通过目录文件可对其他文件信息进行检索。目录文件由字符序列构成,对其可进行与普通文件一样的文件操作。
    (3)特殊文件

1.3文件系统模型

用户(程序)
文件系统模型↓↓↓↓
最高层文件系统接口向用户提供两种类型接口(1)命令接口(2)程序接口
中间层对对象操纵和管理的软件集合文件管理系统核心,实现大多功能:管理文件存储空间、文件目录、文件读和写,将文件逻辑地址转换成物理地址机制,对文件的共享和保护
最底层对象及其属性管理的对象:(1)文件(2)目录(3)磁盘/磁带存储空间

(1)文件:文件管理的直接对象
(2)目录:为了方便用户对文件存取和检索,配置目录,每个目录项包含文件名及该文件所在的物理地址(或指针)。对目录组织和管理是方便用户提高对文件存取速度的关键。
(3)磁盘/磁带存储空间:管理文件和目录占用的存储空间,提高外存利用率提高对文件的存取速度
(1)命令接口:指作为用户与文件系统交互的接口,用户通过键盘键入命令取得文件系统的服务
(2)程序接口:指作为用户程序与文件系统的接口,用户程序通过系统调用取得文件系统的服务

1.4文件操作

  1. 最基本的文件操作
    (1)创建文件
    创建新文件时,首先为新文件分配必要外存空间,并在文件系统的目录中为之创建一个目录项。
    目录项由新文件的文件名及其在外存的地址,用于对文件读/写的指针等属性。
    (2)删除文件
    删除时,应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占存储空间。
    (3)读文件
    读文件时,在相应系统调用中给出该文件名和应读入的内存目标地址,此时系统同样要查找目录,找到指定目录项,从中得到被读文件在外存中的位置
    (4)写文件
    写文件时,在相应系统调用中给出该文件名及该文件在内存中的(源)地址,系统同样要先查找目录,找到指定文件的目录项,再利用目录中的写指针进行写操作
    (5)截断文件
    一个文件内容需要全部更新时,
    方法1将此文件删除,再创建一个新文件
    方法2如果文件名及属性均无法改变,采用截断文件方法,将原文件长度设置为0,或者说放弃原有的文件内容
    (6)设置文件的读/写位置
    设置文件读/写指针的位置。以便每次读/写文件时,从所设置的位置开始操作,才能改顺序存取随机存取

  2. 文件的“打开”和“关闭”操作
    (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)。

  3. 其他文件操作
    文件操作的系统调用分类:
    (1)对文件属性操作,即允许用户直接设置和获得文件的属性
    如改变已存文件的文件名、
    改变文件的拥有者、
    改变对文件的访问权,
    以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权)
    (2)对目录操作
    创建一个目录,
    删除一个目录,
    改变当前目录和工作目录
    (3)实现文件共享的系统调用
    (4)对文件系统进行操作的系统调用
    利用基本操作加以组合来实现其他操作:
    文件拷贝操作,可利用两条基本操作实现,第一步利用创建文件的系统调用来创建一个新文件,第二步将原文件内容写入新文件

每个打开文件都有如下关联信息:

  • 文件指针。系统跟踪上次的读写位置作为当前文件位置的指针,这种指针对打开文件的某个进程来说是唯一的,因此必须与磁盘文件属性分开保存。
  • 文件打开计数。文件关闭时,操作系统必须重用其打开文件表条目,否则表内空间会不够用。因为多个进程可能打开同一个文件,所以系统在删除打开文件条目之前,必须等待最后一个进程关闭文件。计数器跟踪打开和关闭的数量,计数为0时,系统关闭文件,删除该条目。
  • 文件磁盘位置。绝大多数文件操作都要求系统修改文件数据。该信息保存在内存中,以免为每个操作都从磁盘中读取。
  • 访问权限。每个进程打开文件都需要有一个访问模式(创建、只读、读写、添加等)。该信息保存在进程的打开文件表中,以便操作系统能够允许或拒绝之后的I/O请求。

2.文件的逻辑结构/文件组织

这是从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构

文件的物理结构/存储结构

文件在外存上的存储组织形式,与存储介质的存储性能和采用的外存分配方式有关

文件是由一系列记录组成,文件系统设计关键,将这些记录构成一个文件的方法,将一个文件存储到外存上的方法

2.1文件逻辑结构类型

3.目录管理

(二)文件系统实现

1.文件系统层次结构
2.目录实现
3.文件实现

(三)磁盘组织与管理

1.磁盘的结构
2.磁盘调度算法
3.磁盘的管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值