计算机操作系统教程(第四版)PPT课件:第10章 Linux文件系统

合集下载

2024版计算机操作系统第四版ppt课件

2024版计算机操作系统第四版ppt课件

分布式处理系统的应用
如云计算、大数据处理等。
分布式文件系统与数据库系统
分布式文件系统的基本概念
01
将文件分布在多个计算机节点上,通过网络进行访问和
管理。
分布式数据库系统的基本概念
02
将数据库分布在多个计算机节点上,通过网络进行访问
和管理,同时保持数据的一致性和完整性。
分布式文件系统和数据库系统的关键技术
文件共享是指多个用户或进程可以同时访问和使用同一文件。
文件保护
文件保护是指操作系统采取一定的措施,防止文件被非法访问、修 改或破坏。
共享与保护的实现方法
操作系统可以通过访问控制列表(ACL)、权限位和加密等机制来 实现文件的共享和保护。
文件操作及实现方法
文件操作
文件操作包括文件的创建、打开、读/写、定位和关闭等。
调度算法的性能评价指标
包括系统吞吐量、处理机利用率、周转时间、响应时间等。
典型的多处理机调度算法
如最短作业优先算法、最高响应比优先算法等。
分布式处理系统的特点与分类
分布式处理系统的特点
自治性、并发性、资源共享、透 明性等。
分布式处理系统的分类
根据系统中计算机的类型和互连 方式,可分为同构型分布式系统 和异构型分布式系统。
并行处理系统的基本结构 包括多个处理单元、互连网络、存储器等部件,通过相互 协作完成并行任务。
并行处理系统的分类 根据处理单元的数量和互连方式,可分为共享内存系统和 分布式内存系统。
多处理机调度算法及性能评价
多处理机调度算法的种类
包括静态调度算法和动态调度算法,其中动态调度算法又可分为集中式调度和分布式调度。
进程调度算法的实现需要考虑系统 效率、公平性和实时性等因素。

汤小丹计算机操作系统官方通用课件第四版计算机操作系统 通用课件

汤小丹计算机操作系统官方通用课件第四版计算机操作系统 通用课件

THANK YOU
感谢观看
避免死锁、检测并恢复 死锁、预防死锁。
按顺序申请资源、请求 和持有、预先分配、静 态重分配。
检测死锁、停止进程、 撤销进程、恢复进程。
避免“请求和持有”、 避免“不剥夺”。
03
内存管理
内存的基本概念
内存
01
计算机中重要的硬件资源之一,用于存储运行中的程
序和数据。
内存种类
02 RAM、ROM、Cache等。
设备管理主要是对计算机设备进行管理,包括设备的分配、使 用、维护等。
02
进程管理
进程的基本概念
1 2
进程
程序关于某个数据集合上的一次运行活动,是系 统进行资源分配和调度的基本单位。
进程的特征
独立性、并发性、异步性、结构特征。
3
进程的状态
就绪状态、等待状态、运行状态、结束状态。
进程的创建和终止
进程的创建
内存共享
02
03
内存锁定
多个程序可以共享一些公共的内 存区域,ቤተ መጻሕፍቲ ባይዱ实现数据交换和协作 。
一些关键数据和代码可以被锁定 在内存中,防止被其他程序修改 或破坏。
04
文件系统
文件的基本概念
文件
文件是计算机中存储信息的单位,由数据项、 数据格式和数据结构组成。
文件类型
根据使用需求和存储内容,文件可分为文本文 件、二进制文件、图像文件等。
01
02
03
虚拟内存
通过将内存分为多个逻辑 分区,实现了一种类似于 硬盘的内存管理方式。
页面置换算法
当内存空间不足时,操作 系统会将一些不常用的页 面置换到硬盘上,以释放 内存空间。
页面调度

《计算机操作系统第四版》

