kernel:操作系统的内核态
VFS树:虚拟操作文件系统
FD:文件描述符
inode:索引节点
硬盘分区,格式化、创建文件系统
被格式化的磁盘分为两部分:第一部分是Inode 第二部分是block
block是用来存储实际数据用的,例如:照片、视频等普通文件数据
inode是用来存储这些数据的属性的(也就是ls-l的结果)
inode包含的属性信息有文件大小、属主、归属的用户组、读写权限、问价类型、修改时间,还有指向文件实体指针的功能(inode节点----block的对应关系),但是唯独不包含文件名
inode id:操作节点的编号
pageache 4k:每次读取的缓存大小
dirty:用户修改了缓存后该缓存需要被修改
flush:最后将所有的结果flush到内存中
在Linux系统下,有七种文件类型:
最常使用的一类文件,其特点是不包含有文件系统信息的结构信息。通常用户所接触到的文件,比如图形文件、数据文件、文档文件以及声音文件都属于这种文件,这种类型的文件是按照其内部结构又可分为纯文本文件(ASCII)、二进制文件(binary)、数据格式的文件(data)、各种压缩文件。
# 第一种方式
ls -ld /etc
# 第二种方式
file xxx.txt
# 第三种方式 查看文件的详细属性(其中包括文件时间属性)
stat xxx.txt
644265 -rw-r–r--. 1 root root 3 Jan 28 20:55 xxx.txt
inode 索引节点编号:644265
文件类型 :文件类型是’-’,表示这是一个普通文件
文件权限:rw-r–r-- 表示文件可读、可写、可执行,文件所归属的用户组可读可执行,其他用户可读可执行
硬链接个数 表示xxx.txt这个文件没有其他的硬链接,因为连接数是1,就是他本身
文件属主 表示这个文件所属的用户,这里的意思是a.txt文件被root用户拥有,是第一个root
文件属组 表示这个文件所属的用户组,这里表示a.txt文件属于root用户组,是第二个root
文件大小 文件大小是3个字节
文件修改时间 这里的时间是该文件最后被更新(包括文件创建、内容更新、文件名更新等)的时间可用如下命令查看文件的修改、访问、创建时间
用于存放文件名以及其相关信息的文件,是内核组织文件系统的基本节点。目录文件可以包含下一级文件目录或者普通文件,在Linux中,目录文件是一种文件。
块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。
字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。
这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。
是一种很特殊的文件,主要用于不同进程的信息传递。当两个进程需要进行数据或者信息传递时,可以使用通道文件,一个进程将需要传递的数据或者信息写入管道的一端,另一进程从管道的另一端取得所需要的数据或者信息,通常管道是建立在调整缓存中。
是一种特殊文件,指向一个真实存在的文件链接,类似于Windows下的快捷方式,链接文件的不同,又可分为硬链接文件和符号链接文件。
/proc
包含内核程序的一些进程属性、ID号等等
$$
当前bash的pid
$BASHPID
当前bash的pid
/proc/$$/fd
(文件描述符有哪些)
lsof -op $$
(文件描述符具体的一些细节问题)
由上而下主要分为用户层、VFS层、文件系统层、缓存层、块设备层、磁盘驱动层、磁盘物理层
文件描述符:Linux 系统中,把一切都看做是文件一切皆文件
,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。
为了提升对文件的读写效率,Linux 内核会以页大小(4KB)为单位,将文件划分为多数据块。当用户对文件中的某个数据块进行读写操作时,内核首先会申请一个内存页(称为 页缓存)与文件中的数据块进行绑定。
补充拓展相关知识
:
冯诺依曼计算机体系结构:
计算机的主存是指内存,分为ROM(只读内存)和RAM(随机存取存储器)
更加宏观的PageCache整个执行流程:
好了,【性能基石之IO~~~Linux操作系统相关知识体系补充&虚拟文件系统&文件描述符&PageCache内核缓存页】就先学习到这里,更多内容持续学习创作中!!!