1. 文件共享
1.1 文件共享是什么?
文件共享使多个用户(进程)共享同一份文件,系统中只需保留该文件的一份副本。如果系统不能提供共享功能,那么每个需要该文件的用户都要有各自的副本,这样会造成对存储空间的极大浪费。链接简单说实际上是一种文件共享的方式,链接分为硬链接和软链接:
- 硬链接就是多个指针指向一个索引节点,保证只要还有一个指针指向索引节点,索引节点就不能删除。
- 软链接就是把到达共享文件的路径记录起来,当要访问文件的时候,根据路径寻找文件。
1.2 基于索引节点的共享方式(硬链接)
在树形结构的目录中,当有两个或多个用户要共享一个子目录或文件时,必须将共享文件或子目录链接到两个或多个用户的目录中,才能方便地找到该文件。
在这种共享方式中引用索引结点(inode),即诸如文件的物理地址及其他的文件属性等信息,不再是放在目录项中,而是放在索引节点中。在文件目录中只设置文件名及指向相应索引结点的指针。
在索引结点中还应有一个链接计数count
,用于表示链接到本索引结点(亦即文件)上的用户目录项的数目。例如当count = 2
时,表示有两个目录项链接到本文件上,或者说是有两个用户共享此文件。反过来,删除一个文件名,就会使得 inode 节点中的count
减1。当这个值减到 0,表明没有用户使用该文件,系统将负责删除该文件。
1.3 利用符号链实现文件共享(软链接)
为使用户 B 能共享用户 A 的一个文件 F,可以由系统创建一个 LINK 类型的新文件,也取名为 F,并将文件 F 写入用户 B 的目录中,以实现用户 B 的目录与文件 F 的链接。在新文件中只包含被链接文件 F 的路径名。这样的链接方法被称为符号链接。新文件中的路径名则只被看作是符号链,当用户 B 要访问被链接的文件 F 且正要读 LINK 类新文件时,操作系统根据新文件中的路径名去读该文件,从而实现了用户 B 对文件 F 的共享。
在利用符号链方式实现文件共享时,只有文件的拥有者才拥有指向其索引结点的指针。而共享该文件的其他用户则只有该文件的路径名,并不拥有指向其索引结点的指针。
- 缺点:在符号链的共享方式中,当其他用户读共享文件时,需要根据文件路径名逐个地查找目录,直至找到该文件的索引结点。因此,每次访问时,都可能要多次地读盘,使得访问文件的开销变大并增加了启动磁盘的频率。此外,符号链的索引结点也要耗费一定的磁盘空间。
- 优点:网络共享只需提供该文件所在机器的网络地址以及该机器中的文件路径即可。