1、系统将所有设备都看作文件,包括网络,硬盘等,对他们的操作就是通过文件描述符对文件进行读写的操作
2、文件分为普通文件、套接字(通过网络与其他进程通信的文件)和目录(包含其他文件的信息)三种
3、内核用三个相关的数据结构来表示打开的文件:
- 描述符表:每个独立的进程1张,表项由进程打开的文件描述符来索引,每个打开的表项指向一打开的文件表;
- 文件表:包括打开文件位置,引用数量,以及一个指向元数据的v-node指针
- v-node表:包含stat结构的大部分信息;
4、所以共享文件就是不同的描述符指向同一个文件表;重定位就是改变文件描述符指向的打开文件表
5、Unix IO:在最底层实现的一些IO方法,适用于读取文件元信息,其中的方法都是异步信号安全(async-signal-safe)的,也就是说,可以在信号处理器中调用,更适合于网络应用