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获得文件数据. 磁 ...
随机推荐
- SpringMVC 的 Controller 返回各种视图的处理方式
SpringMVC 的 Controller 可以返回各种各样的视图.比如 JSP, JSON, Velocity, FreeMarker, XML, PDF, Excel, 还有Html字符流 等等 ...
- ionic使用sass
sass 是一个css的预编译器,常见的预编译器有less,sass,stylus等,目前sass似乎更受青睐一些,bootstrap的最新版本以及ionic 都是用sass来构建页面效果的.这篇文章 ...
- BC Harry and Magical Computer (拓扑排序)
Harry and Magical Computer Accepts: 350 Submissions: 1348 Time Limit: 2000/1000 MS (Java/Others) ...
- 查看Eclipse32位还是64位以及Eclipse的编译版本号,查看JDK是32位还是64位
一.查看Eclipse是32位还是64位 首先进入到Eclipse的安装目录: 查找到文件名为"eclipse.ini" 文件,使用文本编辑工具,或记事本打开,如下图: 以上是查看 ...
- hdu-5714 拍照(二分)
题目链接: 拍照 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Proble ...
- 转自:如何自学Android(强烈推荐)
转自: http://gityuan.com/2016/04/24/how-to-study-android/ 看到很多人提问非科班该如何学习编程,其实科班也基本靠自学.有句话叫“师傅领进门修行靠个人 ...
- 【转】loadrunner场景对性能测试策略的映射
性能测试策略 LoadRunner性能测试场景 压力测试 面向目标测试场景+忽略think time 负载测试 手工测试场景+同步点+think time+虚拟IP+带宽模拟…… 并发测试 同步点+多 ...
- 4种处理excel文件的技术
1.OLE Automation:处理excel文件会启动一个excel的进程,程序和excel进程通信来处理excel文件,这种方式占用服务器资源,不适合于网站的开发. 2.把Excel当成数据库, ...
- Linux下用freetds连接mssql中文乱码的问题【参考1】
由于工作原因我们需要通过php访问我们以前的Sql Server 2005数据,所以就有了这篇文章的诞生.废话就少说了,做程序设计的最不喜欢兜圈子了.用简介步骤说明问题,往下看.系统: Linux ...
- php返回json数据函数例子
json_encode()函数用法. echo json_encode(array('a'=>'bbbb','c'=>'ddddd'); 这样就会生成一个标准的json格式的数据 代码如下 ...