《计算机操作系统第四版》
《ቤተ መጻሕፍቲ ባይዱ算机操作系统第四版》
目 录
• 操作系统概述 • 进程管理 • 内存管理 • 文件系统 • 设备管理 • 现代操作系统的新技术
01
操作系统概述
操作系统的定义和作用
定义:操作系统是一组控制和管理计算机 软硬件资源、提供用户界面以及为应用程 序提供支持的系统软件。
为应用程序提供支持,使应用程序能够更 好地运行。
内存保护技术
界限寄存器
01
通过设置界限寄存器来保护内存,确保程序不会访问到不属于
它的内存区域。
基址寄存器和限长寄存器
02
通过基址寄存器和限长寄存器来限定程序可以访问的内存范围,
防止越界访问。
保护键
03
通过设置保护键来对内存进行保护,只有拥有相应权限的程序
才能访问对应的内存区域。
虚拟内存技术
请求分页 将程序的逻辑地址空间划分为大小相等的页面,当需要访 问某个页面时,会向系统发出请求并将该页面调入内存。
感谢观看
05
设备管理
设备管理的目标和功能
目标
方便性、并行性、均衡性、独立性
功能
设备控制、设备分配、设备处理、缓冲区管理
I/O控制方式
程序I/O方式
CPU和I/O设备串行工作,CPU在I/O 操作期间处于忙等状态
中断驱动I/O方式
CPU和I/O设备并行工作,CPU在I/O 操作期间可执行其他任务
DMA I/O方式
提供文件共享、打印服务、电 子邮件等网络服务,满足用户
需求。
云计算资源管理
对云计算环境中的计算、存储 和网络资源进行统一管理和调
度。
虚拟化技术
通过虚拟化技术实现硬件资源 的抽象和复用,提高资源利用

第10章操作系统PPT教学课件

第10章操作系统PPT教学课件
10.1.1 特点
从用户的角度看,LINUX文件系统具有 如图10.1所示的树形层次结构:
在图中,根目录root之下有dev设备子目 录,bin实用程序子目录,lib库文件子 目录,tmp临时文件子目录,usr通用子 目录等。
2020/12/10
2
常用用 户命令
操作系统核 心程序
用户文
件主目 录
库文件 子目录
2020/12/10
19
10.4 进程与文件系统的联系
从系统内部的角度来说,需要有相 应的数据结构来记录和控制打开文件 的用户进程以及记录和控制那些共享 同一文件的用户进程。为此LINUX系统 设置了用户打开文件表和系统打开文 件表。
2020/12/10
20
10.4.1 系统打开文件表
访问文件之前,进程必须打开文件, open()返回一个文件描述符,进程用 该描述符调用read和write。
用户程序既没有必要知道设备的内部 特性,也不必在更换或增加设备之后 修改自己。
2020/12/10
7
10.1.2 文件类型
6种:
1. 普通文件:存储用户和系统的有关数 据和程序的文件。
2. 它是无结构、无记录概念的字符流 式文件。
2020/12/10
8
2.目录文件 是由文件系统中的各个目录 所形成的文件。
对设备文件的读、写操作实际上为 对设备的操作,而对设备文件的保护 也将变成对设备的保护。
例如:#cp /dev/tty1 terminalread
把在第一个终端上敲进的字符(设备文件 /dev/tty1是用户终端1) 读入,并把 它们复制到文件 terminalread上。
2020/12/10
11

操作系统教程第四版(孙钟秀)全部课件

