操作系统 -- 文件

文件的属性

1:文件名,由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
2:标示符,一个系统内的各文件标示符唯一,对用户来说毫无可读性。因此标示符只是操作系统用于区分各个文件的一种内部名称。
3:类型,指明文件的类型
4:位置,文件的存放路径,在外存中的地址。
5:大小,指明文件大小
6:创建时间,上次修改时间。
7:文件所有者信息
8:保护信息,对文件进行保护的访问控制信息

文件的逻辑结构

在用户看来文件内部的数据应该是如何组织起来的。
在这里插入图片描述

顺序文件
在这里插入图片描述

索引文件
为文件建立一个索引表,每个记录对应一个表项,各记录不用保持顺序,方便增加/删除操作。

索引顺序文件
将记录分组,每组对应一个索引表项
检索记录时先顺序查索引表,找到分组,再顺序查找分组
当记录过多时,可建立多级索引表

文件目录

在这里插入图片描述

文件控制块(FCB)
实现了文件名和文件之间的映射。使用户可以实现“按名存取”。
可以实现对目录的搜素、创建文件、删除文件、显示文件、修改文件。
索引节点(FCB的改进)
在查找各级目录的过程中,只需要用到“文件名”这个信息,只有文件名出现匹配时,才需要读出文件的其他信息。因此可以考虑让目录“瘦身”来提升效率。

文件的物理结构

文件的数据怎样存放在外存(磁盘)中。
在这里插入图片描述

连续分配
连续分配方式要求每个文件在磁盘上占有一组连续的块。
优点:支持顺序访问和直接访问;连续分配的文件在顺序访问时速度最快
缺点:不方便文件拓展;存储空间利用率低,会产生磁盘碎片。

链接分配
链接分配采取离散分配方式,可以为文件分配离散的磁盘块

  • 隐式链接:

除文件的最后一个盘块外,每个盘块中都存在指向下一个盘块的指针。文件目录包括文件的第一块指针和最后一块指针。
只支持顺序访问,不支持随机访问,查找效率低。

  • 显式链接:

把用于链接文件各物理块的指针显式地存放在一张表中,即文件分配表。
索引分配
允许文件离散地分配在各个磁盘中,系统会为每一个文件建立一张索引表,索引表中记录了各个逻辑块对应的物理块。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。
① 链接方案:如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。但是若文件很大,索引表很长,就需要将很多个索引块链接起来。想要找到i号索引块,必须先依次读入0~i-1号索引块,这就导致磁盘I/O次数过多,查找效率低下。
② 多层索引:建立多层索引。使第一层索引块指向第二层索引块。还可根据文件大小的要求在建立第三层,第四层索引块。采用K层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要K+1次读磁盘操作。缺点是即使是小文件,访问一个数据块依然需要K+1次读磁盘。
③ 混合索引:多种索引方式的结合。例如,一个文件的顶级索引表中,即包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表),还包含两级间接索引。这对于小文件来说,访问一个数据块所需的读磁盘次数更少。

存储空间的管理

在这里插入图片描述

存储空间的划分:将物理磁盘划分为一个个文件卷(逻辑卷、逻辑盘等),例如C盘,D盘,E盘等。目录区包含文件目录。空闲表,位示图,超级块等用于文件管理的数据。

在这里插入图片描述

文件的操作

1:创建文件 – create系统调用
所需参数:

  • 所需外存空间大小
  • 文件存放路径
  • 文件名

调用行为:

  • 在外存中找到文件所属空间
  • 根据文件存放路径的信息找到该目录对应的目录文件

2:删除文件 – delete系统调用
所需参数:

  • 文件存放路径
  • 文件名

调用行为:

  • 根据文件存放路径找到对应的目录文件,从目录文件中找到文件名对应的目录项
  • 根据该目录项记录的文件在外存中的存放位置、文件大小等信息,回收文件占用的磁盘块。
  • 从目录表中删除文件对应的目录项

3:打开文件 – open系统调用
所需参数:

  • 文件存放路径
  • 文件名
  • 要对文件的操作类型

调用行为:

  • 根据文件存放路径找到对应的目录文件,从目录中找到文件名对应的目录项,并检查该用户是否有指定的操作权限。
  • 将目录项复制到内存中的“打开文件”中。并将对应表目的编号返回给用户,之后用户使用打开文件表的编号来指明要操作的文件。

打开计数器:记录此时有多少个进程打开了此文件。

4:关闭文件 – close系统调用
调用行为:

  • 将进程的打开文件表响应表项删除
  • 回收分配给该文件的内存空间等资源
  • 系统打开文件表的打开计数器count-1若count==0,则删除对应表项

5:读文件 – read系统调用
所需参数

  • 指明是哪个文件
  • 指明要读入多少数据
  • 指明读入的数据在内存中的什么位置

调用行为

  • 会从读指针指向外存中,将用户制定大小的数据读入永续指定的内存区域中。

6:写文件 – write系统调用
所需参数

  • 指明是那个文件
  • 指明要写入多少数据
  • 指明写回外存的数据在内存中的位置

调用行为

  • 会从用户指定的内存区域中,将制定大小的数据写回写指针指向的外存中。

文件共享

操作系统为用户提供了文件共享的功能,可以让多个用户共享地使用同一个文件
在这里插入图片描述

索引结点:是一种文件目录瘦身策略。由于检索文件时只需要用到文件名,因此可以将除了文件名之外的其他信息放到索引结点中。这样目录项就只需要包含文件名、索引结点指针。索引结点中设置一个链接技术变量count,用于表示链接到本索引结点上的用户目录项数。
符号链接:在一个Link型的文件中记录共享文件的存放路径(windows快捷方式)。操作系统根据路径一层层查找目录,最终找到共享文件,即使软链接指向的共享文件已经被删除,Link型文件依然存在,只是通过Link文件中的路径去查找共享文件会失败。由于软链接的方式访问共享文件时要查找多级目录,因此会有多次的磁盘I/O。导致软链接访问速度慢。

文件保护

保护文件数据安全
在这里插入图片描述

口令保护
为文件设置一个口令,用户请求访问该文件时必须提供口令。口令一般存放在文件对应的FCB或索引结点中。用户访问文件前需要先输入“口令”。操作系统会将用户提供的口令与FCB中存储的口令进行对比,如果争取,则允许用户访问该文件。

加密保护
使用密码虽文件加密,在访问文件时需要提供正确的密码才能对文件进行正确的解密。
例如 – 异或加密算法。
密码没有存在FCB中需要用户自己记住。正确的密码会得到正确的文件,错误的密码只会得到一群乱码。

访问控制
在每个文件的FCB中增加一个访问控制表,该表记录了各个用户可以对文件进行那些操作。

文件系统的层次结构

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上生花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值