文章目录
一、文件系统
1、文件系统概述
学术定义:文件系统是操作系统用于明确存储设备的文件和数据结构,即在存储设备上组织文件的方法。
常规认知:根目录 cd /
文件系统种类
文件的格式又有FAT,HFS,…
常见的:
比如,windows用的是NTFS。
树莓派的有:
df -T
什么是分区
windows对于分区的管理较为“随意”,因为其面向普通PC用户。C,D盘随意存放文件。
而linux较为严格,按照功能来分区,大多面向开发者。
简单理解windows和linux文件系统的区别
在windows下会有驱动器盘符(C,D,E等),某个文件确切的存在于某个盘符中,占用一段连续的存储空间。
在linux下没有盘符的概念,所有的文件都在根目录(/),通过cd /指令进入。(cd或者cd ~ 进入的是工作目录home)下。可以理解为所有文件都分散到整个磁盘上,你看到的同一个文件夹下内容可能来自于不同的分区。
2、文件系统结构
要求熟悉且记忆。
在Linux系统中,目录被组织成一个单根倒置树结构,文件系统从根目录开始,用/来表示,是按照功能划分的。
/etc目录下可以设置开机启动程序
为什么KTV的点歌机开机就是点歌界面,而不是linux的启动界面,通过配置更改。
例如要设置智能家居的程序,当芯片上电后自动运行,而不是还去拿电脑去开始运行。
复制可执行文件的绝对路径,例如:
/home/pi/wiringPi/a.out
粘贴到etc目录下的rc.local的exit 0之前。
要加超级用户权限,否则只能进行只读操作
sudo vi /etc/rc.local
这里可以看到之前的开机自动配置ip地址的操作。
/proc目录举例
可以在这个目录下查看cpu的更详细的信息
cat /proc/cpuinfo
processor是核心,有n个就是n核cpu
也可以在这个目录下查看内存的相关信息
cat /proc/meminfo
绝对路径与相对路径:
绝对路径 :以/开始,表示该文件从根目录开始的完整位置路径,必须以根开始。
相对路径 :不以/开始,指该文件相对于该目录的路径或某个目录的路径,不以根开始。可以作为一个简短的形式来指定一个文件名。
二、虚拟文件系统
1、定义
VFS是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用接口
2、有什么作用?
文件对应的分区可能不一样,有的来自ext4,或者tmps。即为文件系统的类型可能不一样,数据存储的方式不一样,访问方式也就不一样,没办法做到操作统一化,给编程开发带来困难。
而虚拟文件系统的存在正是解决了这个问题:简化上层应用程序员的开发,不管是什么文件类型,磁盘还是设备,通通都是用open,read,write统一操作。
3、cp指令的实现
用户输入以下指令:
cp /floppy/TEST /tmp/test
4、从系统编程,从上层到底层来看
如果从分区的角度,串口操作的就是/dev;普通文件如 .config在ext4上;共享内存 tmpfs dev/shm…
之前所学的Linux系统编程,各种应用层的知识,vfs都提供了帮助
Linux内核结构
1、Linux内核结构框图
对内核结构框图有个总体的把握,有助于理解为什么驱动要这样写,为什么写的应用程序所用的C库接口能够产生这么多的事情。
2、图解linux系统架构
3、shell
shell(壳)是一个特殊的应用,也经常被称为命令行 。可以理解为是一个命令解释器
一个shell对应一个终端 (terminal)。曾经来说,终端是一个硬件设备,用来输入并显示输出。如今,由于图形化界面的普及,终端往往就像下图一样,是一个图形化的窗口。
你可以通过这个窗口输入或者输出文本,这个文本直接传递给shell进行分析解释,然后执行,本质就是提供和内核交互的程序。
shell脚本
在没有图形界面之前,shell充当了用户的界面,当用户要运行某些应用时,通过shell输入命令,来运行程序。shell是可编程的,它可以执行符合shell语法的文本,这样的文本叫做shell脚本(script)。