操作系统教程第四版(孙钟秀)全部课件
4
计算机系统的层次结构(1)
用户1
用户2
用户3
用户4
… 用户n
财务系统 航空订票 上网浏览 电子商务 … 科学计算 (应用软件)
编译程序 汇编程序 数据库 … 实用程序 (支撑软件)
操作系统 (系统软件)
计操算作机系硬统件 (系统软件)
5
计算机系统的层次结构(2)
• 硬件层
提供基本的可计算性资源,如处理器、寄存器、存储器 及各种I/O设备。
设设 备备
时分复用共享 空分复用共享
物理计算机
17
1.1.3 操作系统的作用与功能
➢ 操作系统的作用:对内是“管理员”,对外是“ 服务员”:
OS作为用户接口和服务提供者 OS作为作为扩展机或虚拟机 OS作为资源管理者和控制者
18
OS作为用户接口和服务提供者
• 操作系统提供友善的人机接口,使得用户能够方 便、可靠、安全、高效地使用硬件和运行应用程 序;
数据卡或数据带 • 产生计算结果,执行结果从打印机上或卡片机上
输出
38
人工操作阶段的缺点
• 用户上机独占全机资源,造成资源利用率不 高,系统效率低下
• 手工操作多,浪费处理机时间,也极易发生 差错
• 数据的输入,程序的执行、结果的输出均联 机进行,从上机到下机的时间拉得非常长
39
1.2.2 管理程序阶段(1)
算机系统的主存储器并启动进行计算的方法
从宏观上看是并行的 从微观上看是串行的
• 引入多道程序设计技术的目的:可以提高CPU的利 用率,充分发挥计算机硬件的并行性。
44
多道程序设计例(1)
时间
78
130 150
操作系统中,能分配给用户使用的硬件和软件设施 总称为资源,包括两类:硬件资源和信息资源。

计算机操作系统第四版课件

计算机操作系统第四版课件

计算机操作系统第四版课件一、教学内容本节课的教学内容选自计算机操作系统第四版教材,主要讲解操作系统的基本概念、功能和分类。

具体包括操作系统的定义、作用、进程管理、内存管理、文件管理和用户接口等方面的内容。

二、教学目标1. 使学生了解操作系统的概念,理解操作系统的基本功能和作用。

2. 培养学生掌握操作系统的基本原理,提高分析和解决实际问题的能力。

3. 增强学生对计算机操作系统的兴趣,激发其进一步学习计算机知识的热情。

三、教学难点与重点重点:操作系统的概念、功能和分类。

难点:进程管理、内存管理、文件管理等方面的原理和实现。

四、教具与学具准备教具:计算机、投影仪、黑板、粉笔。

学具:教材、笔记本、彩色笔。

五、教学过程1. 实践情景引入:以Windows操作系统为例,让学生观察并描述操作系统的启动过程,引出操作系统的概念。

2. 概念讲解:讲解操作系统的定义、作用,以及操作系统的基本功能和分类。

3. 原理分析:分析进程管理、内存管理、文件管理等方面的原理和实现。

4. 例题讲解:以Linux操作系统为例,讲解进程管理、内存管理、文件管理等方面的具体实现。

5. 随堂练习:(1)操作系统的主要功能有哪些?(2)进程管理的基本原理是什么?(3)内存管理的基本策略有哪些?(4)文件管理的主要任务是什么?6. 板书设计:操作系统的概念、功能和分类;进程管理、内存管理、文件管理的原理和实现。

7. 作业设计(1)请简要描述操作系统的启动过程。

(2)请列举操作系统的基本功能。

(3)请解释进程、线程的概念及其关系。

(4)请阐述内存管理的任务和基本策略。

(5)请描述文件管理的 main 任务。

8. 课后反思及拓展延伸本节课通过讲解操作系统的概念、功能和分类,使学生了解了操作系统的基本知识。

在讲解进程管理、内存管理、文件管理等方面的原理和实现时,要注意引导学生思考,提高其分析和解决问题的能力。

同时,激发学生对计算机操作系统的兴趣,为后续课程的学习打下基础。

汤小丹计算机操作系统官方课件第四版计算机操作系统课件PPT课件

