美文网首页程序员
linux 文件在磁盘上的表示

linux 文件在磁盘上的表示

作者: 陈伟志 | 来源:发表于2016-06-29 15:44 被阅读0次

基本构成

![Uploading 6144754_778752.jpg . . .]

分区就是把磁盘像比萨饼一样切成大小一样的扇形, 当然分区大小不一样扇形的大小也就不一样
上下一串盘片中,相同半径的磁道所组成的一个圆柱型的环壁,就称为柱面
在柱面组中, 比较重要的两个结构是:i节点和数据块

i节点和数据块

6144754.jpg

数据块集合是由大小固定的数据块组成, 在很多系统中数据块的大小为4K
以4K为例, 如果一个文件的大小是12K,那么它会占用3个数据块
读取三个数据块就可以知道文件的内容, 可是我们要如何知道这三个数据块的位置?
如果三个数据块不是连在一起而是东一块西一块又该如何?
i节点的作用就是记录文件的数据块数量和数据块在磁盘上的位置的
不仅如此,i节点还包含文件的其它属性信息,文件属性struct stat的内容便是来自于i节点

读取文件内容

文件读取: 当我们打开一个文件读取时, 系统找到文件名对应的i节点, 然后通过i节点找到数据块, 再把文件内容拼凑出来
文件夹读取: 就是读取一系列目录项(dirent), 每个目录项由两部分组成: a.文件或文件夹的名称 b.该文件名对应的i节点

链接

引用计数: 当有很多指针都需要访问同一块内存的数据时, 我们记下来当前在访问的指针总数, 来一个就把总数加1, 当有指针调用free操作时, 我们不释放这块内存, 只是把刚刚记下的总数减一, 直到最后一个指针调用free时才真正把内存释放掉
硬链接: 引用计数在磁盘文件上同样适应, 那个总数保存i节点中. 对一个已存在的文件执行link操作, 生成一个新的文件, 新旧文件都指向同一个i节点, 删除新旧文件中的一个只是把i节点中的链接总数减一, 并不会删除数据块.

软链接: 与硬链接相对. 像windows系统中的快捷方式, 不会增加链接总数, 依赖于原先的旧文件

如果i节点中硬链接总数减为0时, 就会释放对应的数据块, 但数据块内容不会被立即擦除, 这些数据块原先被i节点保护不会被系统随意征用, 现在可以被系统重新分配给其它程序使用, 在未重新分配给其它程序写入内容之前, 我们还是可以通过技术恢复数据块内容的.

文件的复制和删除

复制: 在不跨分区的情况下, 文件复制只是多了一个别名, 然后对应的i节点链接总数加1.
删除: 对应的i节点链接总数减1, 如果是最后一个链接就释放数据块.

相关文章

  • linux 文件在磁盘上的表示

    基本构成 分区就是把磁盘像比萨饼一样切成大小一样的扇形, 当然分区大小不一样扇形的大小也就不一样上下一串盘片中,相...

  • Linux命令总结十五(文件系统分析)

    检查磁盘hda1上的坏磁块 修复/检查hda1磁盘上linux文件系统的完整性 修复/检查hda1磁盘上ext2文...

  • 给你一个反悔的机会

    Linux 下 rm 命令是表示删除一个文件,而Linux是没有回收站机制,所以文件一旦删除的话,就彻底从磁盘上删...

  • 给你一个反悔的机会

    Linux 下 rm 命令是表示删除一个文件,而Linux是没有回收站机制,所以文件一旦删除的话,就彻底从磁盘上删...

  • 系统基础-文件系统

    Linux 文件系统 文件系统 Linux 使用了树形文件存储结构,在磁盘上存储文件的时候,使用的则是目录加文件的...

  • 学习Linux第一天

    Linux 本身也是一个基于文件形式表示的操作系统。 Linux一切皆文件。 ①在windows是文件的,在Lin...

  • Linux命令速查手册

    查看Linux系统信息 date 显示系统日期 关机(关机、重启、登出 ) 文件和目录 文件搜索 挂载文件系统 磁...

  • Linux学习笔记(七)文件与目录的权限

    本节我们学习关于Linux文件权限的知识: 一、文件与目录权限的表示方法 首先我们在查看Linux文件的详细信息使...

  • Python文件读写

    读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁...

  • linux学习之-基础命令操作

    linux目录颜色含义 蓝色表示目录; 绿色表示可执行文件; 红色表示压缩文件; 浅蓝色表示链接文件; 灰色表示其...

网友评论

    本文标题:linux 文件在磁盘上的表示

    本文链接:https://www.haomeiwen.com/subject/lwlxjttx.html