文件共享
- 注意:多个用户共享同一个文件,意味着系统中只有“一份”文件数据,并且只要某个用户修改了文件的数据,其他用户也可以看到文件的变化
基于索引结点的共享方式(硬链接)
- 知识回顾:索引结点,是一种文件目录瘦身策略,由于检索文件时只需要用到文件名,因此可以讲出了文件名之外的其他信息全部放到索引结点当中
- 索引结点中设置一个链接计数器count,用于表示链接到本索引结点上的用户目录数目
- 指向同一索引结点的文件名可以不同
- 若某用户要删除该文件,则只是要把用户目录中与该文件对应的目录项删除,且索引结点的count减1,(count>0,说明还有用户要使用该文件,暂时不能删除,否则会使指针悬空)
基于符号链的共享方式 (软链接)
- 根据源文件1,创建一个link型文件ccc。其中记录了文件1的存放路径“c:/user1/aaa”——快捷方式
- 当user3访问文件ccc时,首先操作系统判断文件ccc是一个link型的文件,故会根据其内容中的路径查找目录,最终找到user1的目录表中的aaa表项
- 删除文件:当user1、user2删除文件1时,文件1和他的索引结点都没了,但是文件2还在,只是通过文件2中的内容找不到文件1了(查找失败,到不到对应的目录项)
- 由于用软链接的方式共享文件时,需要根据link文件内容,一层层查询多级目录,会有多次磁盘I/O,因此用软链接 速度会比较慢
文件保护
口令保护
- 为文件设置一个“口令”(如:abc11223),用户请求访问该文件时必须要提供“口令”
- 口令一般存放在文件对应的FCB或索引结点中。比对用户和保存的口令是否一致
- 性能
- 优点:保存口令的开销不大,验证口令的时间开销也很小
- 缺点:正确的口令存放在系统内部,不够安全
加密保护
- 使用某个密码为文件进行加密,在访问时需要提供正确的密码才能对文件进行正确的解密
- 性能
- 优点:保密性强,不需要在系统中存储密码
- 缺点:编码/译码,或者说加密/解密要花费一定时间
访问控制
- 在每个文件的FCB(索引结点)中增加一个访问控制表ACL,该表中记 录了各个用户(或各组用户)可以对该文件执行哪些操作
- 对文件的访问类型可分为:读/写/执行/删除等
- 如果对某个目录进行了访问权限的控制,那也要对目录下所有的文件进行相同的访问权限控制
- 性能
- 优点:实现灵活,可以实现复杂的文件保护功能(对操作进行分类,不同的用户对文件可以做不同的操作,之前的方法,只要口令密码正确,就能对文件进行所有操作,并不灵活)
文件系统层次结构
- 用户接口:(文件基本操作)文件系统需要向上层的用户提供一些简单易用的功能接口,这层就是用于处理一些用户发出的系统调用请求(read、write、open等)
- 文件目录系统:(文件目录)用户时通过文件路径来访问文件的,因此这一层时通过用户提供的文件路径来找到相应的FCB或索引结点。所有和目录、目录项相关的管理工作都在本层完成,如:管理活跃的文件目录表、管理打开文件表
- 存取控制模块:(文件保护)为了保证文件数据的安全,还需要验证用户是否有访问权限,这一层主要完成文件保护
- 逻辑文件系统与文件信息缓冲区:(文件逻辑结构)用户指明想要访问文件记录号,这一层需要将记录号转换为相应的逻辑地址
- 物理文件系统:(文件物理结构)这一层把上一层提供的文件逻辑地址转换为实际的物理地址
- 辅助分配模块:(文件存储空间管理)负责文件存储空间的管理,即负责分配和回收存储空间
- 设备管理模块:(磁盘管理)直接与硬件交互负责和硬件直接相关的一些管理工作,如分配设备、分配设备缓冲区、磁盘调度、启动设备、释放设备等等
- 举例辅助记忆:
- Eg:假设某用户请求删除文件“d:/工作目录/学生信息.xlsx”最后的100条记录
- 用户需要通过操作系统提供的接口发出向上请求——用户接口
- 由于用户提供的是文件存放路径,因此需要系统一层层查找目录,找到对应目录项——文件目录系统
- 不同用户对文件有不同的操作权限,因此为了保护文件安全,需要检查用户是否有访问权限——存取控制模块(存取控制验证层)
- 验证了用户的访问权限后,需要把用户提供的“记录号”转变为逻辑地址——逻辑文件系统与文件信息缓冲区
- 知道了目标记录对应的逻辑地址后,还需要转换成实际物理地址——文件物理系统
- 要删除这条记录,必定要对磁盘设备发出请求——设备管理程序模块
- 删除这些记录后,会有一些空闲盘块,因此要将这些盘块回收——辅助分配模块