Linux屏蔽了硬件的区别,把所有的硬件设备都抽象成文件,提供统一的文件接口给用户使用。
虚拟文件系统
抽象层,对文件的访问实际上是对抽象层的访问
封装了底层读写细节,使用C语言的多态来实现文件系统的接口。
普通文件系统
ext4
fat32
ubifs
特殊文件系统
进程文件系统:procfs, 挂载在/proc,存放进程相关信息《任务管理器》
设备文件系统:devfs,挂载在/dev。存放硬件操作接口
procfs是“process filesystem”的缩写,所以它 也被称为进程文件系统,procfs通常会自动挂载在根 目录下的/proc文件夹。procfs为用户提供内核状态和进程信息的接口,功能相 当于Windows的任务管理器。 在《查看系统信息》章节我们也尝试过/proc目录查看一些系统信息。
文件名 作用
pid* *表示的是进程的 PID 号,系统中当前运行的每一个进程都有对应的一个目录,用于记录进程所有相关信息。对于操作系统来说,一个应用程序就是一个进程
self 该文件是一个软链接,指向了当前进程的目录,通过访问/proc/self/目录来获取当前进程的信息,就不用每次都获取pid
thread-self 该文件也是一个软链接,指向了当前线程,访问该文件,等价于访问“当前进程pid/task/当前线程tid”的内容。。一个进程,可以包含多个线程,但至少需要一个进程,这些线程共同支撑进程的运行。
version 记录了当前运行的内核版本,通常可以使用命令“uname –r”
cpuinfo 记录系统中CPU的提供商和相关配置信息
modules 记录了目前系统加载的模块信息
meminfo 记录系统中内存的使用情况,free命令会访问该文件,来获取系统内存的空闲和已使用的数量
filesystems 记录内核支持的文件系统类型,通常mount一个设备时,如果没有指定文件系统并且它无法确定文件系统类型时,mount会尝试包含在该文件中的文件系统,除了那些标有“nodev”的文件系统。
文件名 文件内容
cmdline 只读文件,记录了该进程的命令行信息,如命令以及命令参数
comm 记录了进程的名字
environ 进程使用的环境变量
exe 软连接文件,记录命令存放的绝对路径
fd 记录进程打开文件的情况,以文件描述符作为目录名
fdinfo 记录进程打开文件的相关信息,包含访问权限以及挂载点,由其文件描述符命名。
io 记录进程读取和写入情况
map_files 记录了内存中文件的映射情况,以对应内存区域起始和结束地址命名
maps 记录当前映射的内存区域,其访问权限以及文件路径。
stack 记录当前进程的内核调用栈信息
status 记录进程的状态信息
syscall 显示当前进程正在执行的系统调用。第一列记录了系统调用号
task 记录了该进程的线程信息
wchan 记录当前进程处于睡眠状态,内核调用的相关函数