当前课程知识点:基于Linux的C++ > 第十二讲 Linux系统编程基础 > 12.8 文件系统 > LinuxCPP1208
在 Linux 操作系统中它使用的文件系统
分成实际文件系统和虚拟文件系统两大类
分成实际文件系统和虚拟文件系统两大类
实际文件系统就是实际存储我们文件的时候
实际文件系统就是实际存储我们文件的时候
它所使用到的文件系统
它最主流的文件系统就是 ext 文件系统
它已经经过了多次改版
现在我们用的文件系统是 ext4
从 ext 到 ext2、ext3
现在我们用的是 ext4
有了很多重大的改进
这是它使用到的实际的文件系统
除了实际文件系统和虚拟文件系统
它还有一类特殊的文件系统是 “/proc”
它实际上是我们的内核映像
我们可以从这个特殊文件系统
“/proc” 里抽取特定的信息
我们首先来看实际文件系统
在实际文件系统里边
它事实上描述了整个 Linux 操作系统
在保存我们的文件的时候
尤其是外部真实文件的时候
它的组成和它的功能以及它的实现
总体上来讲
实际文件系统是由四个部分组成的:
引导块、超级块、索引结点区和数据区
引导块 一般在文件系统的开头
通常就是一个扇区
存放我们的引导程序
用来读入并且启动我们操作系统用的
这是引导块
接下来就是超级块
它用于记录我们的文件系统中的管理信息
它用于记录我们的文件系统中的管理信息
不同的文件系统
它有不同的超级块
这个都是不一样的
接下来就是索引结点区和数据区
索引结点区保存的是一个文件和目录的索引
索引结点区保存的是一个文件和目录的索引
一个文件和一个目录就占据一个索引结点 就这个意思
一个文件和一个目录就占据一个索引结点 就这个意思
首索引结点就是这个文件系统的根结点
根结点是一个非常重要的结点
因为 Linux 整个文件系统
都是挂接在统一的文件目录树下的根结点
都是挂接在统一的文件目录树下的根结点
一个文件系统有一个
那么这个文件系统的根结点
就可以挂接到总目录下边的某个特定的非叶结点上
就可以挂接到总目录下边的某个特定的非叶结点上
这样的话 就可以让我们整个目录树
仍然构成一个单一的
只有唯一的一个根的一个系统的架构
就是这个意思
数据区就来存放我们文件中的
实际的数据
不管是真实的内部数据
还是管理数据
都是按照这个方式放的
实际上在 Linux 操作系统里边
它支持的文件系统不是一种
其实是好多种
那么这些文件系统怎么能够统一管理呢
在 Linux 操作系统中
它就提供了虚拟文件系统 VFS
叫虚拟文件系统
虚拟文件系统的最主要特点就是
它只存在于内存里边
它充当了实际的文件系统与操作系统之间的接口
它充当了实际的文件系统与操作系统之间的接口
提供实际文件系统的挂载动作
管理我们的真实文件系统
虚拟文件系统干的就是这个事
在内存里充当我们的实际文件系统和操作系统的接口
在内存里充当我们的实际文件系统和操作系统的接口
对于 VFS 来讲 系统初始化的时候
会构造这个 VFS 的目录树
建立它的全部的数据结构
它的最主要的一个好处
就是能够支持不同的文件系统
在操作系统层面上你就能够看到
不管你这个真实的文件系统
它是什么格式的
不管它是 ext 的 还是 ext4 的
不管它是 CDFS 的 或者是 FAT 表的
它其实都可以挂接到整个虚拟文件系统中的单一的
它其实都可以挂接到整个虚拟文件系统中的单一的
某一个特定的结点下
对于操作系统来讲呢
你把它挂上去以后
就可以以一个一致的方式来管理维护它了
就可以以一个一致的方式来管理维护它了
这一点对于操作系统的用户来讲
它是透明的 用户本身并不需要知道这个子文件系统
它是透明的 用户本身并不需要知道这个子文件系统
它具体的真实的文件系统的格式是什么
我们看到的就是一个总的文件系统的目录树
我们看到的就是一个总的文件系统的目录树
在不同的挂载点
它们可能挂载的是不同的真实文件系统
但是我们看到的就是一个整棵目录树
这是虚拟文件系统的最重要的一个好处
它充当了我们的真实文件系统和操作系统之间的接口
它充当了我们的真实文件系统和操作系统之间的接口
从而让真实的文件系统
对于用户来讲是完全透明的
有一类很特殊的文件系统叫 “/proc”
它是 Linux 内核的一个窗口
同样它只存在于内存里边
并不占用我们的磁盘空间
在 proc 这个文件系统里边
它包括了一系列的典型信息
比如讲进程信息、硬件信息、内核信息、
设备挂载点与文件系统这些信息
都可以通过 “/proc” 这个文件系统查询
你可以查询这个文件系统里的文件来获得
-1.1 提纲
-1.2 程序设计的基本概念
-1.3 简单C/C++程序介绍
-1.4 程序设计的基本流程
-1.5 基本语法元素
-1.6 程序设计风格
-1.7 编程实践
-第一讲 C/C++基本语法元素--编程实践提交入口
-2.1 提纲
-2.2 结构化程序设计基础
-2.3 布尔数据
-2.4 分支结构
-2.5 break语句
-2.6 循环结构
-2.7 编程实践
-第二讲 程序控制结构--编程实践提交入口
-3.1 提纲
-3.2 函数声明、调用与定义
-3.3 函数调用栈框架
-3.4 编程实践
-第三讲 函数--编程实践提交入口
-4.1 提纲
-4.2 算法概念与特征
-4.3 算法描述
-4.4 算法设计与实现
-4.5 递归算法(一)
-4.6 递归算法(二)
-4.7 容错与计算复杂度
-4.8 编程实践
-第四讲 算法--编程实践提交入口
-5.1 提纲
-5.2 库与接口
-5.3 随机数库(一)
-5.4 随机数库(二)
-5.5 作用域与生存期
-5.6 典型软件开发流程(一)
-5.7 典型软件开发流程(二)
-5.8 编程实践
-第五讲 程序组织与开发方法--编程实践提交入口
-6.1 提纲
-6.2 字符
-6.3 数组(一)
-6.4 数组(二)
-6.5 结构体
-6.6 编程实践
-第六讲 复合数据类型--编程实践提交入口
-7.1 提纲
-7.2 指针基本概念
-7.3 指针与函数
-7.4 指针与复合数据类型(一)
-7.5 指针与复合数据类型(二)
-7.6 字符串
-7.7 动态存储管理(一)
-7.8 动态存储管理(二)
-7.9 引用
-7.10 编程实践
-第七讲 指针与引用--编程实践提交入口
-8.1 提纲
-8.2 数据抽象(一)
-8.3 数据抽象(二)
-8.4 链表(一)
-8.5 链表(二)
-8.6 链表(三)
-8.7 链表(四)
-8.8 函数指针(一)
-8.9 函数指针(二)
-8.10 抽象链表(一)
-8.11 抽象链表(二)
-8.12 编程实践
-第八讲 链表与程序抽象--编程实践提交入口
-9.1 提纲
-9.2 程序抽象与面向对象
-9.3 类类型
-9.4 对象(一)
-9.5 对象(二)
-9.6 类与对象的成员(一)
-9.7 类与对象的成员(二)
-9.8 类与对象的成员(三)
-9.9 继承(一)
-9.10 继承(二)
-9.11 继承(三)
-9.12 多态(一)
-9.13 多态(二)
-9.14 编程实践
-第九讲 类与对象--编程实践提交入口
-10.1 提纲
-10.2 四则运算符重载(一)
-10.3 四则运算符重载(二)
-10.4 关系与下标操作符重载
-10.5 赋值操作符重载(一)
-10.6 赋值操作符重载(二)
-10.7 赋值操作符重载(三)
-10.8 赋值操作符重载(四)
-10.9 赋值操作符重载(五)
-10.10 流操作符重载(一)
-10.11 流操作符重载(二)
-10.12 流操作符重载(三)
-10.13 操作符重载总结
-10.14 编程实践
-第十讲 操作符重载--编程实践提交入口
-11.1 提纲
-11.2 泛型编程概览
-11.3 异常处理机制(一)
-11.4 异常处理机制(二)
-11.5 运行期型式信息(一)
-11.6 运行期型式信息(二)
-11.7 模板与型式参数化
-11.8 题外话:术语翻译
-11.9 泛型编程实践(一)
-11.10 泛型编程实践(二)
-11.11 泛型编程实践(三)
-11.12 泛型编程实践(四)
-11.13 泛型编程实践(五)
-11.14 泛型编程实践(六)
-11.15 泛型编程实践(七)
-11.16 泛型编程实践(八)
-11.17 泛型编程实践(九)
-11.18 泛型编程实践(十)
-11.19 编程实践
-第十一讲 泛型编程--编程实践提交入口
-12.1 提纲
-12.2 程序执行环境(一)
-12.3 程序执行环境(二)
-12.4 程序执行环境(三)
-12.5 程序执行环境(四)
-12.6 输入输出(一)
-12.7 输入输出(二)
-12.8 文件系统
-12.9 设备
-12.10 库(一)
-12.11 库(二)
-12.12 makefile文件(一)
-12.13 makefile文件(二)
-12.14 makefile文件(三)
-12.15 编程实践
-第十二讲 Linux系统编程基础--编程实践提交入口
-13.01 提纲
-13.02 进程基本概念
-13.03 信号
-13.04 进程管理(一)
-13.05 进程管理(二)
-13.06 进程管理(三)
-13.07 进程间通信(一)
-13.08 进程间通信(二)
-13.09 进程间通信(三)
-13.10 进程间通信(四)
-13.11 进程池
-13.12 编程实践
-第十三讲 进程编程--编程实践提交入口
-14.1 提纲
-14.2 线程基本概念
-14.3 线程管理(一)
-14.4 线程管理(二)
-14.5 线程管理(三)
-14.6 线程管理(四)
-14.7 线程同步机制(一)
-14.8 线程同步机制(二)
-14.9 C++11线程库(一)
-14.10 C++11线程库(二)
-14.11 C++11线程库(三)
-14.12 C++11线程库(四)
-14.13 C++11线程库(五)
-14.14 编程实践
-第十四讲 线程编程--编程实践提交入口
-15.1 提纲
-15.2 Internet网络协议
-15.3 套接字(一)
-15.4 套接字(二)
-15.5 编程实践
-第十五讲 网络编程--编程实践提交入口