linux实现文件共享的方式,Linux文件共享的实现方式

前两天跟老师去北京开了一个会议,好久没学习了,今天才回学校,其中的辛酸就不说了。来正文:

1、什么是文件共享

(1)、文件共享就是同一个文件(同一个文件指的是同一个inode,同一个pathname)被多个独立的读写体(几乎可以理解为多个文件描述符)去同时(一个打开尚未关闭的同时,另一个去操作)操作。

(2)、文件共享的意义有很多:例如我们可以通过文件共享来实现多线程同时操作同一个大文件,以减少文件读写时间,提升效率。

2、文件共享的3种实现方式

(1)、文件共享的核心就是怎么弄出来多个文件描述符指向同一个文件。

(2)、常见的有三种文件共享的情况:

第一种就是同一个进程中多次使用open打开同一个文件,多次使用open时的返回值不一样;(分别读/写)

第二种就是在不同进程中分别使用open打开同一个文件(这时候因为两个fd在不同的进程中,所以两个fd的数字可以相同也可以不同);(分别读/写)

第三种情况就是linux系统提供了dup和dup2两个API来让进程复制文件描述符。(接续读/写)

3、再论文件描述符

(1)、文件描述符的本质就是一个数字,这个数字本质上是进程表中文件描述符表的一个表项,进程通过文件描述符作为index去索引查表得到文件表指针,再间接访问得到这个文件对应的文件表。

(2)、文件描述符这个数字是open系统调用内部由操作系统自动分配的,操作系统分配这个fd时,也不是随意分配,也是遵照一定的规律的,我们现在就要研究这个规律。

(3)、操作系统规定,fd从0开始依次增加。fd也有最大限制的,在linux的早期版本中(0.11)fd最

你可能感兴趣的:(linux实现文件共享的方式)