文件是存贮在某种介质上的并具有文件名的一组有序信息的集合。
文件名格式如下:[<盘符>] <文件名> [.扩展名]。
文件系统是操作系统中以文件方式管理计算机软件资源的软件和被管理的文件及数据结构(如目录和索引表等)的集合。
文件在存储介质上的组织方式称为文件的存储结构或称文件的物理结构、物理文件。
为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的盘物理地址,这个数据结构称为文件控制块FCB,文件控制块的有序集合称为文件目录,即一个文件控制块FCB就是一个文件目录项。
FCB包含信息如下:
文件基本信息类
存取控制信息类
文件使用信息类
把文件存储到磁盘连续的物理盘块中所形成的文件称为顺序文件。
优点:管理简单,顺序存取速度快。
缺点:增删记录相当困难,磁盘存储空间的利用率不高,有外零头。
在将逻辑文件存储到外存上时,不要求为整个文件分配连续的空间,而是可以装入到离散的多个盘块中,只在每个盘块最后一个单元设置链接指针(这称为隐式链接) ,然后用链接指针将这些离散的盘块链接成一个队列,这样形成的物理文件称为链接文件。
优点:盘存储空间利用率高,文件增删改记录方便。
缺点:在随机存取某一个记录前需要用多次盘I/O操作读该记录前的文件信息以取得该记录的盘块号,才能存取该记录。
索引文件是实现非连续存储的另一种方法,系统为加快记录的检索过程,为每个文件建立了一张索引表,每个逻辑块在索引表中占有一个表项,登记存放该逻辑块的盘块号。
当索引表很大时,需要用多个盘块。管理有多个盘块的索引表有两种方法:
是将存放索引表的盘块用链接指针链接起来称为链接索引
链接索引可以顺序地读取索引表各索引表项,但读取后面的索引表项类同链接文件需要花费多次盘I/O操作。
是采用多级索引
索引表本身建立索引表,从而形成了两级索引,如所形成的两级索引表还不能存放在一个盘块中,则需要为二级索引表建索引表,而形成三级索引。
如:如果每个盘块的大小为4KB,每个盘块号大小占4B
索引文件优点:既适合顺序存取记录又适合按任意次序随意存取记录,也便于增删文件的记录,所以索引结构文件应用范围较广。
索引文件缺点:当文件很大时索引表很庞大,占用了许多盘空间,而在文件很小时,多级索引级别又不变,带来索引块的零头和存取速度减慢。
单级目录结构简单,能实现目录管理的基本功能–按名存取,但存在查找速度慢,不允许重名和不便于实现文件共享等缺点,因此它只适用于单用户环境。
为解决单级目录结构,在多道程序设计系统中常采用多级目录结构,MS-DOS和UNIX等操作系统都采用多级目录结构。这种目录结构像一棵倒置的有根树从树根向下,每一个节点是一个目录,最末一个结点是文件
重名问题:在多级目录中存取一个文件需要用文件全名,则使用文件名相同时而文件全名不同,从而解决了重名问题。
相对路径:进程对各文件的访问都相对于“工作目录”而设置路径,这称为相对路径名。
绝对路径:从根目录开始的路径名称为绝对路径名
文件共享:是指不同的用户使用不同的文件名来使用同一文件。
系统
首先利用用户提供的文件名,对文件目录进行查询,找出该文件的文件控制块FCB。
然后根据找到的FCB中所记录的文件物理地址,并根据文件物理组织方式找出文件的盘块号,
进而换算出文件在磁盘上的物理位置(柱面号、磁头号、扇区号),
最后启动磁盘驱动程序,将所需文件读入内存。
为了减轻盘I/O负担,采用把当前使用的文件目录表目复制到内存,建立内存的目录管理表。
文件系统提供的常用系统调用有“建立”(create)文件、“打开”(open)文件、“写”(write)文件、“读”(read)文件、“关闭”(close)文件、“删除”(delete)文件等。
建立文件(create)
当用户提出在某个路径或目录下建立文件时,系统首先检查在该目录下有否相同名的文件
打开文件(open)
“打开”命令的任务是:磁盘目录中找到该文件的FCB,拷贝到内存,建立内存的目录管理表。
读/写文件(read/write)
用户(或进程)要读写文件时,利用PCB中用户打开文件表的指针可以找到所需读/写的文件所的盘块
关闭文件(close)
将已修改的内存文件目录信息及时写回到磁盘目录中,并释放文件的内存目录表目空间供其它进程使用。
删除文件(delete)
根据用户提出的在某目录下的文件名,命令将该文件在目录文件中的表项和相应的索引节点内容删除
磁盘是常用的存储设备,它具有容量大,存取速度快,可以实现随机存取等优点,是现代操作系统的必需存储设备,也是实现虚拟存储器所必需的硬件。
磁盘物理组织
每个磁盘都是由盘片,磁道和扇区组成。
下面是几种常用的文件存储空间的管理方法
空闲表法属于连续分配方法,它为外存上所有空闲区建立一张空闲表。
磁盘上所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位形成了一个集合称为位示图,位示图用磁盘块存放,称为位图块。
例:操作系统盘块大小为1KB,每个位图块有8192位,每个位图块能管理多大空间?要管理大的磁盘空间就需要多个位图块,这就需增设位图索引块,每个位图块块号用4B记录,这样一个位图索引块可管理多大的空间?
解题步骤:
先用盘块大小aKB,每个位图块有bB(b*1024位),得出每个位图块管理a×bKB
的磁盘空间。
再用盘块大小aKB除以每个位图块块号所用aB记录,则可得一个位图索引块(盘块)中有n个(n=aKB/aB )
再用n个乘上每个位图块管理的空间aKB×bB×n=a×b×nMB,得到位图索引块可管理的空间。
解题:
位示图优点:位示图描述能力强,位示图较小,可以复制到内存,使查找既方便又快速。
空闲块链接法是将磁盘上所有空闲盘区链接在一个队列中,称为空闲块链。
空闲块链接法的优点是不需专用块存放管理信息,它的缺点是连续分配回收多块空闲块时需增加盘I/O操作。
影响文件安全性的主要因素:人为因素、系统因素、自然因素
为了确保文件系统的安全性,可针对上述原因而采取以下措施:
文件系统对文件的保护常采用存取控制方式进行,所谓文件的存取控制就是不同的用户对文件的访问规定不同的权限,以防止文件被未经文件主同意的用户访问。
存取控制矩阵
理论上存取控制方法可用存取控制矩阵,它是一个二维矩阵,一维列出计算机的全部用户,另一维列出系统中的全部文件,矩阵中每个元素Aij是表示第i个用户对第j个文件的存取权限。
存取控制表
一个改进的办法是按用户对文件的访问权力的差别对用户进行分类,由于某一文件往往只与少数几个用户有关,所以这种分类方法可使存取控制表大为简化。
用户权限表
改进存取控制矩阵的另一种方法是以用户或用户组为单位将用户可存取的文件各集中起来存入一表,这称为用户权限表。
end…