linux 文件在磁盘上的表示
基本构成

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

数据块集合是由大小固定的数据块组成, 在很多系统中数据块的大小为4K
以4K为例, 如果一个文件的大小是12K,那么它会占用3个数据块
读取三个数据块就可以知道文件的内容, 可是我们要如何知道这三个数据块的位置?
如果三个数据块不是连在一起而是东一块西一块又该如何?
i节点的作用就是记录文件的数据块数量和数据块在磁盘上的位置的
不仅如此,i节点还包含文件的其它属性信息,文件属性struct stat的内容便是来自于i节点
读取文件内容
每个i节点都有一个号码, 操作系统用不同的号码来识别不同的文件
文件读取: 当我们打开一个文件读取时, 系统找到文件名对应的i节点, 然后通过i节点找到数据块, 再把文件内容拼凑出来
文件夹读取: 就是读取一系列目录项(dirent), 每个目录项由两部分组成: a.文件或文件夹的名称 b.该文件名对应的i节点
链接
引用计数: 当有很多指针都需要访问同一块内存的数据时, 我们记下来当前在访问的指针总数, 来一个就把总数加1, 当有指针调用free操作时, 我们不释放这块内存, 只是把刚刚记下的总数减一, 直到最后一个指针调用free时才真正把内存释放掉
硬链接: 引用计数在磁盘文件上同样适应, 那个总数保存i节点中. 对一个已存在的文件执行link操作, 生成一个新的文件, 新旧文件都指向同一个i节点, 删除新旧文件中的一个只是把i节点中的链接总数减一, 并不会删除数据块.
软链接: 与硬链接相对. 像windows系统中的快捷方式, 不会增加链接总数, 依赖于原先的旧文件
如果i节点中硬链接总数减为0时, 就会释放对应的数据块, 但数据块内容不会被立即擦除, 这些数据块原先被i节点保护不会被系统随意征用, 现在可以被系统重新分配给其它程序使用, 在未重新分配给其它程序写入内容之前, 我们还是可以通过技术恢复数据块内容的.
文件的复制和删除
复制: 在不跨分区的情况下, 文件复制只是多了一个别名, 然后对应的i节点链接总数加1.
删除: 对应的i节点链接总数减1, 如果是最后一个链接就释放数据块.
linux 文件在磁盘上的表示的更多相关文章
- Linux 文件读写操作与磁盘挂载
文件读写 [文件描述符] Linux下,通常通过open打开一个文件,它然后返回给我们一个整数,通过这个整数便可以操作文件,这个整数我们称文件描述符(fd).对应被打开的文件,它也是一种系统资源,那么 ...
- 十二、文件和目录——Linux文件系统结构
12.1 Linux文件系统结构 12.1.1 文件操作基本元素 文件操作相关的最基本元素是:目录结构,索引节点和文件的数据本身 目录结构(目录项) 索引节点(i 节点) 文件的数据 12.1.2 文 ...
- linux文件 面试知识
1. 文件存储结构 Linux正统的文件系统(如ext2.ext3)中,一个文件由目录项.inode和数据块组成. 目录项:包括文件名和inode节点号. inode:又称文件索引节点, ...
- Linux文件IO操作函数概述
文件概述 Linux中,一切皆文件.文件为操作系统服务和设备提供了一个简单而一致的接口.这意味着程序完全可以像使用文件那样使用磁盘文件.串行口.打印机和其他设备. 也就是说,大多数情况下,你只需要使用 ...
- linux下的磁盘和文件系统管理
一.硬盘分区知识 1.分区类型 硬盘分区一共有3种:主分区.扩展分区和逻辑分区.扩展分区只不过是逻辑分区的“容器”,实际上只有主分区和逻辑分区进行数据存储.在一块硬盘上最多只能有4个主分区,可以另外建 ...
- Linux查看文件以及磁盘空间大小管理(转)
(1)查看文件大小 查看当前文件夹下所有文件大小(包括子文件夹) du -sh # du -h15M ./package16K ./.fontconfig4.0K . ...
- 如何将本地大文件通过终端上传到linux服务器
第一种方式: SecureCRT下 上传文件只需在shell终端仿真器中输入命令“rz”,即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下. 下载文件只需在s ...
- 如何将本地文件通过终端上传到linux服务器或从linux主机下载文件到本地
第一种方式: SecureCRT下上传文件只需在shell终端仿真器中输入命令“rz”,即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下.下载文件只需在shell终端仿 ...
- Linux文件访问流程及磁盘inode和block总结
Linux文件访问流程 inode是文件的唯一标识,文件名和inode的对应关系存放在上一级目录的block中:inode里有指向文件block的指针和文件的属性,从而通过block获得文件数据. 磁 ...
随机推荐
- 【MYSQL】数据类型
转载 https://www.baidu.com/s?ie=UTF-8&wd=cnblog 原文 泪云山海的博客 mysql 数据类型 1.整型 MySQL数据类型 含义(有符号) tinyi ...
- 怒刷DP之 HDU 1029
Ignatius and the Princess IV Time Limit:1000MS Memory Limit:32767KB 64bit IO Format:%I64d &a ...
- 浅议tomcat与classloader
关于tomcat和classloader的文章,网上多如牛毛,且互相转载,所以大多数搜到的基本上是讲到了tomcat中classloader的几个层次,对于初接触classloader,看了之后还是只 ...
- 记录一下,关于错误提示:could not find a part of path “X:\”的解决办法
Win2k在NTFS系统下可能会出现这样的错误提示,解决办法很简单,只要在网站所在系统盘根目录给ASPNET用户读取权限就可以了,因为原因就是 Server.MapPath() 这个方法,这个方法是让 ...
- MySQL之不能保存表格问题
有时候我们制作表格不能保存时出现这样的提示: 我们打开工具: 把“阻止保存要求重新创建表的更改”选项的勾给去了:
- apache Internal Server Error 的几个问题
Internal Server Error The server encountered an internal error or misconfiguration and was unable to ...
- C#.NET实现Word或Excel文件转为HTML文件
Word文件转html,返回相对路径 private string GetPathByDocToHTML(string strFile) { if (string.IsNullOrEmpty(strF ...
- 20141113--SQL 事务
---------------------触发器----------------------------- --触发器本质上还是一个存储过程,trigger --只不过不是通过exec调用执行,而是通 ...
- SCP服务实现Linux交互
SCP服务实现Linux交互 在实际工作中,我们可以使用scp服务器进行Linux与Linux之间的信息交互. 基本指令: scp 本地文件 远程文件 scp ...
- OpenGL第18,19,20讲小结
18讲是通过调用库函数画一些简单的二次几何体,比如球体.圆锥体.圆盘等等. 19讲简单的讲了下粒子系统.其实就是三角形贴上星星的纹理,通过启用混合(GL_BLEND)来达到一种动态的粒子效果.通过修改 ...