文件系统

文件系统


文件是进程创建的信息逻辑单元,是对磁盘的建模。文件受操作系统管理,包括文件的构造、命名、访问、使用、保护、实现和管理。从总体上看,操作系统中处理文件的部分称为文件系统(file system)。

1 文件

1.1 文件命名

文件是一种抽象机制,它提供了一种在磁盘上保存信息而且方便以后读取的方法。使用户不必了解相关细节。许多操作系统支持文件名用圆点 . 分为两部分,圆点后的部分称为文件扩展名(file extension),通常表示文件的一些信息。在UNIX中,文件甚至可以包含两个或更多的扩展名,但文件扩展名不是必须的。

1.2 文件结构

文件可以有多种构造方式,常用的三种文件模型为:字节序列(UNIX和Windows)、记录序列、树。

1.3 文件类型

操作系统支持多种文件类型。普通文件(regular file)是包含用户信息的文件。目录(directory)是管理文件系统结构的系统文件。UNIX中还有字符特殊文件(character special file)用于串行I/O设备。块特殊文件(block special file)用于磁盘类文件。
普通文件一般分为ASCII文件和二进制文件。

1.4 文件访问

顺序访问:进程在系统中可从头按顺序读取文件的全部字节或记录,但不能跳过一些内容。
随机访问文件:能够以任何次序读取其中字节或记录的文件。
指示从何处开始读取文件:每次read操作都给出开始读文件的位置。用一个seek操作设置当前位置。

1.5 文件属性

除文件名和数据外,其他与文件相关的附加信息称为文件属性(attribute)或元数据(metadata)。
常用文件属性:

属性含义属性含义
保护隐藏标志
口令系统标志
创建者加锁标志
所有者创建时间
只读标志最后存取时间
当前大小最后修改时间
1.6 文件操作

create:
delete:
open:
close:
read:
write:
seek:

2 目录

文件系统通常用目录或文件夹记录文件的位置。

2.1 一级目录系统

目录系统的最简单形式是在一个目录中包含所有的文件,有时称为根目录。

2.2 层次目录系统

层次结构(目录树)用很多目录把文件以自然方式分组,用户可以创建任意数量的子目录。几乎所有现代文件系统都用这个方式组织。

2.3 路径名

用目录树组织文件系统时,需要某种方法指明文件名。一种是每个文件都赋予一个绝对路径名(absolute path name),由从根目录到文件的路径组成。一种是使用相对路径名(relative path name),它是相对于工作目录(当前目录)的。
支持层次目录结构的大多数系统在每个目录中有两个特殊的目录项 . 和 … ,常读作 dot 和 dotdot。dot指当前目录,dotdot指其父目录(根目录中例外)。

2.4 目录操作

create:
delete:
opendir:
closedir:
readdir:
rename:
link:
unlink:
符号链接:一个文件名指向命名另一个文件的一个小文件。它能跨越磁盘的界限。

3 文件系统的实现

3.1 文件系统布局

文件系统存放在磁盘上,多个磁盘划分为一个或多个分区,每个分区中有一个独立的文件系统。磁盘的0号扇区称为主引导记录(Master Boot Record,MBR),用来引导计算机。

3.2 文件的实现

连续分配:把每个文件作为一连串连续数据块存储在磁盘上。缺点是随着时间的推移,磁盘会变得零碎。主要用于CD-ROM、DVD、蓝光光盘等一次性写光学介质。
链表分配:为每个文件构造磁盘块链表。每个块的第一个字作为指向下一个块的指针,块的其他部分存放数据。
采用内存中的表进行链表分配:取出每个磁盘块的指针字,把它们放在内存的一个表中,这样的表称为文件分配表(File Allocation Table,FAT)。缺点是必须把整个表存放在内存中,不能较好地扩展并应用于大型磁盘中。
i节点(index-node):列出了文件属性和文件块的磁盘地址。这种机制的优势在于:只有在对应文件打开时,其i节点才在内存中。i节点机制需要在内存中有一个数组,其大小正比可能要同时打开的最大文件个数,与磁盘容量无关。

3.3 目录的实现

打开文件时,操作系统利用用户给出的路径名找到对应目录项,目录项中提供了查找文件磁盘块所需要的信息。因此,目录系统的主要功能是把ASCII文件名映射成定位文件数据所需的信息。
很多系统把文件属性直接存放在目录项中。对于采用i节点的系统,则将文件属性存放在i节点中会更好。

3.4 共享文件

共享文件问题是:
二是通过让系统建立一个类型为LINK的新文件,并把该文件放在B的目录下,使得B与C的一个文件存在链接。新文件中只包含了它所链接的文件的路径名。这一方法称为符号链接(symbolic linking)。

3.5 日志结构文件系统
3.6 日志文件系统
3.7 虚拟文件系统

在同一个操作系统下,会使用很多不同的文件系统。虚拟文件系统(virtual file system,VFS)概念尝试将多种文件系统同一成一个有序的结构。

4 文件系统管理和优化

4.4 文件系统性能

访问磁盘比访问内存慢得多。故文件系统采用了各种优化措施以改善性能。
高速缓存:最常用的减少磁盘访问次数技术是块高速缓存(block cache)或缓冲区高速缓存(buffer cache)。
块提前读:在需要用到块之前,试图提前将其写入高速缓存。
减少磁盘臂运动:把有可能顺序访问的块放在一起,最好是在同一个柱面上,从而减少磁盘臂的移动次数。

4.5 磁盘碎片整理

5 文件系统实例

5.1 FAT

FAT文件系统有FAT-12、FAT-16和FAT-32三个版本,这取决于磁盘地址包含多少二进制位。FAT16支持的分区最大为2GB。FAT32可以支持的磁盘大小达到32G。广泛用于嵌入式系统、数码相机、MP3播放器等。

5.2 NTFS

NTFS文件系统是一个基于安全性的文件系统,它是建立在保护文件和目录数据基础上,同时照顾节省存储资源、减少磁盘占用量的一种先进的文件系统。主要特点为:

  • 可以支持的分区大小可达2TB。
  • 是一个可恢复的文件系统,使用日志文件和检查点信息自动恢复文件系统的一致性。
  • 支持对分区、文件夹和文件的压缩。
  • 采用了更小的簇,可以更有效率地管理磁盘空间。
  • 可以为共享资源、文件夹以及文件设置访问许可权限。
5.3 EXT

Ext2是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好。
Ext3是一种日志式文件系统,是对ext2系统的扩展,兼容ext2。
Ext4是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,可以提供更佳的性能和可靠性。

5.4 CD-ROM文件系统

此文件系统是为一次性写介质设计的。
ISO 9660文件系统:现在市场上所有的CD-ROM都支持这个标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值