30天自制操作系統:第7天:FIFO與鼠標控制

第7天:FIFO與鼠標控制


今天前半部分講的都是鍵盤輸出與緩衝區的問題,後半部分纔是鼠標移動問題。

緩衝區FIFO實現

在按鍵盤上一個鍵時,鍵盤會以中斷形式發送給CPU數據。在現階段的設計中,一次只發送一字節,但是在按一些鍵時,會發送兩位字節,此時另一字節如果不暫存,就丟失了;在有些情況,會碰到鍵盤中斷髮送的數據不能馬上被CPU使用,此時就要用到緩衝區。

緩衝區用來緩存暫未處理的數據,比如緩存上面的另一個字節。在緩衝區輸出前,需要先關中斷,防止其他中斷打斷緩衝區處理,否則會丟失數據;處理完緩衝區後,再開中斷。

問題在於,如果緩衝區順序存儲,那麼不論多大,總會有恰巧用完的時候,此時就需要重新從頭開始,會影響性能;那麼在用到頭時,就重新設置緩衝區從頭開始存取即可,像一個循環隊列,但並不是循環隊列。

鼠標控制

其實今天做不到讓鼠標移動,但能做到移動鼠標後,讓鼠標的數據傳到CPU,並顯示在屏幕上。大致原理上面已經說了,移動會產生輸入數據,每個數據三字節,需設置緩衝區存放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章