汤小丹计算机操作系统官方课件第四版计算机操作系统课件PPT课件
第17页/共101页
3. 运行时动态链接(Run-time Dynamic Linking) 在许多情况下,应用程序在运行时,每次要运行的模块可能是不相同 的。但由于事先无法知道本次要运行哪些模块,故只能是将所有可能要运 行到的模块全部都装入内存,并在装入时全部链接在一起。显然这是低效 的,因为往往会有部分目标模块根本就不运行。比较典型的例子是作为错 误处理用的目标模块,如果程序在整个运行过程中都不出现错误,则显然 就不会用到该模块。
多层结构的存储器系统 1. 存储器的多层结构 对于通用计算机而言,存储层次至少应具有三级:最高层为CPU寄
存器,中间为主存,最底层是辅存。在较高档的计算机中,还可以根据具 体的功能细分为寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘、可 移动存储介质等6层。如图4-1所示。
第2页/共101页
• 图4-1 计算机系统存储层次示意 第3页/共101页
第30页/共101页
• 图4-9 内存回收时的情况 第31页/共101页
• 图4-10 内存回收流程 第32页/共101页
基于顺序搜索的动态分区分配算法 1. 首次适应(first fit,FF)算法 我们以空闲分区链为例来说明采用FF算法时的分配情况。FF算法要
求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查 找,直至找到一个大小能满足要求的空闲分区为止。然后再按照作业的大 小,从该分区中划出一块内存空间,分配给请求者,余下的空闲分区仍留 在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则表 明系统中已没有足够大的内存分配给该进程,内存分配失败,返回。
第4页/共101页
主存储器与寄存器 1. 主存储器 主存储器简称内存或主存,是计算机系统中的主要部件,用于保存进

OS4操作系统(第四版)课件ppt

OS4操作系统(第四版)课件ppt

逻辑地址
物理地址
… 500
1234
1500
1234
599

地址空间
1599


动态地址重定位过程
存储空间
14
4. 存储器保护
防止地址越界:进程运行时产生的所有存储 器访问地址都要进行检查,确保只访问为该 进程分配的存储区域。
正确地进行存取:对所访问的存储空间的操 作方式(读、写、执行)进行检查,以防止 由于误操作,使其数据的完整性受到破坏。
用于早期的个人计算机
…… …

1MB 0xfffff
用户 进程区

0xfffff ROM中 的OS
m
0xfffff ROM中的
设备驱动
n 用户

m RAM中
0 的OS

用户 进程区
0
进程区
m RAM中 0 的OS
现在很
掌上计算机
用于运行
少使用
嵌入式系统
MS-DOS
的计算机
19
4.3 多用户多道程序的存储分配 —— 分区分配
要扫描所有的空闲区,直到找到满足进程要 求且为最大的空闲区为止。一分为二,一部 分分给进程,另一部分仍留在链表中。
目的:使剩下的空闲区可用。 缺点:要扫描所有的空闲区;大空闲区的不
断分割,可能满足不了大进程的要求。 改进:从大到小对空闲区排序,以提高查找
速度。
37
回收一个释放区
若释放区与空闲区相邻接,要进行合并。
5
存储器管理的功能
(1)存储器分配:解决多道程序或多进程共享主存 的问题
(2)地址转换或重定位:研究各种地址变换方法及 相应的地址变换机构。

计算机操作系统第四版课件

计算机操作系统第四版课件

计算机操作系统第四版课件contents •计算机操作系统概述•进程管理•内存管理•文件系统•设备管理•操作系统安全与保护目录01计算机操作系统概述存储器管理处理机管理程控制、进程同步、进程通信和定义设备管理设备,包括设备驱动、设备无关性、缓冲管理和虚拟设备等。

文件管理早期操作系统批处理系统分时系统030201实时系统系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。

网络操作系统和分布式操作系统网络操作系统是基于计算机网络的,是在各种计算机操作系统上按网络体系结构协议标准开发的软件,包括网络管理、通信、安全、资源共享和各种网络应用;分布式操作系统是管理分布式系统资源的软件,它负责分布式系统中全部软、硬件资源的分配与调度,保证系统高效、可靠地运行,并提供各种系统服务。

计算机硬件与软件的关系硬件是计算机系统的物质基础,软件是计算机系统的灵魂。

没有软件的计算机被称为“裸机”,裸机是无法工作的。

硬件和软件相互依存,缺一不可。

硬件和软件协同发展,共同推动计算机技术的进步。

随着半导体技术、集成电路技术和微处理器技术的发展,计算机硬件的性能不断提高,成本不断降低,使得计算机软件的开发和应用得以广泛普及。

同时,软件技术的不断发展也促进了硬件技术的不断进步,例如操作系统的发展推动了计算机体系结构的变革,数据库技术的发展促进了存储技术的进步等。

