文件系统详解

文件类型

操作系统的基本文件类型有普通文件、目录文件、设备文件和链接文件。

  • 普通文件:最常见的文件。
  • 目录文件:目录文件中保存着该目录下其他文件的inode号和文件名等信息,目录文件中的每个目录项都是指向某个文件inode号的链接,删除文件名就等于删除与之对应的链接。
  • 设备文件:操作系统把各种设备也抽象成文件,便于管理,如鼠标,键盘等。
  • 链接文件:多个文件名指向同一索引节点(inode index)是存在的,这时就会出现链接文件。

文件操作

文件操作分为以下几种:创建文件,删除文件,读文件,写文件等。

  • 创建文件:在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项,目录项中应该记录新文件的文件名及其在外存的地址等属性。
  • 删除文件:当已不再需要某文件时,可将其从文件系统中删除,在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。
  • 读文件:读文件时,须在相应系统调用中给出文件名和应读入的内存目标地址。此时,系统要查找目录,找到指定目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件进行读/写。
  • 写文件:写文件时,须在相应系统调用中给出文件名和其在内存源地址。此时,系统要查找目录,找到指定目录项,从再利用目录中的写指针进行写操作。

文件系统对文件进行操作的过程:

  1. 先进入目录,目录中有相应的目录项。
  2. 目录项中有对应的文件名和inode号,根据文件名找到对应的inode号。
  3. 再根据inode号读取到文件的inode,分析是否符合inode中记录的权限。
  4. 如果符合权限,则可以读取到相应的data blocks。

文件系统如何存储数据

文件包括属性和内容两部分(当然,还包括文件名,不过文件名实质是其所属目录文件的内容,目录文件也有inode号)。其中属性信息放置于inode区(即元数据区)中,实际内容放置于data block区中,另外,还有一个superblock(超级块)会记录整个文件系统的整体信息。

inode

inode存放文件的属性信息(如文件类型、大小、权限等)和文件内容所在的block编号。inode是文件惟一标识,系统根据文件名先找到inode,并首先分析是否符合inode中记录的权限,符合后根据block编号找到数据块读取内容。

block(块)

block存放文件实际内容。每个block大小有1K,2K及4K三种,其大小也是在磁盘(或分区)格式化时就确定了。每个block内只能存放一个文件的内容。若文件内容大小大于单个block,则该文件会占用多个block;若占不满一个block,这个block中的剩余空间也将浪费。因此block大小的选取也很重要,若经常存储小文件,而block较大无疑会浪费很多空间;但block较小的话,大型文件会占用较多的block数,这样inode中也会记录更多的block编号,由此会降低系统读写性能。所以block大小的选取应根据实际情况权衡。
在这里插入图片描述

superblock

superblock存放此文件系统的整体信息,包括inode/block大小、inode/block总量、使用量、剩余量、文件系统格式等。一个文件系统仅有一个superblock,位于组0中,这个块很重要,因此通常还有一个备份位于其它组中,其大小一般为1K。

一个进程已经被挂载,可执行文件可以删除吗?

Linux系统你可以放心的删,因为引用计数,也就是说你把你能看到的文件删掉了,并不会影响已经打开此文件的进程对此文件的读写。但是,进程退出后,此文件的引用计数为0时,这个文件就真的被删除了。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值