操作系统 文件共享

                                          操作系统 文件共享

文件共享应用:

文件共享是指当我们一个的文件被其他用户所访问,比如我们的windows操作系统,是多用户多任务的系统,允许

一台计算机注册多个用户来访问。比如windows7操作系统在开机的时候,有一个切换用户的按钮,当我们输入其他

用户的用户名和密码的时候,操作系统就会加载属于该用户的文件,包括其他用户声明的共享文件。这种情况并不

常见。文件共享最常用情况是用于文件传输ftp或者发生在服务器端,比如服务器的数据库需要被多个用户访问,但

是我们每个用户不一定都需要下载数据库的软件,这时候用户只需要用对应的文件名访问服务器端的数据库就ok。

文件共享实现:

1、绕道法:

在这种情况下需要访问共享文件都要从当前文件位置出发找到共享文件。如果当前目录下没有共享文件,就会回溯到

与共享文件交叉的文件下,再向下找到要访问的共享文件。具体过程可以按照下图理解:

这样查找共享文件的弊端还是比较大的,每次我们访问共享文件可能需要回溯多级目录,搜索速度还是比较慢的。

2、链接法:

有一个根目录用来记录用户的信息,所有用户的文件都在自己文件夹下。当有一个用户有共享文件的时候,其他

用户需要共享该文件的时候只需要把对应目录的指针指向共享文件的目录即可。如图所示:

3、基于索引节点的共享方式:

在这种情况下,文件的属性和文件的地址不再放在文件的目录中,而是存在索引中。文件目录中存放着文件名

和指向索引的指针,linux操作系统中把这种索引的结点称为Inode结点。在索引的结点中还有一个计数器,用来

统计文件被多少用户访问。

t

当count=1时候,创建文件的用户才能删除文件。否则不能删除文件。这是在这种共享文件系统下系统的规定,因

为如果建立共享文件的用户删除了共享文件,系统又在共享的位置建立了新的文件,这样其他用户在共享文件的时

候就会访问成了其他文件,失去了共享文件的意义。

假如用户A建立了文件,然后发现不能删除文件,因为创建的共享文件被其他用户所共享,用户来气了,直接删除

文件的目录文件,这时候便不再去理会,但是加入建立的文件是付费了,这时候这个文件可能还被其他用户使用,

这时候可能用户A不再访问文件的时候还需要付费。

这也是需要操作系统处理的,所以有了下面的共享文件方式。

4、利用符号链实现文件共享

当用户需要访问共享文件的时候,由系统生成一个链接的文件,用来指向共享文件的目录。其他用户根据这个

链接文件来访问共享文件。这时候如果文件所有者删除了文件或者修改了文件,就需要其他用户重新生成链接

文件。原来的链接就会失效。

5、基本文件目录

可以看到wang用户的符号目录中的tt.c指向了指向了用户zhang的b.c文件。此时用户zhang删除了6号对应的b.c

之后。用户王再去访问的时候就会发现id为6的地址反发生了变化,就会重新更新tt.c对应的id。而且这种方式检索

不仅效率高,而且占用的内存小。

  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用open()系统调用打开文件时,操作系统会分配一个文件描述符并返回给应用程序。文件描述符是一个整数,它用于标识已经打开的文件。此后,应用程序可以使用该文件描述符来访问该文件。 当一个进程打开一个文件时,操作系统会在内核中为该文件创建一个文件表项,并将该文件表项与该进程的文件描述符相绑定。文件表项包含有关该文件的所有信息,例如文件的当前位置,文件权限,文件状态等。 当多个进程想要访问同一个文件时,系统会为每个进程分配一个独立的文件描述符,但它们会共享相同的文件表项。这意味着每个进程都可以在文件中独立进行读写操作,而不影响其他进程的读写操作。 系统实现多个用户对同一个文件的访问和操作的方式是使用文件锁机制。当一个进程对文件进行写操作时,系统会将该文件的写锁定,并在文件表项中记录该锁定。其他进程可以请求读取文件或者写入文件,但是任何试图写入文件的请求都会被阻塞,直到原始进程释放文件的写锁定。 同样的,当一个进程对文件进行读操作时,系统会将该文件的读锁定,并在文件表项中记录该锁定。其他进程可以请求读取文件,但是任何试图写入文件的请求都会被阻塞,直到所有的读锁定都被释放。 这种方式可以保证多个用户对同一个文件的安全访问和操作。然而,在处理锁定时,需要小心,因为如果一个进程持有写锁定并试图获取读锁定或者另一个写锁定,那么会发生死锁。因此,系统需要实现一些算法来避免这种情况的发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值