關於linux0.12臨界資源的一點理解和猜測

       今天看代碼時突然發現,好像看到linus在寫代碼時的一些準則了,再根據趙博士的一句話"內核開發者不可能總是關注這些細節問題的!“,然後參照自己的理解總結出來一些準則,本人初學,如果有問題還請留言指正。

       1.在關於鎖的操作上,希望是原子操作,所以不管什麼先關中斷再說

       2.在互斥資源上,如果下面可能睡眠,那麼先上鎖再說,這點可以從inode.c中的read_inode函數中可以看出!

       3.如果進程修改了某些indoe等一些公共內容,如果下面有bread之類可能睡眠的函數那麼先把i_dirty置1,以免丟失數據。

      4.貌似只要是進程打開的,不是用作公共有途的,如打開一個i_node用來添加目錄,打開一塊緩衝區用作他用,這些都算是私有的,不算是臨界,共同使用同個i_node或同一個緩衝區的可能性很小?我只能這麼解釋他爲什麼在bread後在進程中不上鎖了!


發佈了43 篇原創文章 · 獲贊 17 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章