補充:設備獨立性
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中。