本章開始介绍UNIX文件系统。

文件系统是怎样管理文件的呢?那咱们要先文件的存储介质開始--磁盘

磁盘是计算机系统的一个硬件设备,文件系统为了可以管理磁盘。对其进行了三层抽象(本文全部内容均指UNIX文件系统,windows文件系统有兴趣的同学自行研究!~)

第一层抽象:将一整块磁盘分区

第二层抽象:将磁盘切割为block

第三层抽象:将block 逻辑上划分为四个区域

第三个层次也就是咱们要研究的部分

Unix系统的分区例如以下:

引导块 超级块 i节点表 文件存储区

(1)引导块:0号块。是每一个文件系统的第一块,存储的是用于系统启动时引导运行操作系统的内核程序,当整个文件系统由多个文件系统构成时。仅仅有根文件系统的引导块才有效。

(2)超级块:1号块,通常也成为管理块。是文件系统的第二块,也是文件系统的头。存放安装和管理文件系统的所有管理信息。包含文件系统大小、文件系统所在的设备区、i节点表大小、空暇空间大小、空暇链表头等。

(3)i节点表:由若干块构成的一片磁盘区域,i节点表在超级块中指明,一个i节点号相应一个文件,i节点相关内容例如以下:

mode

type

uid

gid

link.no

size

addr.pt

time

占用标志。0:空,1:占用

文件类型

属主

属组

链接数

大小

指向文件实际数据块的指针

近期訪问/改动日期时间

每一个文件系统的属性,如大小,文件的全部者,近期改动时间等,都记录在I-节点的结构中。全部的I-节点都有同样的大小

(4)文件存储区:除了前三部分外。其余空间都是文件存储区,该区占了整个存储空间的绝大部分。

生命短暂,咱们还是通过实例来看

一、创建文件:文件系统是怎样分配这三个区域的

执行一个cat spwd.c > test 如图:

那么这个过程文件系统做了什么呢?(至于里面的管道,有时间会有专门一篇来分析)

创建的步骤例如以下图




创建一个文件主要有四个操作

1、找到一个空i-节点存储文件属性

2、内核从free的数据block中找出可以存储文件大小的几个block。存储数据图中是找出A,B,C三块

3、将A,B,Cblock记录到第40个block i节点上(i-节点,一共能存储13个block。只能存储10个数据block。后3个空间在存在大文件使用,11块叫二级间接块,12块叫三级间接块,13呢?那就说明文件太大了,须要又一次定义block的大小,block大了,自然i-节点就能够放下了)

4、将i-节点 加入到目中。映射关系是40:test,文件夹下边将讨论

二、什么是文件夹

文件夹是一种包括文件名称字列表的特殊文件,不同的系统实现方式不同,可是,其抽象模型基本一致-------i-节点和文件名称列表。

知道这些 就差点儿相同了。

三、文件是怎样被读取出来的呢?

能够看做是创建文件的逆操作。

1、去文件夹 查找与test文件名称同样的i-节点号

2、去顺序为40i-节点的记录中 查找blockA,B,C

3、读取A,B,C

4、拷贝到用户空间

须要注意是1,2,3 过程都是在内核空间中。第4步 才到用户堆栈空间,这里有涉及到了内核态和用户态。依旧不会再这里讨论,内容太多了。

以上不过粗略的介绍,文件系统涉及内容还有非常多,比方大文件的存储。多个文件系统的整合,虚拟文件系统等

在结束本篇之前。再说两句,一个block 是5 1 2字节,我们常常使用的find 命令中size选项 的大小就是blcok为计算。find 命令的使用请自行查阅man find 手冊

至于是不是5 1 2字节,那么咱们就实践一下。spwd是9368个字节

执行一下 find   .  -type f -size +19

意思查找当前文件夹下type为文件类型,大于19个block的文件。

没有找到,那么咱们执行 find   .  -type f -size +18      (18*512=9126)



OK 找到了。

今天就到这里,接下来将讨论文件属性和文件夹

JAVA File类 分析(二)的更多相关文章

  1. JAVA File类 分析(三)

    前面两篇与大家一起研究了unix下的文件系统,本篇将和大家一起分析 文件的属性和文件夹. ok,废话不说,先来段代码 #include <stdio.h> #include <sys ...

  2. Java File 类的使用方法详解

    Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍,有需要的Java开发者可以看 ...

  3. Java File 类的使用方法详解(转)

    转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...

  4. Java File类总结和FileUtils类

    Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...

  5. Java File类 mkdir 不能创建多层目录

    File f = new File("/home/jp/Upload"); if ((!f.exists()) || (!f.isDirectory())) {boolean re ...

  6. Java File类基础解析 1

    Java File类基础解析 1 File类的构造方法 public File(String pathname) :通过给定的路径名字符转换为抽象路径名来创建新的File实例 String path ...

  7. Java——File类概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  8. Java File类常用方法及实例

    创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false. createTempFile(String prefix, String s ...

  9. Java File类基本操作

    我们可以利用Java.io.File类对文件进行操作,基本操作如下: 1)创建文件: public boolean createNewFile() throws IOException 2)删除文件: ...

随机推荐

  1. String methods

    A method is similar to a function – it takes arguments and returns a value – but the syntax is diffe ...

  2. SQL流程控制语句

    1 GoTo语句 IF 12>9GOTO print1ELSE GOTO print2 print1:PRINT '执行了流程1'--GOTO theEndprint2:PRINT '执行了流程 ...

  3. 移动端(手机端)页面自适应解决方案—rem布局篇

    移动端(手机端)页面自适应解决方案-rem布局 假设设计妹妹给我们的设计稿尺寸为750 * 1340.结合网易.淘宝移动端首页html元素上的动态font-size属性.设计稿尺寸.前端与设计之间协作 ...

  4. BNUOJ 4049 四叉树

    四叉树 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: Ma ...

  5. 洛谷 P2104 二进制

    P2104 二进制 题目描述 小Z最近学会了二进制数,他觉得太小的二进制数太没意思,于是他想对一个巨大二进制数做以下 4 种基础运算: 运算 1:将整个二进制数加 1 运算 2:将整个二进制数减 1 ...

  6. 洛谷 P3152 正整数序列

    P3152 正整数序列 题目描述 kkk制造了一个序列,这个序列里的数全是由正整数构成的.你别认为她的数列很神奇——其实就是1, 2, …, n而已.当然,n是给定的.kkk的同学lzn认为0是一个好 ...

  7. 洛谷 P1302 可见矩形

    P1302 可见矩形 题目描述 给定平面上n个互不相交(指公共面积为零)的正方形,它们的顶点坐标均为整数.设坐标原点为O(0, 0).对于任一正方形R,如果可以找到R的边上2个不同的点A和B,使三角形 ...

  8. 在kettle中实现数据验证和检查

    在kettle中实现数据验证和检查 在ETL项目,输入数据通常不能保证一致性.在kettle中有一些步骤能够实现数据验证或检查.验证步骤能够在一些计算的基础上验证行货字段:过滤步骤实现数据过滤:jav ...

  9. Ext4.0 经常使用代码整理(一)

    一:经常使用工具条上的定义 // 工具条 var toolbar = Ext.create("Ext.Toolbar", {             items : [ yearC ...

  10. UVA - 12263 Rankings 模拟(拓扑排序)

    题意:1~n这n个数,给你一个初始的顺序,再告诉你那两个数的大小关系发生了变化,求变化后的 顺序,不存在则输出IMPOSSIBLE 思路:这题很遗憾没在比赛的时候过掉,结束后加了一行就AC了.题目真的 ...