小林coding chapter 6(完结)
chapter 6 文件系统
6.1 文件系统:
Linux系统为每一个文件都提供了两个数据结构,一个是索引节点,一个是目录项。用来记录文件的元信息和目录层次结构
索引节点:记录文件的元信息,⽐如 inode 编号、⽂件⼤⼩、访问权限、创建时间、修改时间、数据在磁盘的位置等等
目录项:目录项是由内核维持的一个数据结构,不存放在硬盘,存放在内存当中
目录和目录项不是同一个东西:目录是一个文件,持久化的储存在硬盘当中;目录项是一个内核中的数据结构,缓存在内存里
如果我们频繁的从目录中读取文件,那么势必速度会非常的慢(因为要访问硬盘,但是硬盘的读写非常的慢);所以我们需要目录项来缓存我们读过的目录,由于目录项是放在内存当中的数据结构,所以我们下一次再读到相同的目录的时候,直接访问内存就可以了,大大的提升了访问速度,提高了文件的利用效率!!!
文件数据怎样储存在磁盘呢?
磁盘读写的最小单位是扇区,一个扇区大概有512B的,但是每次读写都是这么小的数据量为单位的话,速度肯定不是很快。所以,文件系统把读写的最小单位设置成8个扇区大小---> 逻辑块
Linux中一般读取数据用的是8个扇区大小的数据块,总共有4k大小,大大提高了磁盘的读写能力!!!
Linux系统中:用户空间,系统调用,虚拟机文件系统,缓存以及文件系统以及存储之间的关系:
Linux支持的文件系统,大致可以分为3类:磁盘文件系统,内存文件系统,网络文件系统
磁盘文件系统:直接把数据存储到磁盘当中去
内存文件系统:这一种文件其实是不存放在磁盘当中的,而是存储在内存当中;我们读写这一种文件其实就是读写内核当中的数据!!!
网络文件系统:用来访问其他主机数据文件的文件系统
文件的存储有两种方式:连续存放和非连续存放
非连续存放:链式存储和索引存储!!!
链式存储又分为:显示存储和隐式存储
Unix文件系统
所以,Unix的文件头就包括了13个指针:10个指向本地小文件的指针,第11指向一级索引块的指针,第12指向二级索引块指针,第13级指向三级索引块
空闲空间管理:空闲表法,空闲链表法,位图法
软链接和硬链接
软连接是生成了一个类似于快捷方式查找索引的方式,只是一个路径而已
硬链接是一个别名,链接文件和源文件是一个文件,修改源文件和硬链接文件,两者都会互相改变!!!
之后什么阻塞I/O,非阻塞I/O就没看了
阻塞I/O:数据还未准备好的时候,用户要一直等待,一直等待数据准备好了之后,就取走数据
非阻塞I/O:数据还未准备好,然后用户可以不用一直等待;过了很久,又去询问数据还有没有准备好:如果准备好了,那么我们可以取走数据,如果没有准备好,那么可以继续等待(继续非阻塞I/O)
chapter 7 设备管理