4.1.8文件共享
知识总览
基于索引节点的共享方式(硬链接):
让不同用户的文件目录项指向同一个文件的索引节点
用户1创建文件1,并让文件目录项aaa指向了文件1,这个文件对应了一个索引节点,这个索引节点 包含了文件的物理地址和文件的其他属性信息+链接计数变量count(用来记录有几个用户共享了这个文件)
文件1共享前
链接计数变量count=1
文件1共享后
有另外一个用户2要使用文件1,文件1被共享,则会在另外用户的文件目录)新建一个目录项(该用户的文件目录项可以不用叫aaa)指向aaa文件,然后链接计数变量count值+1则count=2
某个用户删除文件1:
因为文件1是共享文件,所以某个用户删除的只是该用户文件下的文件目录项,然后该共享文件的索引节点中的链接计数变量Count-1,即count=1,此时count>0,证明该文件仍被其他用户使用,则不能直接删除该文件数据,当count=0时,会删除该文件数据+索引节点数据
基于符号链的共享方式(软连接):
新用户3共享一个文件1时,并不是直接将自己的文件目录项指向该共享文件1,而是通过建立一个link类型的文件2,该link类型的文件保存了共享文件的1的保存路径,因为已经有了用户1和用户2直接指向了共享文件aaa,所以该link类型的文件保存的路径可以是用户1/aaa目录项/文件1,或者用户2/bbb目录项/文件1,因为通过这俩路径都能找到aaa文件,然后用户3建立一个文件目录项指向link类型文件2,在用户3访问ccc目录项时,操作系统会判断ccc指向的文件属于link类型的文件,然后会根据link文件保存的aaa文件路径找到aaa表项,进而找到文件1索引节点,进而问文件1
文件1被删除:
假如用户1和用户2不再共享使用文件1,则文件1中的链接计数count=0,即文件1会被删除,此时用户3中的link文件依然存在,即真实共享文件的删除和link文件是否被删除无关,但是此时用户3再去通过link文件ccc访问文件1会报错 ,如下图所示QQ的.exe程序被删除后,再打开QQ的快捷方式会报错找不到文件