本章開始介绍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. hdoj--3183--A Magic Lamp(贪心)

    A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  2. django 笔记17 ModelForm

    Model 数据库操作 验证 验证 Form -class LoginForm(Form): email = fields.EmailField() is_valid 每一个字段进行正则(字段内置正则 ...

  3. 青蛙的约会 poj 1061

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 86640   Accepted: 15232 Descripti ...

  4. Android--ViewPager-Fragment

    package com.cnn.viewpager02; import java.util.ArrayList; import java.util.List; import android.os.Bu ...

  5. Android 得到根Fragment

    public Fragment getRootFragment() { PlayFragment xFragment = null; for (Fragment fragment : getFragm ...

  6. Vuejs componet

    Vuejs  componet <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  7. 《剑指offer》数值的整数次方

    一.题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 二.输入 double base, int exponent 三.输出 b ...

  8. 运维派 企业面试题3 为上题中的 "十个随机字母_test.html" 文件 更名

    Linux运维必会的实战编程笔试题(19题) 企业面试题3 #将试题2中创建的文件名uopiyhgawe_test.html# test-->修改为omg,html-->HTML 方法一: ...

  9. 洛谷 P2542 [AHOI2005]航线规划 树链剖分_线段树_时光倒流_离线

    Code: #include <map> #include <cstdio> #include <algorithm> #include <cstring&g ...

  10. 部分vivo和oppo手机,使用上传图片功能,可能会出现退出webview的现象(回退到app的入口页面)

    在公司的app里面嵌入了一个h5页面,h5页面有个使用图片上传功能,上传图片出现闪退的现象 问题描述:vivo手机,在app内的wap页面使用上传图片的功能,在选择好图片点击确认按钮后,出现退出整个w ...