Linux内核分析与应用8-文件系统

简介: Linux内核分析与应用8-文件系统

微信截图_20230926015726.png

8.1 虚拟文件系统的引入

微信截图_20230926015734.png

微信截图_20230926015740.png

Linux文件系统中最重要的一个概念: 索引节点 Inode

微信截图_20230926015815.png

微信截图_20230926015822.png

微信截图_20230926015833.png

文件系统是具体到分区的,所以不同分区格式化时,可以是不同的文件系统类型

微信截图_20230926015846.png

微信截图_20230926015856.png

微信截图_20230926015906.png

ext2,ext3,ext4是Linux的标准文件系统,系统将其磁盘分区作为系统的根文件系统; 除此以外的文件系统则安装在根目录系统下的某个目录中,称为系统树形结构中的一个分支.

微信截图_20230926020010.png

VFS中的"S"是"switch"开关,而不是"system"

微信截图_20230926020020.png

微信截图_20230926020029.png

思考:

虚拟文件系统VFS与实际文件系统到底是什么关系?




8.2 虚拟文件系统(VFS)中的主要数据结构

微信截图_20230926020107.png

微信截图_20230926020115.png

image.png

image.png

本讲介绍了文件系统的四种对象,每个对象都对应有两个数据结构,即对象的属性和其操作方法,这是面向对象思想在文件系统设计中的一种体现.


思考:

给定一个文件名,通过文件系统的数据结构关系图,如何查找到相关的文件?请初步阅读open源代码.



8.3 虚拟文件系统(VFS)中的各种缓存

微信截图_20230926020144.png

在文件系统中,有四种类型的缓冲区

image.png

cat /proc/meminfo

微信截图_20230926020249.png

微信截图_20230926020300.png

微信截图_20230926020308.png

dcache用于把路径转换为索引节点(Inode)

inode cache用于表示文件系统中的文件或目录


打开文件的核心是"查找"

  1. 查找根目录信息
  2. 循环查找路径名后续分量
  3. 微信截图_20230926020411.png
  4. 微信截图_20230926020417.png
  5. HashTable和LRU

微信截图_20230926020426.png

微信截图_20230926020432.png

微信截图_20230926020439.png

Buffer Cache也用到了LRU

微信截图_20230926020524.png

微信截图_20230926020531.png

image.png

image.png

思考:

给定一个文件名,如何查找到相关的文件?继续阅读open的源代码,并说明缓冲区到底起什么作用



8.4 页高速缓存机制以及读写

微信截图_20230926020555.png

大小是2的n次方个扇区,如1k,2k,4k,4M等

微信截图_20230926020717.png

微信截图_20230926020724.png

微信截图_20230926020731.png

image.png

延迟写技术

微信截图_20230926020747.png

思考:

请分析从一个文件读取数据的过程,page cache到底起什么作用?

目录
相关文章
|
10天前
|
算法 Linux 调度
深入理解Linux内核调度器:从基础到优化####
本文旨在通过剖析Linux操作系统的心脏——内核调度器,为读者揭开其高效管理CPU资源的神秘面纱。不同于传统的摘要概述,本文将直接以一段精简代码片段作为引子,展示一个简化版的任务调度逻辑,随后逐步深入,详细探讨Linux内核调度器的工作原理、关键数据结构、调度算法演变以及性能调优策略,旨在为开发者与系统管理员提供一份实用的技术指南。 ####
45 4
|
5天前
|
算法 Linux 开发者
Linux内核中的锁机制:保障并发控制的艺术####
本文深入探讨了Linux操作系统内核中实现的多种锁机制,包括自旋锁、互斥锁、读写锁等,旨在揭示这些同步原语如何高效地解决资源竞争问题,保证系统的稳定性和性能。通过分析不同锁机制的工作原理及应用场景,本文为开发者提供了在高并发环境下进行有效并发控制的实用指南。 ####
|
11天前
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
53 8
|
13天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
40 9
|
12天前
|
缓存 负载均衡 Linux
深入理解Linux内核调度器
本文探讨了Linux操作系统核心组件之一——内核调度器的工作原理和设计哲学。不同于常规的技术文章,本摘要旨在提供一种全新的视角来审视Linux内核的调度机制,通过分析其对系统性能的影响以及在多核处理器环境下的表现,揭示调度器如何平衡公平性和效率。文章进一步讨论了完全公平调度器(CFS)的设计细节,包括它如何处理不同优先级的任务、如何进行负载均衡以及它是如何适应现代多核架构的挑战。此外,本文还简要概述了Linux调度器的未来发展方向,包括对实时任务支持的改进和对异构计算环境的适应性。
34 6
|
13天前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
32 5
|
13天前
|
算法 Unix Linux
深入理解Linux内核调度器:原理与优化
本文探讨了Linux操作系统的心脏——内核调度器(Scheduler)的工作原理,以及如何通过参数调整和代码优化来提高系统性能。不同于常规摘要仅概述内容,本摘要旨在激发读者对Linux内核调度机制深层次运作的兴趣,并简要介绍文章将覆盖的关键话题,如调度算法、实时性增强及节能策略等。
|
13天前
|
Java Linux Android开发
深入探索Android系统架构:从Linux内核到应用层
本文将带领读者深入了解Android操作系统的复杂架构,从其基于Linux的内核到丰富多彩的应用层。我们将探讨Android的各个关键组件,包括硬件抽象层(HAL)、运行时环境、以及核心库等,揭示它们如何协同工作以支持广泛的设备和应用。通过本文,您将对Android系统的工作原理有一个全面的认识,理解其如何平衡开放性与安全性,以及如何在多样化的设备上提供一致的用户体验。
|
13天前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
31 2
|
Linux 网络协议 调度
Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解。
1775 0
下一篇
无影云桌面