文件系统笔记八、文件系统的性能
引言:在之前的两篇笔记文件系统笔记六、文件系统布局及数据存储、文件系统笔记七、文件目录、属性、共享、挂载的实现方式,介绍了设计一个文件系统需要考量的因素及相关实现。本篇笔记将介绍文件系统的性能及其保障机制。
一、访问控制能力
1.1、访问控制能力需求
我们在内存管理时讲过,多道编程一个重要课题就是进程之间的相互保护,即一个进程不能访问另一个进程的空间。也就是说,一个进程的数据不能被另外一个进程随意访问。这种进程地址空间保护可以通过段表、页表和动态地址翻译实现。但是把这个数据存放到磁盘后,动态地址翻译就无法保护这些数据了。那么这些存放在文件里面的数据就存在被任何人或程序修改的危险。这显然是不能容忍的。
对文件里面的数据进行保护,使得文件数据不能被任意访问是文件系统必须解决的一个问题,而文件系统解决这个问题的方法就是文件系统的访问控制(access control)。
在人类社会中,军事重地或者关键设施的保护通常有两种模式:第一种是在军事禁区设置哨兵,哨兵依据某种规则来确定某个人是否可以访问禁区;第二种办法是设置安全门,有权限访问的人都备有通过安全门的钥匙;这两类保护措施,哨兵是从被保护设施出发,访问权限在设施上;而钥匙是从用户角度来实施的,访问控制在用户身上。
1.2、主动控制:访问控制表
主动控制将保护措施构建在保护者身上,对于文件系统来说,我们为每个文件设置一个哨兵,这个哨兵对试图访问该文件的用户进行检查,看看其是否能够访问。这个检查的规则存放在一张表里面,这个表称为访问控制表。这个表存放在内核空间,对于每个具有访问权限的用户设置一个记录,该记录记载着用户的ID和具体的访问权限,如读、写、执行、复制等。