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获得文件数据. 磁 ...
随机推荐
- TinyThread源码分析之中断
转载请注明来源:cuixiaolei的技术博客 https://github.com/xhawk18/TinyThread TinyThread 是基于Cortex-M0的小型的OS. 知识储备: I ...
- Oracle 常用命令大全
一.如何有效地利用数据字典 ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图.数据字典名称是大写的英文字符. 数 ...
- linux_iptables 详解
iptables工具__过滤包—命令(-A.-I.-D.-R.-L等).参数(-p.-s.-d.--sport.--dport.-i.-o等).动作-j (ACCEPT.DROP.REJECT.RED ...
- 使用Excel批量更改或插入SQL语句
在平常中我们可以通过使用SQL批量更新或新增更新数据库数据,对于这些都是有逻辑的数据可以这样处理但是对于无逻辑的数据我们如何处理(这里的数据比较多). 我是通过Excel的方式来处理的.以下已插入为例 ...
- Shuffle an Array
class Solution { private: vector<int> arr, idx; public: Solution(vector<int> nums) { sra ...
- 使用Word 2013向cnblog发布博文
Windows Live软件许久不更新,就想用手头的Word 2013作为cnblogs博客的撰写工具.在查看cnblogs关于Windows Live的配置说明时,发现下列有Word 2007的配置 ...
- poj 1695 动态规划
思路:和黑书上的跳舞机类似 #include<map> #include<set> #include<cmath> #include<queue> #i ...
- poj动态规划列表
[1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...
- Table of Contents - Tomcat
Manager 持久化 Session JNDI Resources JNDI 配置 JDBC DataSources DBCP 配置 Realm Configuration 设置 HTTP 基本认证 ...
- .NET DLL 保护措施应用实例(百度云批量保存工具)
最近做了个小工具,将保护措施思路全部应用到了此工具中. 点我下载 百度云批量保存工具是一款专门用于自动批量保存百度云分享的软件. 本软件特点:1:完全模拟人工操作:2:可以批量保存百度分享的文件( ...