文件管理
一、文件系统基础
1.1 文件的概念
- 文件的定义
文件是以计算机硬盘为载体在计算机上的信息集合。文件有文本文档、图片、程序等形式。计算机以进程为基本单位来调度和分配资源,而用户在输入输出时以文件为基本单位。文件供信息的保存、访问、修改等,也就是维护文件,这就需要提供一个文件管理系统。
自底向上定义;
1)数据项,有基本数据项和组合数据项。可命名的最小逻辑单位,即原子数据,如:姓名。这种为基本数据项。而基本数据项的组合就是组合数据项。
2)记录,是一组相关的数据项集合,如:一个学生的报考信息,考生姓名、准考证号、出生日期等。
3)文件,创建者所定义的一组相关信息的集合。分为有结构文件,如某校所有考生的信息。第二种为无结构文件,也称流式文件,无结构温江被视为一个字符流,比如二进制文件或者字符文件。
注:文件可以是数字、字母、二进制代码,基本访问单元可以是字节、行或记录。文件可以长期存储在硬盘或其它二级存储器中,供需要的进程或用户访问。
- 文件的属性
1)名称,文件名称唯一,以容易读取的形式保存。
2)标识符,标识文件的唯一标签,对人不可读的一种内部名称。
3)类型,支持不同类型的文件系统使用
4)位置,指向设备和设备上文件的指针。
5)大小
6)保护,对文件进行保护的访问控制信息。
7)时间、日期和用户标识
- 文件的基本操作
1)创建文件,先为文件找空间,再为文件创建条目,条目中包含了文件名称和位置等信息。
2)写文件,搜索文件位置,维护一个写指针。
3)读文件,搜索文件位置,维护一个读指针,读写使用同一指针来节省空间。
4)文件重定位(文件寻址),按某条件搜索条目。
5)删除文件,找目录,使之为空项,然后回收该文件所占用的存储空间。
6)截断文件,允许文件所有属性不变,并删除文件内容,将其长度设为0并释放空间。
注:这6种是基本操作,其它操作可以通过基本操作的组合。
- 文件打开与关闭
因为许多文件操作都涉及搜索文件目录,所以系统要求在首次打开文件时,使用系统调用open将文件的属性从外存复制到内存的打开文件表的一项目录中,并将这个目录项的编号返回给用户。当文件不再使用时,再将其关闭。open通常返回一个指向打开文件表中的一个条目的指针。
每个打开文件都有如下关联信息
1)文件指针,读写的位置。
2)文件打开次数,要等打开次数减为0才能关闭。
3)文件磁盘位置,一个文件中的信息可能被很多进程共享,此时每个进程不用都去磁盘里读取。
4)访问权限,每一个进程对文件都有一个访问模式(创建、只读、读写、添加等)
1.2 文件的逻辑结构
- 无结构文件(流式文件)
有顺序的、索引的、索引顺序文件以及直接文件和散列文件
1.3 文件共享
- 基于索引节点的共享方式(硬链接)
- 利用符号链实现文件共享(软链接)
另一个要共享该文件的进程创建一个文件,文件里有指向共享文件的链接。
二、文件系统实现
2.1 文件系统层次结构
2.2 目录实现
1)线性列表
2)哈希表
2.3 文件实现
- 文件分配方式
1)连续分配
2)链接分配
3)索引分配
- 文件存储空间管理
1)文件存储空间划分与初始化
2)文件存储器空间管理
a)空闲表法
b)空闲链表法
把空闲块拉成一个链表
c)位图示意法
d)成组链接法
三、磁盘组织与管理
3.1 磁盘的结构
3.2 磁盘调度算法
一次磁盘的读写操作的时间由寻道时间、延迟时间、传输时间决定。
目前常用的磁盘调度算法有以下几种
1)先来先服务(First Come First Served,FCFS)算法
2)最短寻找时间优先
3)扫描(SCAN)算法(电梯调度算法)
4)循环扫描(Circular SCAN,C-SCAN)算法
5)LOOK磁盘调度算法
不需要到末尾就可以转向
6)C-LOOK磁盘调度算法
3.3 磁盘的管理
- 磁盘初始化
在磁盘能存储数据之前,它必须分成扇区以便磁盘控制器能进行读和写操作,为每个扇区采用特别的数据结构。每个扇区的数据结构通常由头、数据区域和尾部组成。头部和尾部包含了一些磁盘控制器所使用信息。- 引导块
操作系统通过一个初始化程序–自举程序来将自己装入内存,并设置PC寄存器的指针位置,分别运行该程序和OS内核程序。
为了避免自举程序的扩展而影响ROM,将自举程序的一部分放入ROM,在运行过程中再将其它部分装入内存。- 坏块
一些磁盘在物理上永久性的坏掉,而OS并不能完成修理,OS可以用备用块来逻辑替代坏块,或者将坏块链接成一张磁盘坏块链表。该表在出厂前分扇区的时候就已初始化。