某天晚上,我睡觉的时候,突然想起来好像去三星面试的时候,面试官有问到关于文件系统的问题。于是想乘着睡觉前的时间,思考下关于文件系统的知识。突然间发现自己突然好像把文件系统的知识忘的差不多了。于是这两天把关于文件系统的知识再看了下,同时写下这篇文章已做记录。
文件系统,或者文件管理子系统,是操作系统的重组成部分,它处理文件结构、文件操纵和文件保护。
想了解文件系统,先理解以下一些概念。
1.文件和文件名
在linux中,文件是一种线性的字节流。文件系统提供一个存储的用户接口,透明地操纵来自外部设备的物理数据。linux中的文件有很多属性,文件名就是其中之一。文件名可能含有文件的扩展名,扩展名是用点好添加到主文件名之后的附加名。这个扩展为用户空间的程序提供了辨别文件内容的附加方式。
2.文件类型
linux支持多种文件类型,包括普通文件、目录文件、链接文件、设备文件和管道文件。
普通文件:二进制文件和ASCII文件。
设备文件:是对I/O设备的表示。
管道文件:进程间通信的方式。
3.文件的属性
除了文件名、文件类型和文件的数据外,文件还有很多的属性。操作系统把附加信息和每个文件相关联。其它的属性比如说用户的类型,用户的许可权限,文件大小,创建的大小和最后一次访问时间。
4.目录和路径名
目录是用来维护文件系统层次的文件。目录记录它所含的文件,它之下的所有目录以及和它相关的信息。
绝对路径和相对路径。把文件系统包含进树结构后,仅仅依靠文件名是不足以直接查找文件的。我们必须知道文件在树中的具体位置才能找到它。文件的路径名描述了文件的位置。
比如说linux文件位于/usr/src/linux
文件的绝对路径名:/usr/src/linux
文件的相对文件名:工作目录:/usr 路径名/src/linux
关于目录还有一个知识点就是:.代表当前目录,..代表上一个目录也就是现在目录的父目录。
5.文件的操作
文件的操作包括系统允许对文件的所有操作,包括文件的创建和销毁,打开和关闭,读和写,还有就是属性的修改。文件系统提供系统调用作为完成这些操作的接口,这些系统调用被放入封装函数中,用户空间的程序可经由链接库来访问这些封装的函数。
6.文件描述符
文件描述符是系统用来识别打开文件的整型数据。每个进程含有一组文件描述符。默认打开文件包括标准输入(文件描述符0),标准输出(文件描述符1),和标准错误输出(文件描述符2)。
7.性能
文件系统具有各种提高系统性能的方法。一种方法是通过在内核内部维护内部结构来达到访问节点对应的给定路径名。另一种就是页缓冲。
8.磁盘的结构