信息存储:把信息以一种单元的形式,也就是所谓的文件,存储在磁盘或者其他外部介质上。
文件时受操作系统管理的,操作系统中管理文件的部分称为文件系统。
从用户角度来看:
文件的命名
文件的结构
3种常见方式
无结构的字节序列:操作系统不关心文件内容是什么,操作系统见到的就是字节,任何含义由用户程序解释。linux,unix,windows系统采用这种方式
记录序列:文件是具有固定长度的记录序列,每个记录都有其内部结构。很少有通用操作系统使用。
树形:文件在这类结构中,由一颗树记录构成,每个记录不必具有同样的长度,记录的固定位置有一个键。这棵树按键进行排序。不知道什么操作系统使用。
文件类型
例如linux系统中的 普通文件、块设备文件、目录文件、字符设备文件等等。
文件存取,顺序、随机
文件属性,例如linux系统中的权限啥啥啥的
文件操作,例如creat ,read ,delete,等
目录:
一级目录:在一个目录中包含所有的文件。通用操作系统貌似很少用。
二级目录系统:为了避免不同用户为自己的文件选择相同名字的矛盾,为每个用户提供一个私有的目录。也很少用。
层次目录系统:也就是linux,windows用的目录系统。几乎现代操作系统都用这种方式。
路径名:绝对路径名、相对路径。
目录操作,例如mkdir,等。
从实现这角度来看:
实现者感兴趣的是文件、目录是怎么样存储的、磁盘空间是怎样管理的。
文件系统布局
文件系统存放在磁盘上。磁盘可以分为一个或多个分区,每个分区可以有一个独立的文件系统,例如ext2,ext3,ntfs等。
硬盘的0柱面、0磁头、1扇区称为主引导扇区(MBR)。
它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。
计算机被引导时,BIOS读入并执行MBR,MBR第一件事事确定活动分区,读入它的第一块,称为引导块,并执行。引导块中的程序装载该分区中的操作系统。
每个分区中都有一个引导块,不管他是否包含有操作系统。
文件的实现
a\ 连续分配。把每个文件作为连续的数据块存储在磁盘上面。实现简单、读性能高。碎片会很多。现代操作系统中,磁盘文件系统中很少用;CD_ROM,DVD等存储介质中采用连续分配。
b\链表分配。为每个文件构件磁盘块链表。每个块的第一个字节指向文件的下一个磁盘块。顺序读取块,随机读取慢,碎片问题减缓。
c\i节点,inode。linux、unix用的方法。每个文件对应有一个inode数据结构。
目录的实现
目录的主要功能是将文件名映射成定位文件所需的信息,还包括文件属性。
磁盘空间管理
存储n个字节的文件可以有两种策略:分配连续的磁盘空间,或者把文件分成多个连续的块。
几乎所有的文件系统都把文件分割成固定大小的块来存储,各个块之间不一定相邻。
1、块大小的选择:扇区、磁道、柱面。
太大、浪费空间;太小,每个文件由很多块组成,每一块都有寻道、旋转延迟时间。
2、记录空闲块,2种常见方法
第一种:采用磁盘块链表,每个块中记录多个空闲磁盘块号。
第二种:位图。如果我没有记错,ext2应该是用的这种。
文件系统的性能
高速缓存。
块提前读。
减少寻道时间。