Linux文件系统

1.文件系统

1)super block:对应的是一个硬盘分区。即一个分区有一个super block。

inode:1个文件对应一个inode
Block:1个Block只能存放一个文件的内容

这里写图片描述

2.目录

理解什么是目录
目录的Block中的内容:
这里写图片描述
目录中存放的其实就是文件名对应的inode number,然后通过这个inode number,在inode table中可以找到对应的inode,由inode就可以知道磁盘上放该文件的Block在哪里。

比如有一个/etc/dir/text:
那么我们现在更目录/的data block中找到目录/etc的inode number,然后找到其inode,读取inode所指向的Block的内容,再在这个Block中找到/dir这个目录的inode number,然后找到其inode,读取inode所指向的Block的内容,最后在这个Block中找到文件text的inode,最后找到text的Data Block。

3.硬连接与软连接

hark link:多个文件名对应到同一个inode。hard link不能用于不同的文件系统,不可以用于连接目录。

symbol link:本质是一个文件,该文件的内容指向另一个文件名。
比如我有一个symbol link:mylink,那么ls -l mylink:
lrwxr-xr-x
即第一位l就表示这是一个symbol link文件,这样在指定这是一个软连接的文件之后,我们就会通过该文件的内容找到另一个文件。

4.杂记

想要指令多行,可以使用 \Enter,把Enter原本指向的意思替换掉。

1)echo:

取用变量,如我一个变量var,那么要用echo $var获得它的值。
例如 myname=VBR,要在VBR后面在HJY,
则:myname=${myname}HJY。

2)程序:

存放在磁盘上,处于某个目录中的可执行文件,在执行时,由exec函数将程序读入存储器,并使其执行。

3)文件空洞:

文件中的空洞,不会占用磁盘空间,当用ls -l看该文件时,文件长度还是那么长,只是不会占用磁盘空间。

4)文件描述符与打开文件表

每个进程都有一个自己的文件表项,里面放了文件描述符以及该文件描述符所对应的打开文件表。这样每个进程都有它自己对该文件的当前偏移。

打开文件表:由内核维护,表示当前打开了哪些文件。
每个打开文件都有一个v节点,该v节点包含了文件类型和对此文件进行各种操作的函数的指针。

5)close(int fd):

表示的关闭文件,即该进程自己的文件描述符会关闭掉。

6)int dup(int fd):

复制一个fd所指向的文件描述符,返回复制后所得到的文件描述符。
int dup(int oldfd, int newfd):如果oldfd==newfd,返回newfd。否则,先关闭newfd,然后复制一个oldfd所指向的文件描述符,但是复制之后的那个文件描述符是newfd。

7)文件缓冲

用户进程是位于用户空间,内核位于系统空间,磁盘只可以被内核直接访问。所以程序想要读取磁盘上面的内容,只可以通过系统调用,比如read,read之后回去调用位于系统内核中的read程序,所以当read调用发生时,执行权会从用户代码转移到内核代码,执行内核代码是需要时间的,而且内核从磁盘上读取数据也是很耗时间的。
所以为了避免用户空间到内核空间的切换,要尽量避免使用系统调用。
而为了减少内核从磁盘读取数据的时间,内核会建立自己的缓冲区。

说明:
内核会把磁盘上的数据块复制到自己的内核缓冲区中,当一个用户空间的进程要从磁盘上读取数据时,内核一般不直接读磁盘,而是将内核缓冲区中的数据复制到进程的缓冲区中。
当进程所要求的数据块不在内核缓冲区时,内核会把相应的数据块加入到请求数据列表中,然后把该进程挂起,接着为其他进程服务。
一段时间之后,内核把相应的数据块从磁盘读到内核缓冲区,然后再把数据复制到进程的缓冲区中,最后唤醒被挂起的进程。

注意:
内核可以在任何时候写磁盘,但并不是所有的write操作都会导致内核的写动作。内核会把要写的数据暂时存在缓冲区中,积累到一定的数量之后再一次写入。有时会导致意外情况,比如突然断电,内核还来不及把内核缓冲区中的数据写到磁盘上,这些更新的数据就会丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值