例如,過程等待 磁盤I/O完成將睡在對應於該數據是 傳送的緩衝區頭 的 地址。當磁盤驅動程序的中斷 例程注意到 傳輸完成時,它會調用 喚醒緩衝區頭文件。 中斷使用內核堆棧 無論發生哪種進程碰巧當時正在運行 ,並且喚醒是從該系統進程完成的 。進程調度問題
請您介紹我強調的段落中的最後一行。這是關於喚醒已經等待某個事件發生並因此睡眠的過程。這一段來自高爾文。順便說一下,你可以建議一些好的書或鏈接學習UNIX操作系統?
謝謝。
例如,過程等待 磁盤I/O完成將睡在對應於該數據是 傳送的緩衝區頭 的 地址。當磁盤驅動程序的中斷 例程注意到 傳輸完成時,它會調用 喚醒緩衝區頭文件。 中斷使用內核堆棧 無論發生哪種進程碰巧當時正在運行 ,並且喚醒是從該系統進程完成的 。進程調度問題
請您介紹我強調的段落中的最後一行。這是關於喚醒已經等待某個事件發生並因此睡眠的過程。這一段來自高爾文。順便說一下,你可以建議一些好的書或鏈接學習UNIX操作系統?
謝謝。
有一些過程在收到中斷時運行。內核不會切換到其他進程上下文來處理它 - 這需要時間 - 它只是在當前上下文中做了必要的事情,並讓調度程序知道下一次調度時,等待進程已準備就緒繼續。
有很多很好的內部書籍。我喜歡各種McKusick 等書籍,如The Design and Implementation of the FreeBSD Operating System。
真的非常感謝你的支持。 FreeBSD使用 頁面着色實現頁面着色。隊列根據處理器的L1和L2高速緩存的大小排列;當需要分配一個新頁面時,FreeBSD會嘗試獲取最適合緩存的頁面。 謝謝 – mawia 2009-04-19 15:13:07
哇,不在評論我不能。 – 2009-04-19 15:25:41
只要磁盤發出傳輸結束信號,就會執行I/O完成中斷。無論內核當前在做什麼,這都可以完成。中斷處理程序通常非常小且獨立。因此,重用當前運行時環境(堆棧,CPU狀態等)而不是完全切換到單獨的線程會更快。這意味着中斷處理程序只允許執行非常有限的事情,比如在其他地方設置標誌,或者排隊工作項目。此外,他們必須非常小心地自行清理,以免運行過程受到干擾。
莫里斯巴赫的Design of the Unix Operating System是關於這個問題最知名和最全面的書。
Eric Raymond的'The Art of Unix Programming',應該被理解爲了解Unix的哲學和文化。要真正瞭解和理解其設計背後的原因。
如果您正在尋找一本瞭解內核的好書,瞭解Linux內核是關於Linux內部的一本非常棒的書。 – Zifre 2009-04-19 14:49:44