zoukankan      html  css  js  c++  java
  • APUE Chapter 4 Files and Directories(2)—File systems

         看一下UFS的构成。

         1、每一个disk drive都可以分成好多小的partitions,每个partition都可以使用一种file system。在Unix世界中有各种各样的File system可供使用:UFS,PCFS,HSFS等等。这里介绍UFS。

         看下图:

    disk drive partitions and file system

         书上没有详细介绍各个细节,只是介绍了i-node。在这个file system中,i-node里存放了有关文件的几乎全部的信息:file type, access permission bits, file size, pointers to the file’s block, and so on.

         只有两个信息没有在i-node中存储:i-node number和filename。

         2、具体看一下i-nodes和data blocks中的信息:

    cylinder group

         根据这些信息,可以定义几个links:

            · hard links:对于每一个i-node,有多少directory entry指向它,它自己是知道的,这个值储存在st_nlinks中(对应的数据类型为nlink_t,在系统中有LINK_MAX表示最大hard links的个数)。只有当hard links减为0的时候,它所对应的data blocks才会释放。

            · symbolic links:对于一个i-node,如果它的file type为S_IFLNK(symbolic link),那么它所指向的data block就是一个名字,表示它所指向的那个文件。比如一个directory entry中的filename为lib,它指向一个i-node,这个i-node是一个link file,它指向的data block中写着/usr/lib,那么它指向的文件就是/usr/lib这个文件。

         3、再看一下在一个目录中新建一个目录会产生什么情况:

    image

         当前目录是右边的这个directory block,在它之下新建一个testdir目录。

         先看右边,第一个entry表明它的filename是dot,它的i-node number是1267,那么它就代表一个i-node,这个i-node的file type是directory。它新建一个目录,filename是testdir,i-node number是2549,它指向一个新的i-node,这个i-node 的file type也是directory。这个i-node指向一个directory block,这个block中存放着有关2549这个目录的信息。

         leaf directory  <==>  st_nlink=2

         other directory  <==> st_nlink>=3

         4、文件的重命名。

         这个很简单,只是在directory block中新建一个entry,它指向同一个i-node,只不过把filename变一下。然后再把原来的directory entry删除。

         操作完成后,i-node中的st_nlink的值没有发生改变。

  • 相关阅读:
    窗体控件JFrame的使用
    WindowBuilder的安装与简介
    Swing事件机制
    Swing的MVC结构
    Swing框架的继承关系
    SWT简介
    Swing简介
    AWT简介
    Java界面设计
    使用Java建立聊天客户端
  • 原文地址:https://www.cnblogs.com/wangshuo/p/2033902.html
Copyright © 2011-2022 走看看