计算机与操作系统:文件系统

  应用程序可以将数据保存在RAM中做到快速的读写。但是RAM有两个缺点:一是空间过小,无法保存较大型的数据;二是进程结束后,内存中的数据也会被释放,无法做到数据持久化。如果应用有存储大量数据或数据持久化的需求,那么就需要使用磁盘(机械硬盘,光盘,固态硬盘等)。机械硬盘的结构很复杂包括盘片,柱面,磁道,扇区等概念(固态硬盘使用闪存技术),如果让我们每次读写磁盘都要自己维护这几个参数,那么无疑是让人头大的。操作系统将磁盘地址空间抽象为文件,我们不需要直接操作磁盘,只需要操作文件,而读写文件背后的磁盘持久化逻辑对我们来说就是透明的。文件是受操作系统管理的,有关文件的构造,命名,访问,使用,保护,实现和管理方法都是由操作系统设计的主要内容,从总体上看,把操作系统中管理文件的部分称为文件系统

文件命名

  文件是一种抽象机制,它提供了一种在磁盘上保存信息并方便以后读写的方法,这种方法可以使用户不必了解存储信息的方法,位置和实际磁盘工作方式等有关细节。

  文件的具体命名规则在各个系统中是不同的,不过所有的现代操作系统都允许1至8

个字母组成的字符串作为合法的文件名。通常文件名中也允许有数字和一些其它特殊字符,许多文件系统支持长达255个字符的文件名(windows 95/98使用的文件系统是FAT-16,windows 98对FAT-16进行了一些扩展,从而成为FAT-32。虽然FAT已经过时,但是大部分windows系统仍支持该文件系统。较新版本的操作系统已经拥有更先进的本地文件系统(NTFS))。

  许多操作系统都支持使用圆点(.)将文件名分为两部分,其中圆点后的部分称为文件扩展名。扩展名可以表示文件的一些类型信息等。在linux中,文件扩展名只是一种约定,操作系统不会强制约束它。但是在windows系统中,文件扩展名被赋予了含义,用户可以在操作系统中注册扩展名,并为该扩展名指定处理程序,当用户双击该扩展名文件时,对应的处理程序就会启动并处理该文件。

 

文件结构及文件类型

  文件可以有多种构造方式,下图为三种典型的构造方式。

 

  很多系统系统都支持多种文件类型,如普通文件,块特殊文件,字符特殊文件,目录等。普通文件是包含用户信息的文件,目录是管理文件系统结构的系统文件。普通文件一般分为ASCII文件和二进制文件。ASCII文件的优势就是可以显示和打印,还可以用任何文本编辑器进行编辑,相反打印出来的二进制文件是无法理解的。通常二进制文件有一定的内部结构,使用该文件的程序才了解这种结构。

  现代操作系统支持两种文件访问方式:顺序访问,随机访问(read操作时给出开始读文件的位置或用seek操作设置当前位置,然后从当前位置开始读文件)。

  文件都有文件名和数据,另外操作系统还会保存一些其它与文件相关的信息。这些附加信息称为文件属性或元数据。

   使用文件的目的是存储信息并方便以后的检索,对于存储和检索,文件系统提供了几个常用的系统调用:Create,Open,Close,Write,Read,Seek,Get Attribute,Set Attribute,Rename等。

目录

  文件系统通常提供目录和文件夹用于记录文件的位置。目录系统最简单的形式就是在一个目录下面包含所有文件,这也是目录系统早期的表现形式,但随着多用户模式和用户文件的增多,单目录结构俨然是无法满足需求的,层次目录系统应运而生。

 

  管理目录的常用系统调用:Create,Delete,Opendir,Closedir,Readdir,Rename,Link,Unlink等。

文件系统的实现

文件系统布局

  

 

 

  

 

posted @ 2022-05-10 23:37  唐磊(Jason)  阅读(218)  评论(0编辑  收藏  举报