02进程管理进程的概念与特性010203进程的状态与转换进程的状态就绪状态、执行状态、阻塞状态。

进程的状态转换就绪->执行、执行->阻塞、阻塞->就绪。

进程状态转换的原因时间片到、等待事件发生、资源分配等。

进程控制块PCB PCB包含的信息PCB的作用1 2 3进程同步进程通信实现进程同步与通信的机制进程同步与通信03内存管理位于CPU 内部,速度最快,容量最小,用于存放指令和数据。

寄存器高速缓存(Cache )主存(内存)磁盘(外存)位于CPU 和主存之间,速度较快,容量较小,用于存放CPU 近期可能用到的数据和指令。

计算机操作系统(第4版)课件:文件管理

计算机操作系统(第4版)课件:文件管理
21
文件管理
1. 按文件是否有结构分类 1) 有结构文件 (1) 定长记录。 (2) 变长记录。
22
文件管理
2) 无结构文件 如果说在大量的信息管理系统和数据库系统中,广泛采 用了有结构的文件形式的话(即文件是由定长或变长记录构 成的),那么在系统中运行的大量的源程序、可执行文件、 库函数等,所采用的就是无结构的文件形式,即流式文件。 其文件的长度是以字节为单位的。对流式文件的访问,则是 利用读、写指针来指出下一个要访问的字符。可以把流式文 件看做是记录式文件的一个特例:一个记录仅有一个字节。
29
文件管理
7.2.4 索引文件(Index File) 1. 按关键字建立索引 定长记录的文件可以通过简单的计算,很容易地实现随
机查找。但变长记录文件查找一个记录必须从第一个记录查 起,一直顺序查找到目标记录为止,耗时很长。
30
文件管理
图7-4 具有单个和多个索引表的索引文件
31
文件管理
2. 具有多个索引表的索引文件 使用按关键字建立索引表的索引文件与顺序文件一样, 都只能按该关键字进行检索。而实际应用情况往往是:不同 的用户,为了不同的目的,希望能按不同的属性(或不同的 关键字)来检索一条记录。为实现此要求,需要为顺序文件 建立多个索引表,即为每一种可能成为检索条件的域(属性 或关键字)都配置一张索引表。在每一个索引表中,都按相 应的一种属性或关键字进行排序。
43
文件管理
3) 使用信息类 使用信息类包括文件的建立日期和时间、文件上一次修 改的日期和时间,以及当前使用信息。这些信息包括当前已 打开该文件的进程数,是否被其它进程锁住,文件在内存中 是否已被修改但尚未拷贝到盘上等。应该说明,对于不同OS 的文件系统,由于功能不同,可能只含有上述信息中的某些 部分。

OS10《操作系统》课件

OS10《操作系统》课件
19
每个进程最多同时打开的文件数为1024个。
12
进程打开文件的过程e_info
fs files
files_struct file
fd_array[]
f_list f_dentry
f_op f_pos f_count
i_data[15]
dentry inode
d_inode d_op
第10章 Linux 虚拟文件系统
北京理工大学计算机学院
1
VFS与具体文件系统的关系
Shell命令和应用程序 VFS
用户态 核心态
Minix Ext2 UFS FAT NTFS
2
VFS
VFS的主要思想在于引入一个通用的文件模 型,该模型能够表示其支持的所有文件系统。
VFS所涉及的所有数据结构在系统运行时才 在内存建立,在磁盘上没有存储。
5
Ext2 在内存的超级块结构ext2_sb_info NTFS在内存的超级块结构ntfs_sb_info
6
10.1.3 文件对象
struct file {
struct list_head f_list; 文件对象链表
struct dentry *f_dentry; 指向目录项对象
atomic_t f_count; 该对象的引用计数
3
10.1 VFS的数据结构
超级块对象:Linux为每个安装好的文件系统 都建立一个超级块对象。
索引节点对象:打开的文件对应的…。 目录项对象:dentry (directory entry) 文件对象:记录了进程与打开的文件之间的交
互信息。
进程1 进程2 进程3
文件对象 文件对象 文件对象
……}
内嵌于ext2_inode_info结构。

