当前位置: 首页 > news >正文

Linux文件系统简介

目录

概念

一切皆文件

Linux文件目录

常见的Linux文件系统类型

读取文件流程示例


概念

Linux文件系统指的是Linux操作系统用于组织和管理硬盘上文件的方法和数据结构。

一切皆文件

在Linux中,几乎所有资源(如硬件设备、进程间通信通道、网络连接等)都被抽象为文件或文件描述符。这种设计使得我们可以使用统一的接口(如open、read、write、close等)来操作各种不同的资源。

文件:在Linux的抽象中,文件是一种资源的抽象。每个文件都有一个对应的inode结构或类似的内核数据结构(如设备、管道等)来描述它。

文件描述符:当进程打开一个文件时,内核会返回一个文件描述符,它是一个非负整数,是进程级文件描述表的一个索引。每个文件描述符对应一个打开的文件,内核会为每个打开的文件维护一个文件描述符表,通过这个表可以找到对应的文件对象(file结构体)。

比如:当你打开一个文件(比如 /home/test.txt)时,内核会创建一个文件对象(代表打开的文件),然后返回一个文件描述符(比如3)给进程。之后,进程就可以通过文件描述符3来读写这个文件。

文件主要包括:

①普通文件:文本、图片、程序;

②目录:包含其他文件的文件,内容是文件名和对应inode编号的映射表,详解见硬链接和软链接;

③设备文件:硬盘是/dev/sda、键盘是/dev/input等,它们有对应的设备驱动,当对设备文件进行读写时,内核会调用相应的驱动函数;

④进程和内核信息:在/proc目录下,将进程的信息以文件的形式暴露给用户空间,在/sys目录下,将内核信息以文件的形式暴露给用户空间;

⑤网络套接字:是网络通信的端点,它是操作系统提供给应用程序的一个编程接口,允许不同计算机上的进程通过网络进行数据交换;

⑥管道:创建的管道本质是一块内存缓冲区,对于Shell来说就是两个文件描述符。

Linux文件目录

目录路径

用途说明

/

根目录,整个文件系统的起点

/bin

基本用户命令二进制文件。包含所有用户都可用的命令,如ls、cp

/boot

启动引导程序文件。包含内核、RAM disk镜像和引导加载程序的文件

/dev

设备文件。包含代表硬件设备或虚拟设备的特殊文件,如/dev/sda(第一块硬盘)

/etc

系统配置文件。包含所有硬件程序的配置文件,如/etc/passwd(用户密码)

/home

用户主目录。每个普通用户在此都有一个以自己用户名命名的子目录,用于存放个人文件和数据

/lib

基本共享库。为/bin和/sbin中的程序提供必要的库文件

/meida

可移动媒体挂在带你。系统自动将U盘、光盘等挂载到此目录下

/mnt

临时挂载点。

/opt

可选应用软件包。通常用于安装第三方应用程序

/proc

进程和内核信息文件系统

/root

root用户的主目录

/sbin

系统管理命令二进制文件。包含系统管理命令,只有root用户才能执行,如fdisk、idconfig

/tmp

临时文件。所有用户都可在此创建临时文件,系统重启后可能会被清空

/usr

用户程序和数据。包含绝大部分用户应用程序和文件

/var

可变数据文件。存放经常变化的文件,如日志、缓存

常见的Linux文件系统类型

Linux内核支持多种文件系统,它们负责在磁盘上实际组织和存储数据。一下是常见类型:

Ext4:最广泛使用、最稳定的文件系统,是Ext3的升级版,良好的性能和可靠性,支持日志功能;

XFS:高性能的日志文件系统,擅长处理大文件和高并发I/O操作。常用于企业级服务器;

Btrfs:很年轻的、功能丰富的写时复制文件系统。支持快快照等高级特性;

ZFS:有Linux版本,提供强大的数据管理功能。

读取文件流程示例

用户 -> Shell(或其他应用) -> 系统调用 -> 内核 -> 硬件

①用户输入命令

cat document.txt

②shell解析命令

Bash Shell 接收到键盘输入;

解析命令:可执行程序cat + 参数 document.txt;

在$PATH环境变量中查找cat程序的位置;

找到/bin/cat。

③请求内核并执行

// Shell通过系统调用请求内核
1. fork()     // 创建新进程:内核创建Shell进程的完整副本作为子进程。2. exec()     // 内核检查可执行文件的权限;加载可执行文件(/bin/cat)的代码和数据到内存;设置进程的代码段、数据段等;开始执行cat的main函数。3. open()     // 打开document.txt文件:解析路径,找到文件的inode;检查权限;创建文件描述符,返回给cat程序。4. read()     // 从文件中读取数据:通过文件描述符找到文件的inode;检查页面缓存,如果缓存命中则直接返回数据;否则,从磁盘读取数据到页面缓存,再返回给用户空间。磁盘I/O:硬盘磁头移动,数据读取到内存5. write()    // 将读取到的数据写入标准输出(文件描述符1)。

④内核处理标准输出

文件描述符1指向终端设备;

终端驱动接收字符数据;

在终端显示器上渲染文本;

用户看到文件内容显示在屏幕上。

http://www.dtcms.com/a/585478.html

相关文章:

  • 人工智能:卫星网络的“智慧中枢“
  • 网站底部导航菜单自己搞网站建设
  • 百度测开面经(分类版)
  • 回归、分类、聚类
  • 【Linux网络】Socket编程TCP-实现Echo Server(上)
  • 关系型数据库-PostgreSQL
  • 英文网站定制哪家好wordpress上传主题提示要ftp
  • Vue 项目实战《尚医通》,已有医院数据的 TS 类型定义,笔记12
  • UE5 C++ 进阶学习 —— 02 - 小案例
  • Linux的waitpid函数:深入解析与应用实践
  • 历史数据分析——洛阳钼业
  • MySQL EXPLAIN 详解与优化指南
  • ADB 无线调试 APP 完全攻略(2025 最新版)—— 从连接到查看日志,一文搞定!
  • 商家入驻网站建设免费网站怎么做
  • C语言数据结构之堆
  • VIVO算法/大模型面试题及参考答案
  • 临海网站制作好了如何上线网站开发的要求
  • KingbaseES:从MySQL兼容到权限隔离与安全增强的跨越
  • 网站改版竞品分析怎么做可以先做网站再开公司吗
  • Go语言基础:语言特性、语法基础与数据类型
  • 解决 PyQt5 中 sipPyTypeDict() 弃用警告的完整指南
  • 内网门户网站建设要求西安摩高网站建设
  • github访问响应时间过长解决
  • Spring AoP的切点匹配
  • Cookie 与 Session 全解析:从属性原理到核心逻辑,吃透 Web 状态保持
  • STM32HAL库-F1内部Flash读写操作(官网驱动)
  • 辛集建设网站网络营销推广渠道
  • 外国排版网站企业名录2019企业黄页
  • 微信小程序开发实战:图片转 Base64 全解析
  • 秒杀-订单创建消费者CreateOrderConsumer