Q: console和tty是什麼關係?
A: 爲了避免名詞混亂,我們先默認爲,console被當做是物理終端或者單用戶模式的終端, tty我們一般叫做虛擬終端,一般是GUI終端內部模擬的終端.
Q: 對console的寫操作,內部流程是什麼?
A: 調用堆棧如下:
con_write會把write系統調用的buffer送到指定的console緩衝區中,並調用con_putcs把數據輸出到顯示器.
Q: 對console的讀操作,執行流程是什麼?
A: 調用堆棧如下:
n_tty_read會調用add_wait_queue把當前線程至於阻塞狀態,並等待輸入的數據.
Q: 何時會喚醒read_wait等待隊列呢?
A: 當按鍵被按下,鍵盤終端處理程序會調用tty_insert_flip_char把當前輸入的按鍵信息傳遞給當前的console, 繼而調用到tty接收buffer處理函數n_tty_receive_buf或n_tty_receive_buf2, 最後調用相應的喚醒函數.
比如:
n_tty_receive_char_special
__receive_buf
作者: 陳曦
環境: MacOS 10.14.5
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.6.0
Linux 3.16.83
轉載請註明出處