作業系統›Ch2 I/O 運作方式第 1 題/共 23 題
1. Interrupt、Device Driver、I/O
#OS-02-001中InterruptDevice DriverI/O
當滑鼠裝置被移動時,螢幕會透過在 windows manager 中重新繪製滑鼠圖示來反映這個動作。在這個事件中,滑鼠驅動程式(mouse driver,非 ISR)做了什麼事?這個驅動程式是如何被呼叫的?windows manager 又是如何知道要開始重新繪製畫面的?
參考答案與解析
滑鼠移動觸發硬體中斷,ISR只做最少量的工作(例如把滑鼠回報的移動量/按鍵狀態讀進一個緩衝區),接著喚醒或排程真正的(非ISR)滑鼠驅動程式常式(例如透過bottom-half/tasklet機制,或喚醒一個原本阻塞等待資料的驅動程式執行緒)。(非ISR的)滑鼠驅動程式接著把緩衝區內的原始移動資料轉換成游標位置變化,並把這個輸入事件送進系統的輸入事件佇列,通常是透過某種事件通知機制(例如喚醒一個在event queue上等待的檔案描述符/訊號)。Window manager平常在自己的事件迴圈中對輸入裝置的事件來源做阻塞式等待(blocking read/poll),一旦驅動程式送出滑鼠移動事件,window manager的等待就會被喚醒,進而得知需要在新的座標位置重新繪製游標圖示。
📄 台大113
▤完整推導請見《WH 資工筆記 · 作業系統》Ch2 I/O 運作方式