《Linux操作系统实用教程》教学课件第十章

《Linux操作系统实用教程》教学课件第十章

10.1 常见的攻击类型
2. 嗅探 嗅探技术是一种重要的网络安全攻防技术,攻击者可以通过嗅
探技术以非常隐蔽的方式攫取网络中的大量敏感信息,与 主动扫描相比,嗅探更加难以被发觉,也更加容易操作和 实现。对于网络管理员来说,借助嗅探技术可以对网络活 动进行实时监控,发现网络中的各种攻击行为。
嗅探操作的成功实施是因为以太网的共享式特性决定的。由于 以太网是基于广播方式传输数据的,所有的物理信号都会 被传送到每一个网络主机结点,而且以太网中的主机网卡 允许设置成混杂接收模式,在这种模式下,无论监听到的 数据帧的目的地址如何,网卡都可以予以接收。更重要的 是,在TCP/IP协议栈中网络信息的传递大多是以明文传输 的,这些信息中往往包含了大量的敏感信息,比如邮箱、F TP或telnet的账号和口令等,因此使用嗅探的方法可以获 取这些敏感信息。
处于网络中的主机,如果发现网络出现了数据包丢失率很高或 网络带宽长期被网络中的某台主机占用,就应该怀疑网络 中是否存在嗅探器。
3. 木马
木马又称特洛伊木马,是一种恶意计算机程序,长期驻留在目 标计算机中,可以随系统启动并且秘密开放一个甚至多个 数据传输通道的远程控制程序。木马程序一般由客户端(Cli ent)和服务器端(Server)两部分组成,客户端也称为控制 端,一般位于入侵者计算机中,服务器端则一般位于用户 计算机中。木马本身不带伤害性,也没有感染能力,所以 木马不是病毒。
10.1 常见的攻击类型
1)蠕虫(worm)病毒 1988年Morris蠕虫爆发后,Eugene H. Spafford给出了蠕
虫的定义:“计算机蠕虫可以独立运行,并能把自身的一 个包含所有功能的版本传播到另外的计算机上”。和其他 种类的病毒相比,在Linux平台下最为猖獗的就是蠕虫病毒, 如利用系统漏洞进行传播的ramen、lion、Slapper等,都 曾给Linux系统用户造成了巨大的损失。随着Linux系统应 用越广泛,蠕虫的传播程度和破坏能力也会随之增加。 2)可执行文件型病毒 可执行文件型病毒是指能够感染可执行文件的病毒,如Lindo se。这种病毒大部分都只是企图以感染其他主机程序的方 式进行自我复制。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的操作。
为了帮助读者更好地理解这一过程,笔者用一个具体的例子 来说明:我们准备将来自主硬盘第 2 分区(hda2)上的 ext2 文件 系统安装到前面创建的 "/dev" 目录中。那么对于 sys_mount()
函数的调用便具体为:
sys_mount(“hda2”,“/dev ”,“ext2”,…);
3 中 "/" 目录对应的 dentry 结构中,由链表实现这一关系。接下来会再分配一个 struct inode 结构。Inode 中的 i_sb 和 dentry 中的 d_sb 分别都指向图 3 中的 sb,这
样看来,在同一文件系统下建立新的目录时并不需要重新分配一个超级块结构, 因为毕竟它们都属于同一文件系统,因此一个文件系统只对应一个超级块。
# mount -t msdos /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/cdrom /mnt/cdrom 现在就可以进入/mnt/winc等目录读写这些文件系统了。
描述在 VFS 的目录树中向其中某个目录(安装点 mount point)上挂载(mount)一 个文件系统的过程。
第10章 Linux文件系统
10.1Linux文件系统的特点与文件类别 10.1.1 特点
10.1.2文件类型
10.2Linux的虚拟文件系统 10.2.1 虚拟文件系统VFS框架
进程管理、内存管理子系统
MINIX
VFS EXT2
MSDOS
VFS 是一种软件机制,也许称它为 Linux 的文件系统管理者更确切点,与它相关 的数据结构只存在于物理内存当中。所以在每次系统初始化期间,Linux 都首先 要在内存当中构造一棵 VFS 的目录树(在 Linux 的源代码里称之为 namespace),实 际上便是在内存中建立相应的数据结构。VFS 目录树在 Linux 的文件系统模块中 是个很重要的概念,希望读者不要将其与实际文件系统目录树混淆,VFS 中的各 目录其主要用途是用来提供实际文件系统的挂载点,当然在 VFS 中也会涉及到文
件级的操作,本文不阐述这种情况。一种可能的目录树在内存中的影像:
10.2.2 Linux虚拟文件系统的数据结构 1. VFS的超级块 super_block
2. 索引节点 inode
3. 文件 file
4. 目录项dentry
10.2.3VFS的系统调用
10.3文件系统的注册和挂装
录 (struct dentry)dentry,并将 dentry 中的 d_sb 指针指向 sb, d_inode 指针指向 inode。
6) 将 mnt 中的 mnt_sb 指针指向 sb,mnt_root 和 mnt_mountpoint 指针指向 dentry,而 mnt_parent指针则指向自
读者可在图 3 的基础上参看图 4)。
需要强调一点的是,既然 rootfs 文件系统被 mount 到了 VFS 树上,那么它在 sys_mkdir 的过程中必然会参与进来,事实上
在整个过程中,rootfs 文件系统中的 ramfs_mkdir、 ramfs_lookup 等函数都曾被调用过。
10.3.4挂装一般文件系统
这样,当调用 sys_mkdir 成功地在 VFS 的目录树中新建立一 个目录 "/dev" 之后,在图 3 的基础上,新的数据结构之间的 关系便如图 4 所示。图 4 中颜色较深的两个矩形块 new_inode 和 new_entry 便是在sys_mkdir() 函数中新分配的内存结构,至 于图中的 mnt,sb,dentry,inode 等结构,仍为图 3 中相应的数据 结构,其相互之间的链接关系不变(图中为避免过多的链接曲 线,忽略了一些链接关系,如 mnt 和 sb,dentry之间的链接,
身。
这样,当 do_kern_mount() 函数返回时,以上分配出来的各数 据结构和 rootfs 文件系统的关系将如上图 3 所示。
VFS 下目录的建立
为了更好地理解 VFS,下面我们用一个实际例子来看看 Linux 是 如何在 VFS 的根目录下建立一个新的目录 "/dev" 的。
要在 VFS 中建立一个新的目录,首先我们得对该目录进行搜索, 搜索的目的是找到将要建立的目录其父目录的相关信息,因为" 皮之不存,毛将焉附"。比如要建立目录 /home/ricard,那么首先 必须沿目录路径进行逐层搜索,本例中先从根目录找起,然后在 根目录下找到目录 home,然后再往下,便是要新建的目录名
在这个场景里,do_kern_mount() 做的工作主要是:
1)调用 alloc_vfsmnt() 函数在内存里申请了一块该类型的 内存空间(struct vfsmount *mnt),并初始化其部分成员
变量。
2) 调用 get_sb_nodev() 函数在内存中分配一个超级块结 构 (struct super_block) sb,并初始化其部分成员变量,将
成员 s_instances 插入到 rootfs 文件系统类型结构中的 fs_supers 指向的双向链表中。
3) 通过 rootfs 文件系统中的 read_super 函数指针调用 ramfs_read_super() 函数。还记得当初注册rootfs 文件系统 时,其成员 read_super 指针指向了 ramfs_read_super() 函数,
ricard,那么前面讲得要先对目录搜索,在该例中便是要找到 ricard 这个新目录的父目录,也就是 home 目录所对应的信息。
当然,如果搜索的过程中发现错误,比如要建目录的父目录并不 存在,或者当前进程并无相应的权限等等,这种情况系统必然会
调用相关过程进行处理,对于此种情况,本文略过不提。

