在之前的学习过程当中,我们晓得当文件被打开后须要加载进显存,第一步为其创建structfile结构体描述其结构(操作系统须要管理被打开的文件:先描述再组织),在通过进程当中的文件描述符表针指向文件描述符表,依照文件描述符的分配规则给新打开的文件分配文件描述符linux重启命令,这么此时进程就通过文件描述符和文件构建起联系。
进程与文件关系的博客链接
当我们进行文件操作时,比如写入文件就须要先将数据拷贝进C语言封装的文件缓冲区,再拷贝进内核缓冲区,最后再写入到外设(c盘)当中…
文件缓冲区的博客链接
而以上这种操作都是进程与被打开文件之间的关系,这么对于未打开的文件,操作系统是不是也须要进行管理操作呢?
没有被打开的文件都只能安静的在c盘上储存着,c盘上存在大量文件须要被OS静态管理上去,便捷我们随时打开–这就是文件系统的作用
2.硬件结构的学习
在详尽描述文件系统之前,须要我们对硬件有一定程度的了解,下边俺们就来简单认识一下吧!!!
2.1c盘的化学结构
目前在电脑当中早已极少看到使用c盘来作为储存结构了,大多数都是固态硬碟(同等储存量固态硬碟的价钱要低于机械硬碟,固态硬碟的访问速率更快)
然而在企业当中还是一般使用c盘来作为数据储存的主流,由于固态硬碟还存在访问次数的限制(访问次数过多可能会导致击穿现象)
但是c盘的造价更低
c盘是属于计算机结构当中的惟一一个机械结构!!!
但是c盘是外设,这两者结合上去造成硬碟的访问速率十分低(跟CPU相较而言)
大盘此时在高速旋转,盘片也在不停摆动
然而大盘和盘片不接触(大盘上储存的就是大量的数据,一旦盘片和大盘进行接触,可能会刮花大盘,致使数据遗失)
可以通过小时候使用的光碟来理解,光碟只有一面有数据,一旦刮花光碟播放上去就很卡(帧数–数据遗失)
所以,c盘对无尘环境的要求很高,一旦出现尘土与大盘或则盘片发生碰撞,都可能造成c盘的毁坏
2.2c盘的储存结构
c盘的大盘的怠速很快,一般可能达到1w转1s,那么快的标准是哪些,须要让盘片快速定位到扇区和磁道,在单位时间内(十分短:1s/1w)将该磁道的数据全部读出
2.3c盘的逻辑结构
为什么OS要对c盘进行逻辑具象呢?直接用CHS轮询不行吗?
便捷管理不想让操作系统的代码和硬件强耦合(当c盘切换成固态硬碟,这套管理方式也能适用,而且CHS就不行啦!)
尽管对应的c盘访问的基本单位(磁道)是512字节,并且仍然很小,OS内的文件系统订制的进行多个磁道的读取都是以1KB或则2KB或则4KB(一般是以4KB)为基本单位。虽然你只是单纯的想要读取或则更改1个比特位,也必须将4KB的空间加载进显存进行读取或则更改,再重新将这种数据写回c盘
这么这些写入方法不是特别浪费显存空间吗?为何操作系统会这样操作呢?
由于局部性原理的缘由:
局部性原理是指CPU访问储存器时红旗linux系统,无论是存取指令还是存取数据,所访问的储存单元都趋向集聚在一个较小的连续区域中。浅显来讲,就是CPU访问该字节,这么极大机率会访问该字节前后的数据
所以,直接将这一块的数据全部加载进显存也能增强CPU访问数据的效率
显存是被界定成为4KB大小空间(页框)c盘当中的文件尤其是可执行文件也是根据4KB大小来界定的(页帧)
3.文件系统
创建/删掉文件操作
创建文件:1.在inode位图结构当上将对应的比特位由0置1,按照inode找到inodetable,将文件的属性填入。
2.将数据写入datablock当中,构建inode和datablock的映射关系
3.最后返回inode编号
删掉文件:1.找到inode编号在inodebitmap当中的位置将其由1置0即可linux修复fat文件系统,数据块当中的bitmap位置也由1置0(惰性删掉)
删掉后恢复
文件删掉后是可以恢复的,只须要将inode编号得到,将inodebitmap当中的比特位由0置1,再找到inode和数据块之间的映射关系
将datablock中的比特位由0置1…但是Linux当中恢复文件比较复杂
(不留神删掉文件,哪些都别做再新建写入文件就真正删掉)
目录也是文件
当我们自己在使用shell时,查找文件都是使用文件名,并不是inode,文件名和inode之间存在哪些关系嘛?
任何一个文件肯定在目录下,同样的,目录也是文件,也必然存在inode(文件属性)和数据块
目录的数据块当中储存哪些内容呢?
目录上面储存的是文件名和inode的映射关系!!!
所以,我们在日常过程中使用ls,一定是查找当前目录下的数据块当中文件名,将inode和文件名之间的映射关系提取下来
同一目录下不能存在同名文件,文件名在当前目录下就属于惟一key值,通过文件名就可以索引到inode
之前的学习过程中,要在目录下新建文件必需要有该目录的写入权限,这是为什么?
由于要新建文件就必需要往该目录的数据块当中写入文件名和inode的映射关系
创建一个新文件主要有一下4个操作:
储存属性
内核先找到一个空闲的i节点(这儿是263466)。内核把文件信息记录到其中。储存数据
该文件须要储存在三个c盘块,内核找到了三个空闲块:300,500,800。将内核缓冲区的第一块数据
复制到300,下一块复制到500linux修复fat文件系统,以这种推。记录分配情况
文件内容按次序300,500,800储存。内核在inode上的c盘分布区记录了上述块列表。添加文件名到目录
新的文件名abc。linux怎样在当前的目录中记录这个文件?内核将入口(263466,abc)添加到目录文
件。文件名和inode之间的对应关系将文件名和文件的内容及属性联接上去。4.软硬链接