Reference:https://time.geekbang.org/column/article/74633
磁盤是一個塊設備,可以划分為不同的分區;在分區之上再創建文件系統,掛載到某個目錄,之后才可以在這個目錄中讀寫文件。
其實 Linux 中“一切皆文件”,而提到的“文件”是普通文件,磁盤是塊設備文件,可以執行 "ls -l <路徑>" 查看它們的區別。
在讀寫普通文件時,會經過文件系統,由文件系統負責與磁盤交互;而讀寫磁盤或者分區時,就會跳過文件系統,也就是所謂的“裸I/O“。
這兩種讀寫方式所使用的緩存是不同的,也就是 Cache 和 Buffer 區別。
- Buffer 既可以用作“將要寫入磁盤數據的緩存”,也可以用作“從磁盤讀取數據的緩存”。
- Cache 既可以用作“從文件讀取數據的頁緩存”,也可以用作“寫文件的頁緩存”。
簡單來說,Buffer 是對磁盤數據的緩存,而 Cache 是文件數據的緩存,它們既會用在讀請求中,也會用在寫請求中。
