Linux操作系统知识点五:操作系统的功能——文件管理

  1. 文件是具有符号名的一组相关元素的有序序列,是一段程序或数据的集合。
    文件是保存信息的基本结构。
    信息包括相关记录或者字符流。
    文件通过文件名标识。

  2. 文件分类
    (1)按文件的数据形式分:源文件、目标文件、可执行文件。
    (2)按用途分:系统文件、库文件、用户文件。
    (3)按存取权限分:只读文件、读写文件、可执行文件。
    (4)按保存时间分:临时文件、档案文件、永久文件。
    (5)按对文件管理方式分:普通文件、目录文件、特殊文件。

  3. 文件结构
    逻辑结构:用户可见(有结构文件,即记录式文件。无结构文件,即流式文件。)
    物理结构:用户不可见(文件的存储结构,在外存上的存储)

(1)顺序(连续)文件:把逻辑上连续的文件信息依次存放到连续的物理块中。文件内容的逻辑顺序与物理存储顺序一致。
(2)串联文件:用非连续的物理块来存放文件信息,可将物理块用链指针相链接。(逻辑结构与物理结构不一致)
(3)索引文件:基于一张索引表,表中每一栏指出文件信息所在的逻辑块号和与之对应的物理块号。索引表的物理位置则由文件说明项给出。(逻辑结构与物理结构不一致)

  1. 文件系统:操作系统中管理磁盘或磁盘分区上的文件的方法、数据结构和软件。

  2. Linux文件类型在这里插入图片描述

  3. 文件属性用于文件的管理控制和安全保护。
    在这里插入图片描述

  4. 磁盘
    (1)盘片(Disk)
    是硬盘中承载数据存储的介质。
    (2)磁头(Head)
    是通过磁性原理读取磁性介质上数据的部件。
    (3)磁道(Track)
    当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。
    (4)扇区(Sector)
    将一个盘片划分为若干内角相同的扇形,称为扇区。每个扇区中的数据作为一个单元同时读出或写入。扇区是硬盘数据存储的最小单位。
    (5)簇(Clust,或者磁盘块,Block)
    相邻的扇区组合在一起,形成一个簇。每个簇可以包括2、4、8、16、32、64个扇区。
    簇是属于文件系统层面的概念(一种抽象),是文件系统中数据存储的基本单位。一个簇中只能放置一个文件的内容。
    Linux中叫磁盘块(简称为块),大小通常为4KB(8个扇区)。
    (6)柱面(Cylinder)
    所有盘片上的同一磁道构成一个圆柱,称作柱面。数据的读/写按柱面从外向内进行,而不是按盘片进行。
    磁头定位时,首先确定柱面,再确定盘片,最后确定扇区。读写数据时,当前柱面全部写满后,将磁头移动到下一个柱面。

  5. 文件控制块(File Control Block)是OS用来存放描述文件、管理文件的文件属性信息的数据结构。
    文件 = FCB + 文件内容(数据)。
    FCB是文件存在的唯一标志
    FCB中包含的内容:基本信息 、存取控制信息、使用信息。
    (1)基本信息
    ① 文件名
    ② 文件物理地址和文件的长度(字节数或盘块数)
    ③ 文件逻辑结构
    ④文件主标识符和组标识符
    ⑤ 文件物理结构
    (2) 存取控制信息类
    ①文件主的权限
    ②一般用户的权限
    (3) 使用信息类
    ① 文件建立日期及时间
    ② 文件最近访问日期及时间
    ③ 文件最近修改日期及时间
    ④ 文件链接次数

  6. 文件名是以目录项的形式存在的。
    目录项=文件名+索引节点号
    文件名和索引节点分开存储

  7. 索引节点:是一种数据结构,该结构将目录中的文件名和其余属性信息分离存放,以便分开加载。
    OS对文件的操作是通过索引节点(inode)而非文件名来完成的。
    索引节点与文件一一对应,每个索引节点都有唯一的编号,称为索引节点号。
    目录项中存放文件名和索引节点号,而非索引节点内容。
    用户不能直接引用inode,而是通过文件名对文件进行使用

  8. 文件“按名存取”的实现
    第一步,查找目录项,根据文件名找到文件的inode号。(可能完成一个目录树的查找过程)
    第二步,根据inode号,访问inode,得到文件的属性信息,然后根据属性信息对权限进行检查。
    第三步,验证合法后,系统会计算出文件的物理地址,完成对文件的操作。

  9. 虚拟文件系统(VFS:虚拟文件系统转换)
    (1)VFS支持的文件系统
    磁盘的文件系统
    网络文件系统
    特殊文件系统
    (2)理解VFS需注意以下几点:
    VFS只存在于内存中,系统启动后才建立。
    VFS对逻辑文件(具体文件)系统进行抽象,并没有真正存在于磁盘分区中。
    VFS提供一致的接口,统一管理逻辑文件系统。
    (3)VFS中的数据结构
    1.超级块数据结构
    超级块描述已安装的整个文件系统的信息。
    是逻辑文件系统在安装时建立的,并在文件系统卸载时被自动删除,只存在于内存中。其数据结构是super_block 。
    所有超级块对象以链表的形式链接在一起。
    2.索引节点(inode)结构
    逻辑文件系统的索引结点是存放在磁盘上的,是一种静态结构。要使用它,必须调入内存,填写VFS的索引结点。因此,VFS索引结点是动态结点。
    VFS索引节点存放关于具体文件的一般信息,其数据结构为inode。
    3.目录项(dentry)结构
    每个文件除了有一个索引节点inode数据结构外,还有一个目录项dentry数据结构。
    inode结构记录的是文件物理上的属性,dentry结构描述的是文件逻辑上的属性。
    一个dentry只能和一个inode对应。但一个inode可以对应多个dentry。
    4.文件(file)结构
    Linux所有文件操作都基于文件描述符(file descriptor,简称fd),它是一个整数。
    Linux专门定义file数据结构,保存文件打开后文件读写位置(偏移量)等信息。这个结构称为打开的文件描述(open file description)。
    每个进程打开文件后都对应一个file结构。
    5.小结
    超级块是对一个文件系统的描述。
    索引节点是对一个文件物理属性的描述。
    目录项是对一个文件逻辑属性的描述。
    一个进程(或用户)打开的文件是由files_struct来描述。
    整个系统所打开的文件是由file结构来描述。

猜你喜欢

转载自blog.csdn.net/weixin_43249728/article/details/83592174