輸入輸出系統總結

2021-09-08 15:41:17 字數 825 閱讀 9320

最近在學習作業系統的開發過程中,到了輸入輸出系統了,但是由於輸入輸出系統這部分,思路很簡單,但又過程很繁雜,鑑於時間有限,所以決定先跳過自己動手寫的過程,只是將書寫的思路記錄於下,以備以後查閱,待其他更加重要的部分完成後,再回頭來試著自己動手完成輸入輸出系統這部分。

tty模型是很不錯的輸入輸出模型,完成後面的後,一定要回頭來寫一下這個模型(mvc?)。職責分工分明,層次清晰。

鍵盤:這裡主要是完成鍵盤的 掃瞄碼-------->ascii的轉換(當然還包括一些鍵盤上的shift, alt, ctrl的組合,對backspace, enter鍵的處理),也就是鍵盤驅動。

鍵盤上每一次摁鍵產生乙個make code 和乙個 break code,即產生2次中斷。

對於組合鍵,比如shift+a------>就是shift的make code先被從暫存器中取出,並用全域性變數記錄shift的狀態,然後緊接著取過來是a的掃瞄碼的make code,說明a與shift同時摁下,產生乙個大a(小a和a的組合碼,作業系統中自己定義自己的組合碼是什麼樣子的,具體可參看kerboard.h標頭檔案),送給in_process();來處理。

具體的工作根據鍵盤上的摁鍵不同的組合還有很多分支,不過大體就是這個思路。鍵盤驅動的工作也就完成了。

顯示器:

顯示器分為很多的模式,當前教程是純文字模式,會比較簡單。

為了顯示多個tty,主要工作是將gs的0xffff 顯示區域進行分割槽,然後不同的區域有不同的:

這樣在切換tty的時候,只需要將對應的tty資料結構中的資料複製到顯示器控制器暫存器中,就完成了切換。

實現cursor位置的改變,滾屏等都是需要操作暫存器,讓其指向視訊記憶體的不同位址,從而實現操作。

輸入輸出系統

早期 介面模組和dma階段 具有通道結構的階段 軟體io指令 cpu指令的一部分 通道指令 首位址 傳送字數 操作命令 硬體io裝置 io介面 裝置控制器 通道 io裝置編址 統一編址 取數存數指令 單獨編址 專門的io指令 裝置選址 傳送方式 序列 並行 聯絡方式 立即響應 led 非同步工作 序...

s輸入輸出總結

c語言中,沒有字串型別,用字元陣列處理字串。字元陣列定義 char?陣列名 常量表示式 說明 一維字元陣列,用於儲存和處理乙個字串,二維字元陣列,用於同時儲存和處理多個字串 因為字元型與整型是通用的,可以用int來定義字元陣列,但兩者有區別,如 char c 10 在記憶體中佔10位元組 int c...

acm 輸入輸出總結

資料的輸入格式影響判斷迴圈終止的方式,迴圈判定發生在各組資料之間的輸入過程中和組內單個資料的輸入過程中,常見的資料輸入格式有三種 給出輸入規模 首先,輸入乙個整數n,n為輸入規模 然後,輸入n組資料。以特定輸入標誌結束 最後一組輸入為題目中指定的一組特定輸入,標誌輸入的結束。這組輸入一般為一組無意義...