这里的大体过程是:新分配了一个 struct dentry 结构的内存空间, 用于记录 dev 目录所对应的信息,该dentry 结构将会挂接到其父目录中,也就是图
统则是 VFS 存在的基础。一般文件系统的注册都是通过 module_init 宏以及 do_initcalls() 函数来完成(读者可通过阅读 module_init 宏的声明及 arch\i386\vmlinux.lds 文件来理解这一 过程),但是 rootfs 的注册却是通过 init_rootfs() 这一初始化函 数来完成,这意味着 rootfs 的注册过程是 Linux 内核初始化阶
10.3.1文件系统注册
这里的文件系统是指可能会被挂载到目录树中的各个实际文件系统,所谓实际文 件系统,即是指VFS 中的实际操作最终要通过它们来完成而已,并不意味着它们
一定要存在于某种特定的存储设备上。比如在笔者的 Linux 机器下就注册有 “rootfs”、“proc”、“ext2”、“sockfs” 等十几种文件系统。
段不可分割的一部分。
init_rootfs() 通过调用 register_filesystem(&rootfs_fs_type) 函数 来完成 rootfs 文件系统注册的,其中rootfs_fs_type 定义如下:
VFS 目录树的建立
既然是树,所以根是其赖以存在的基础,本节阐述 Linux 在初始化阶段是如何建立根结点 的,即 "/"目录。这其中会包括挂载 rootfs 文件系统到根目录 "/" 的具体过程。构造根目录
参见图2.
4) ramfs_read_super() 函数调用 ramfs_get_inode() 在内存中 分配了一个 inode 结构 (struct inode) inode,并初始化其部
分成员变量,其中比较重要的有 i_op、i_fop 和 i_sb:
5) ramfs_read_super() 函数在分配和初始化了 inode 结构之后, 会调用 d_alloc_root() 函数来为 VFS的目录树建立起关键的根目
这一过程可简单描述为:将某一设备(dev_name)上某一文件系统 (file_system_type)安装到VFS目录树上的某一安装点(dir_name)。它要解决的问 题是:将对 VFS 目录树中某一目录的操作转化为具体安装到其上的实际文件
系统的对应操作。
比如说,如果将 hda2 上的根文件系统(假设文件系统类型为 ext2)安 装到了前一节中新建立的 "/dev" 目录上(此时,"/dev" 目录就成为了 安装点),那么安装成功之后应达到这样的目的,即:对 VFS 文件 系统的 "/dev" 目录执行 "ls" 指令,该条指令应能列出 hda2 上 ext2 文件系统的根目录下所有的目录和文件。很显然,这里的关键是如 何将对 VFS 树中 "/dev" 的目录操作指令转化为安装在其上的 ext2 这一实际文件系统中的相应指令。所以,接下来的叙述将抓住如何 转化这一核心问题。在叙述之前,读者不妨自己设想一下 Linux 系 统会如何解决这一问题。记住:对目录或文件的操作将最终由目录 或文件所对应的 inode 结构中的 i_op 和 i_fop 所指向的函数表中对 应的函数来执行。所以,不管最终解决方案如何,都可以设想必然 要通过将对 "/dev" 目录所对应的 inode 中 i_op 和 i_fop 的调用转换 到 hda2 上根文件系统 ext2 中根目录所对应的 inode 中 i_op 和 i_fop
所谓的安装系统链表。
在把这些函数调用后形成的数据结构关系理清楚之后,让我们回到本章节开始提到 的问题,即将 ext2 文件系统安装到了 "/dev " 上之后,对该目录上的操作如何转化为 对 ext2 文件系统相应的操作。从图 5上看到,对 sys_mount() 函数的调用并没有直接 改变 "/dev " 目录所对应的 inode (即图中的 new_inode变量)结构中的 i_op 和 i_fop 指 针,而且 "/dev " 所对应的 dentry(即图中的 new_dentry 变量)结构仍然在 VFS 的目录 树中,并没有被从其中隐藏起来,相应地,来自 hda2 上的 ext2 文件系统的根目录
相关文档
最新文档