• cat userlist


    1. Linux文件系统的三层抽象是什么?
    2. 写出Cat userlist的过程,要详述目录文件,i-node.数据块,要画图示意
    3. 假设块大小为4k, userlist的大小不小于10k,自己假设大小

    一、Linux文件系统的三层抽象是什么?

    Linux文件系统的内部结构
    硬盘实际上是由一些磁性盘片组成的计算机系统的一个设备。文件系统是对该设备的一种多层次的抽象。

    • 第一层抽象:一个磁盘能够储存大量的数据,一个磁盘可以被划分成分区,每个分区可以看作是一个独立的磁盘。
    • 第二层抽象:一个硬盘有一些磁性盘片组成。每个盘片的表面都被划分为很多同心圆,这些同心圆称作磁道,每个磁道又被进一步划分为扇区,每个扇区可以储存一定字节数的数据。扇区是磁盘上的基本储存单元。一个磁盘扇区编号的系统使得我们可以把磁盘视为一系列块的组合。
    • 第三层抽象:文件系统可以用来储存文件内容,文件属性和目录Unix把磁盘块分成了3个部分来储存上述信息。

    嵌入式Linux系统分三层:应用层,内核层,硬件层。

    1:应用层是一些应用程序和库,是面向用户的,如命令,QQ等应用程序;

    2:内核层的主要功能是设备驱动,进程管理,内存管理,文件系统和网络通信;

    3:硬件层是以信号为对象,完成各种信号之间的相互转换,通常信号变换前后其承载的信息保持不变,因此,无论如何变换,信号之间总是存在某种函数关系。

    二、写出Cat userlist的过程,要详述目录文件,i-node.数据块,要画图示意

    使用man cat命令

    cat主要有三大功能:

    1. 一次显示整个文件。
      $ cat filename
    2. 从键盘创建一个文件。
      $ cat > filename
      只能创建新文件,不能编辑已有文件.
    3. 将几个文件合并为一个文件。
      $cat file1 file2 > file

    cat具体命令格式为 : cat [-AbeEnstTuv] [--help] [--version] fileName

    • 说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)
    • 参数:
      • -n 或 –number 由 1 开始对所有输出的行数编号
      • -b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
      • -s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
      • -v 或 –show-nonprinting

    超级块 inode节点表 数据区
                       

    (一)inode

    inode在linux中是一种数据结构,包含了文件系统中文件相关的重要信息
    inode节点表存放inode节点,存储文件属性、所有者、权限等元数据信息

    文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)

    操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

    文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

    (二)目录文件

    Linux文件系统是目录和文件组成的一种层次结构,目录(directory)也是一种文件,起点称为根(root),其名字是一个字符 / 。Linux系统中打开目录,实际上就是打开目录文件。目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。
    Linux中,一个文件(包括目录)的文件名,及文件名与inode的对应关系,都是由包含该文件的目录所描述的。在Linux目录中,每个名字有一个inode number,inode number指出了存储数据的硬盘空间的位置。ls -i命令列出整个目录文件,即文件名和inode号码,所以我们可以先读取文件的inode,然后通过ls -i观察名字和inode对应关系;如果要查看文件的详细信息,就必须根据inode号码,访问inode节点,读取信息。

    (三)数据块

    三、假设块大小为4k, userlist的大小不小于10k,自己假设大小

    1.Cat userlist的过程:

    1. 从目录找到userlist
    2. 从dentry结构体定位inode
    3. 从inode结构体读出i_block[]
    4. 按顺序组织i_block[]中的内容,输出到终端。

     2.示意图:

  • 相关阅读:
    PowerDesigner数据模型(CDM—PDM)
    Eclipse解决JSP页面乱码问题
    mysql中Access denied for user 'root'@'localhost' (using password:YES)
    PS小技巧
    sublime使用心得
    Java的变量命名
    Java栈和堆的区别
    Mac 快捷键
    用shell脚本监控进程是否存在 不存在则启动的实例
    linux怎么运行.SH文件
  • 原文地址:https://www.cnblogs.com/20201212ycy/p/16819458.html
Copyright © 2020-2023  润新知