当前课程知识点:基于Linux的C++ >  第十二讲 Linux系统编程基础 >  12.8 文件系统 >  LinuxCPP1208

返回《基于Linux的C++》慕课在线视频课程列表

LinuxCPP1208在线视频

LinuxCPP1208

下一节:LinuxCPP1209

返回《基于Linux的C++》慕课在线视频列表

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” 这个文件系统查询

你可以查询这个文件系统里的文件来获得

基于Linux的C++课程列表:

第一讲 C/C++基本语法元素

-1.1 提纲

--LinuxCPP0101

-1.2 程序设计的基本概念

--LinuxCPP0102

-1.3 简单C/C++程序介绍

--LinuxCPP0103

-1.4 程序设计的基本流程

--LinuxCPP0104

-1.5 基本语法元素

--LinuxCPP0105

-1.6 程序设计风格

--LinuxCPP0106

-1.7 编程实践

--LinuxCPP0107

-第一讲 C/C++基本语法元素--编程实践提交入口

第二讲 程序控制结构

-2.1 提纲

--LinuxCPP0201

-2.2 结构化程序设计基础

--LinuxCPP0202

-2.3 布尔数据

--LinuxCPP0203

-2.4 分支结构

--LinuxCPP0204

-2.5 break语句

--LinuxCPP0205

-2.6 循环结构

--LinuxCPP0206

-2.7 编程实践

--LinuxCPP0207

-第二讲 程序控制结构--编程实践提交入口

第三讲 函数

-3.1 提纲

--LinuxCPP0301

-3.2 函数声明、调用与定义

--LinuxCPP0302

-3.3 函数调用栈框架

--LinuxCPP0303

-3.4 编程实践

--LinuxCPP0304

-第三讲 函数--编程实践提交入口

第四讲 算法

-4.1 提纲

--LinuxCPP0401

-4.2 算法概念与特征

--LinuxCPP0402

-4.3 算法描述

--LinuxCPP0403

-4.4 算法设计与实现

--LinuxCPP0404

-4.5 递归算法(一)

--LinuxCPP0405

-4.6 递归算法(二)

--LinuxCPP0406

-4.7 容错与计算复杂度

--LinuxCPP0407

-4.8 编程实践

--LinuxCPP0408

-第四讲 算法--编程实践提交入口

第五讲 程序组织与开发方法

-5.1 提纲

--LinuxCPP0501

-5.2 库与接口

--LinuxCPP0502

-5.3 随机数库(一)

--LinuxCPP0503

-5.4 随机数库(二)

--LinuxCPP0504

-5.5 作用域与生存期

--LinuxCPP0505

-5.6 典型软件开发流程(一)

--LinuxCPP0506

-5.7 典型软件开发流程(二)

--LinuxCPP0507

-5.8 编程实践

--LinuxCPP0508

-第五讲 程序组织与开发方法--编程实践提交入口

第六讲 复合数据类型

-6.1 提纲

--LinuxCPP0601

-6.2 字符

--LinuxCPP0602

-6.3 数组(一)

--LinuxCPP0603

-6.4 数组(二)

--LinuxCPP0604

-6.5 结构体

--LinuxCPP0605

-6.6 编程实践

--LinuxCPP0606

-第六讲 复合数据类型--编程实践提交入口

第七讲 指针与引用

-7.1 提纲

--LinuxCPP0701

-7.2 指针基本概念

--LinuxCPP0702

-7.3 指针与函数

--LinuxCPP0703

-7.4 指针与复合数据类型(一)

--LinuxCPP0704

-7.5 指针与复合数据类型(二)

--LinuxCPP0705

-7.6 字符串

--LinuxCPP0706

-7.7 动态存储管理(一)

--LinuxCPP0707

-7.8 动态存储管理(二)

--LinuxCPP0708

-7.9 引用

--LinuxCPP0709

-7.10 编程实践

--LinuxCPP0710

-第七讲 指针与引用--编程实践提交入口

第八讲 链表与程序抽象

-8.1 提纲

--LinuxCPP0801

-8.2 数据抽象(一)

--LinuxCPP0802

-8.3 数据抽象(二)

--LinuxCPP0803

-8.4 链表(一)

--LinuxCPP0804

-8.5 链表(二)

--LinuxCPP0805

-8.6 链表(三)

--LinuxCPP0806

-8.7 链表(四)

--LinuxCPP0807

-8.8 函数指针(一)

--LinuxCPP0808

-8.9 函数指针(二)

--LinuxCPP0809

-8.10 抽象链表(一)

--LinuxCPP0810

-8.11 抽象链表(二)

--LinuxCPP0811

-8.12 编程实践

--LinuxCPP0812

-第八讲 链表与程序抽象--编程实践提交入口

第九讲 类与对象

-9.1 提纲

--LinuxCPP0901

-9.2 程序抽象与面向对象

--LinuxCPP0902

-9.3 类类型

--LinuxCPP0903

-9.4 对象(一)

--LinuxCPP0904

-9.5 对象(二)

--LinuxCPP0905

-9.6 类与对象的成员(一)

--LinuxCPP0906

-9.7 类与对象的成员(二)

--LinuxCPP0907

-9.8 类与对象的成员(三)

--LinuxCPP0908

-9.9 继承(一)

--LinuxCPP0909

-9.10 继承(二)

--LinuxCPP0910

-9.11 继承(三)

--LinuxCPP0911

-9.12 多态(一)

--LinuxCPP0912

-9.13 多态(二)

--LinuxCPP0913

-9.14 编程实践

