补充:设备独立性
Linux中,设备驱动以文件形式表示,用户操作逻辑设备就是操作文件,而不是具体的物理设备,也就是说,用户操作的是功能,是黑箱,而不是真正的实体。
APP操作的都是逻辑设备,而逻辑设备到物理设备,是系统自动完成。
就像虚拟地址由MMU转换为物理地址。
文件系统、分区和挂载
Linux有一个完整的文件系统,文件系统下的不同目录,可以分布在不同的磁盘分区,而联系的方式就是挂载。
同时,挂载方式也比较自由,比如根目录 /
挂载在分区1
,然后根目录下的子目录 /home
可以挂载在分区2
.
ls与du命令查看文件大小有差异的原因
一般来说,du命令查看的文件大小,是大于等于ls查看的,而我们日常查看的文件实际大小,都是ls命令。
ls查看的是文件的实际大小,而du查看的是分配给文件的内存大小。
这为什么有区别呢?因为分配给文件的时候,是一块一块分配的,而不是一个字节一个字节分配的,这也就是意味着,如果没有占满一块,也需要分配一块,这也就是ls和du的差异来源。
通常来说,我们用的一块是4KB
,因此du查看的都是4k的整数倍。
我们可以看到其实际大小小于4k,但是占用了4k的空间。
The
du
command shows how much disk space is used for the given file.
In contrast, thels
command shows the size of the file. The space used can be larger than the file size, depending on the filesystem used.
inode & datablock
再进一步解释一下,Linux的ext4文件系统,实际存储文件的时候,就像火车头一样,使用
- 车头:1个i节点
- 车厢:多个数据块
然后将车头、车厢都勾起来,就能够存储一个文件的基本信息和数据信息了。
其中,inode存储的是橘色部分的信息,而文件名存储在当前文件夹的父文件夹(文件)的inode中,也就意味着,对于文件夹结点,它存储了这些基本信息,还存储了其子目录的文件名。
而文件内的数据,则存储在datablock中。