1.硬盤驅動與硬盤的交互流程: node
1)硬盤驅動監聽其它進程發來的消息,收到消息後,向硬盤的命令塊寄存器和控制塊寄存器發寫數據和命令,並阻塞等待硬盤中斷; 數據結構
2)硬盤中斷髮生,調用硬盤中斷處理程序,陷入到內核態(各中斷門的屬性都初始化在內核ring0),硬盤中斷處理程序處理完相關操做後,向硬盤驅動(運行在非內核態)發送INTERRUPT消息,解除硬盤驅動的阻塞; 進程
3)硬盤驅動再次被調度時,將從上一次被阻塞的地方繼續運行,此時獲取相關的信息(好比從硬盤寄存器獲取數據等),並作進一步的處理。 ip
2.數據結構inode和file-descriptor: file
只要瞭解了問題的背景,這兩個數據結構就十分簡單易懂了。inode是對文件自己的固有屬性的描述,是進程無關的。而file-descriptor則是進程或任務相關的,由於它須要記錄在某些時刻它所引用的一些文件,以及侷限於進程自己,與文件操做相關的一些數據等。不一樣進程的fd天然能夠指向同一個文件inode。 引用