--LinuxCPP0914

-第九讲 类与对象--编程实践提交入口

第十讲 操作符重载

-10.1 提纲

--LinuxCPP1001

-10.2 四则运算符重载(一)

--LinuxCPP1002

-10.3 四则运算符重载(二)

--LinuxCPP1003

-10.4 关系与下标操作符重载

--LinuxCPP1004

-10.5 赋值操作符重载(一)

--LinuxCPP1005

-10.6 赋值操作符重载(二)

--LinuxCPP1006

-10.7 赋值操作符重载(三)

--LinuxCPP1007

-10.8 赋值操作符重载(四)

--LinuxCPP1008

-10.9 赋值操作符重载(五)

--LinuxCPP1009

-10.10 流操作符重载(一)

--LinuxCPP1010

-10.11 流操作符重载(二)

--LinuxCPP1011

-10.12 流操作符重载(三)

--LinuxCPP1012

-10.13 操作符重载总结

--LinuxCPP1013

-10.14 编程实践

--LinuxCPP1014

-第十讲 操作符重载--编程实践提交入口

第十一讲 泛型编程

-11.1 提纲

--LinuxCPP1101

-11.2 泛型编程概览

--LinuxCPP1102

-11.3 异常处理机制(一)

--LinuxCPP1103

-11.4 异常处理机制(二)

--LinuxCPP1104

-11.5 运行期型式信息(一)

--LinuxCPP1105

-11.6 运行期型式信息(二)

--LinuxCPP1106

-11.7 模板与型式参数化

--LinuxCPP1107

-11.8 题外话:术语翻译

--LinuxCPP1108

-11.9 泛型编程实践(一)

--LinuxCPP1109

-11.10 泛型编程实践(二)

--LinuxCPP1110

-11.11 泛型编程实践(三)

--LinuxCPP1111

-11.12 泛型编程实践(四)

--LinuxCPP1112

-11.13 泛型编程实践(五)

--LinuxCPP1113

-11.14 泛型编程实践(六)

--LinuxCPP1114

-11.15 泛型编程实践(七)

--LinuxCPP1115

-11.16 泛型编程实践(八)

--LinuxCPP1116

-11.17 泛型编程实践(九)

--LinuxCPP1117

-11.18 泛型编程实践(十)

--LinuxCPP1118

-11.19 编程实践

--LinuxCPP1119

-第十一讲 泛型编程--编程实践提交入口

第十二讲 Linux系统编程基础

-12.1 提纲

--LinuxCPP1201

-12.2 程序执行环境(一)

--LinuxCPP1202

-12.3 程序执行环境(二)

--LinuxCPP1203

-12.4 程序执行环境(三)

--LinuxCPP1204

-12.5 程序执行环境(四)

--LinuxCPP1205

-12.6 输入输出(一)

--LinuxCPP1206

-12.7 输入输出(二)

--LinuxCPP1207

-12.8 文件系统

--LinuxCPP1208

-12.9 设备

--LinuxCPP1209

-12.10 库(一)

--LinuxCPP1210

-12.11 库(二)

--LinuxCPP1211

-12.12 makefile文件(一)

--LinuxCPP1212

-12.13 makefile文件(二)

--LinuxCPP1213

-12.14 makefile文件(三)

--LinuxCPP1214

-12.15 编程实践

--LinuxCPP1215

-第十二讲 Linux系统编程基础--编程实践提交入口

第十三讲 进程编程

-13.01 提纲

--LinuxCPP1301

-13.02 进程基本概念

--LinuxCPP1302

-13.03 信号

--LinuxCPP1303

-13.04 进程管理(一)

--LinuxCPP1304

-13.05 进程管理(二)

--LinuxCPP1305

-13.06 进程管理(三)

--LinuxCPP1306

-13.07 进程间通信(一)

--LinuxCPP1307

-13.08 进程间通信(二)

--LinuxCPP1308

-13.09 进程间通信(三)

--LinuxCPP1309

-13.10 进程间通信(四)

--LinuxCPP1310

-13.11 进程池

--LinuxCPP1311

-13.12 编程实践

--LinuxCPP1312

-第十三讲 进程编程--编程实践提交入口

第十四讲 线程编程

-14.1 提纲

--LinuxCPP1401

-14.2 线程基本概念

--LinuxCPP1402

-14.3 线程管理(一)

--LinuxCPP1403

-14.4 线程管理(二)

--LinuxCPP1404

-14.5 线程管理(三)

--LinuxCPP1405

-14.6 线程管理(四)

--LinuxCPP1406

-14.7 线程同步机制(一)

--LinuxCPP1407

-14.8 线程同步机制(二)

--LinuxCPP1408

-14.9 C++11线程库(一)

--LinuxCPP1409

-14.10 C++11线程库(二)

--LinuxCPP1410

-14.11 C++11线程库(三)

--LinuxCPP1411

-14.12 C++11线程库(四)

--LinuxCPP1412

-14.13 C++11线程库(五)

--LinuxCPP1413

-14.14 编程实践

--LinuxCPP1414

-第十四讲 线程编程--编程实践提交入口

第十五讲 网络编程

-15.1 提纲

--LinuxCPP1501

-15.2 Internet网络协议

--LinuxCPP1502

-15.3 套接字(一)

--LinuxCPP1503

-15.4 套接字(二)

--LinuxCPP1504

-15.5 编程实践

--LinuxCPP1505

-第十五讲 网络编程--编程实践提交入口

课程文档

-课程PDF文件

LinuxCPP1208笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。