写作目的:
学习Linux文件模型相关的知识。正文目录:
1.Linux的两大抽象2.文件类型3.文件描述符4.通用文件模型:简介4.1演示demo4.2相关要点:与VFS的关系5.通用文件模型:文件描述符和打开文件的关系5.1相关的内核数据结构5.2列举几种打开文件的情景1.Linux的两大抽象
文件是Linux系统中最基础最重要的抽象。Linux遵循一切皆文件的理念。很多交互操作是通过读写文件来完成,即使所涉及的对象看起来并非普通文件。
另外一大抽象是进程。如果说文件是Linux系统最重要的抽象概念,进程则仅次于文件。
进程相关的实现复杂且多变,而文件IO的实现则相对稳定很多,且更贴近我们的日常操作,所以以文件作为学习Linux内核的切入点是个更好的选择。
2.文件类型Linux系统的大多数文件是普通文件或目录,但是也有另外一些文件类型,具体包括如下几种:
普通文件(regularfile)。
最常用的文件类型,包含了某种形式的数据。至于这种数据是文本还是二进制数据,对于Linux内核而言并无区别。
文件中包含的字节可以是任意值,可以以任意方式进行组织。在系统层,除了字节流,Linux对文件结构没有特定要求。
对普通文件内容的解释由处理该文件的应用程序进行。
文件虽然是通过文件名访问,但文件本身其实并没有直接和文件名关联。相反地,与文件关联的是索引节点(inode,是indexnode缩写)。针对驻留于文件系统上的每个文件,文件系统都会为其分配一个inode。inode中会保存和文件相关的元数据,如文件修改时间戳、所有者、类型、长度以及文件数据的位置,但不含文件名,文件名由目录文件负责。
inode由inodenumber来标识,可以通过“ls–li”查看文件的inodenumber。
#ls-limini