树莓派高阶课程4:文件系统认知及虚拟文件系统,Linux内核框图

文件系统认知及虚拟文件系统,Linux内核框图

一. 文件系统

1.什么是文件系统?

常规认知:根目录
文件系统是操作系统用于明确存储设备上组织文件的方法
以上说的方法:就是文件管理系统,简称:文件系统。

2.文件系统的种类有哪些?

FAT VFAT NTFS EXT1/2/3/4 HFS …
Windows:-----属性----文件系统:NTFS
Linux:指令: df _T----文件系统:EXT4
树莓派查看文件系统的命令:df -T
VFAT : boot(bootloader kernel)
EXT4: 根目录
TMPFS: 内存文件系统

3.什么是分区?

Windows:随意,面向普通使用者
C(装系统的位置,也可以存放文件),D,E盘
Linux:面向开发者
按照功能严格存放文件,每个分区严格存放文件
嵌入式系统可以分为4个区,
分别是
bootloader :启动代码
para :启动代码向内核传递参数的位置
kernel :内核分区
根分区等 :文件系统结构

Windows:文件路径连续
Linux:文件路径不连续

4.什么是文件系统目录结构?

文件系统目录结构:从根目录开始,用/来表示。
文件名称区分大小写,以.开头的为隐藏文件,路径用/来进行分割(windows中使用\来分割),
文件有两个种类:元数据与数据本身.在操作linux系统时,通常会遵循以下的分层结构规则:
LSB (Linux Standard Base) / FHS(Filesystem Hierarchy Standard)

在这里插入图片描述
/ 所有linux操作系统的顶点目录,不像windows,每个分区都有一个顶点目录

扫描二维码关注公众号,回复: 12082050 查看本文章

/boot 存放系统启动时相关的文件,比如kernel内核,grub引导菜单.(不要删除.)

/bin 存放的都是命令,但仅普通用户能执行

/sbin 超级管理员能执行的命令.

/home 存放普通用户的家目录

/root 超级管理员的家目录,普通用户是无法进入

/etc 存放配置文件的目录,

/etc/hostname 主机名

/etc/hosts 本地解析域名一种方式

/etc/sysconfig/network-script/ifcfg-* 网卡的配置文件

/dev 设备目录,硬盘\硬盘的分区\光盘…

/dev/null 黑洞,接收所有的东西,只进不出

/dev/zero 摇钱树,可以生产源源不断的数据

/dev/random 产生随机数的一个设备

/dev/pts/0 虚拟的Bash Shell终端,提供给远程用户使用 0,代表一个终端 1代表2个终端 以此类推

/usr 类似于windows的C盘下面的windows目录

/usr/lib 共享库文件,后缀都是so结尾, share object

/usr/lib64 共享库文件64位,后缀都是so结尾, share object

/usr/local 早起大家都把软件放在这个目录下,和windows C:\ProgramFile

/usr/bin

/usr/sbin

/var 存放一些可变化的内容,比如/var/log日志,可以人为让其发生变化,也或者是随着时间推移产生变化

/tmp 存放临时文件,无论哪个用户都可以放

/proc 反馈当前运行的进程的状态信息.

/run 存放程序运行后所产生的pid文件

/media

/mnt 提供挂载的一个目录

/opt 早期第三方厂商的软件存放的目录.

/srv 物理设备产生的一些文件
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

常规认知:根目录,不是分区,与Windows不同

参考博文:
Linux文件系统与目录结构

5.什么是虚拟文件系统?

虚拟文件系统(vfs):就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用的接口。

6.虚拟文件系统有什么作用?

简化应用程序员的开发,
不管是什么文件类型:不管文件是磁盘还是设备,都只用open read write统一操作。

在这里插入图片描述

Linux系统内核框图:

在这里插入图片描述
其中可以看到三个层次:硬件级、内核级和用户级。
用户程序通过陷入完成由用户态到内核态的转换。系统调用作为用户级与内核级交互方式,分为2部分:与文件子系统的交互和与进程控制子系统的交互。
文件子系统管理文件。包括:分配文件空间、管理空闲空间、控制对文件的存取以及为用户检索数据。
进程控制子系统负责进程同步、进程间通信、进程调度和存储管理。

Linux内核主要包括5个模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。
1.进程调度模块:用来负责控制进程对CPU资源的使用。
2.内存管理模块:用于确保所有进程能够安全地共享机器主内存区。
3.文件系统模块:用于支持对外部设备的驱动和存储。(一些皆文件)
4.进程间通信模块:用于支持多种进程间的信息交换方式。通过系统调用实现进程间的信息交换。
5.网络接口模块:提供多种网络通信标准的访问并提供对多种网络硬件的支持。
所有的模块都要通过进程调度来运行

补充:Linux系统内核框图
流程图型:
在这里插入图片描述圆型:

在这里插入图片描述

什么是Linux shell?

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果

== 参考文章==:写的很好
带你真正认识Linux 系统结构

猜你喜欢

转载自blog.csdn.net/weixin_40734514/article/details/108771534