以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。
硬盘中的静态文件
文件平时以一种固定的形式存放在硬盘中,我们叫它静态文件。
一块硬盘中可以分为两大区域:一个是硬盘内容管理表,另一个是真正存储内容的区域。
操作系统访问硬盘时,先读取硬盘内容管理表,从中找到要访问的那个文件的扇区级别的信息,然后利用这个信息去查询真正存储内容的区域,最后得到想要的文件。
管理表以文件为单位记录了各个文件的各种信息。每一个文件对应一个结构体,这个结构体有很多成员,记录了此文件的一些信息,比如文件名、文件在硬盘上对应的扇区号、块号等等。我们一般把这个结构体叫做inode,即i节点。换句话说,每个文件对应一个i节点。
格式化硬盘时有两种方式:快速格式化和底层格式化。快速格式化非常快,就是因为快速格式化只是删除了硬盘中的硬盘内容管理表,真正存储的内容没有动。这种格式化的内容是有可能被找回的。
内存中被打开的文件
每个进程都有一个进程信息表,它记录着这个进程的所有信息。
进程信息表中有一个指针指向一个文件描述符表,它记录着当前进程打开的所有文件及其相关信息。
文件描述符表使用文件描述符(一个非负整数)来表征各个被打开的文件。通过文件描述符可以找到已经被打开的文件的管理结构体,我们一般把这个结构体叫做vnode,即v节点。它记录着一个被打开的文件的各种信息。
IO流的概念
读取与写入文件时,只能以字符为单位逐个进行。某个文件里的字符被挨个读取或写入时,这些字符就构成了一个字符流。
编程中提到“流”这个概念,一般都与IO相关,所以经常叫IO流。文件操作时就构成了一个IO流。