tty,串列埠,控制檯與驅動程式

SoldierJazz2019發表於2017-05-17

tty 裝置的名稱是從過去的電傳打字機縮寫而來,最初是指連結到 Unix 系統上的物理或者虛擬終端。隨著時間的推移,當通過序列口能夠建立起終端連線後,這個名字也用來指任何的串列埠裝置。物理 tty 裝置的例子有串列埠、USB 到串列埠的轉換器,還有需要特殊處理才能正常工作的調變解調器(比如傳統的 WinModem 類裝置)等。tty 虛擬裝置支援虛擬控制檯,它能通過鍵盤及網路連線或者通過 xterm 會話等登入到 Linux 系統。

Linux 系統有三種型別的 tty 驅動程式:控制檯、串列埠和 pty。控制檯和 pty 驅動程式已經被編寫好,而且可能也不必為這兩類 tty 驅動程式編寫其他的驅動程式。這使得任何使用 tty 核心與使用者和系統互動的新驅動程式都可被看成是串列埠驅動程式。

為了確定目前裝載到核心中的是何種型別的 tty 驅動程式,並確定目前使用的是何種 tty 裝置,可以查閱 /proc/tty/drivers 檔案。該檔案列舉了當前使用的不同的 tty 驅動程式,顯示了驅動程式的名稱、預設的節點名稱、驅動程式的主裝置號、驅動程式所使用的次裝置號範圍以及 tty 驅動程式的型別。如下圖所示:


如果 tty 驅動程式執行了所包含的功能,則 /proc/tty/driver/ 目錄下包含了若干獨立文為 tty 驅動程式所使用,預設的串列埠驅動程式會在該目錄下建立一個檔案,顯示許多關於序列硬體的特殊資訊。

當前註冊並存在於核心的 tty 裝置在 /sys/class/tty 下都存在自己的子目錄,在系統的 /dev 目錄下存在對應的裝置檔案與之對應,通過裝置檔案可以看到分配給該 tty 裝置的主裝置號和次裝置號。如果驅動程式告訴核心物理裝置的路徑以及分配給該 tty 裝置的驅動程式,它將建立一個指向它們的符號連結。使用 tree 命令可以檢視該目錄樹,如下圖所示:


以上就是 Linux 中 tty 裝置與串列埠、控制檯的簡單區別以及 tty 驅動描述了。由於歷史發展原因,幾個概念在 Linux 中多次被提及,但是區別還是很模糊,因此查閱資料並實驗總結了下。


如果有想法或者疑問可以給我郵件或者評論,覺得有用就點贊吧~:-D


相關文章