操作系統接口:用戶接口和程序接口。用戶接口分為聯機用戶接口和脫機用戶接口。脫機用戶接口出現在早期的批處理系統中(將作業提前交給操作系統,作業完成的過程中用戶無法交互);聯機用戶接口即為終端(所有輸入輸出設備),包括設備終端(偽終端,pseudo terminal slave)、文字終端(字符終端)和桌面終端(圖形界面終端),聯機用戶接口可以使用戶與操作系統實時交互。而程序接口就是指操作系統提供的各種系統調用接口(API,應用程序接口),通過這些函數接口可以使用這些系統調用。
終端:所有輸入輸出設備的總稱,如鍵盤、鼠標、攝像頭、麥克風、屏幕、打印機等。
在UNIX系統中,用戶通過終端登錄系統后得到一個Shell進程,這個終端成為Shell進程的控制終端(Controlling Terminal),進程中,控制終端是保存在PCB中的信息,而fork會復制PCB中的信息,因此由Shell進程啟動的其它進程的控制終端也是這個終端。默認情況下(沒有重定向),每個進程的標準輸入、標準輸出和標準錯誤輸出都指向控制終端,進程從標準輸入讀也就是讀用戶的鍵盤輸入,進程往標準輸出或標準錯誤輸出寫也就是輸出到顯示器上。信號中還講過,在控制終端輸入一些特殊的控制鍵可以給前臺進程發信號,例如Ctrl-C表示SIGINT,Ctrl-\表示SIGQUIT。
Linux下的終端類型:設備終端,又叫偽終端(pts/編號,如bash終端,/bin/bash)、文字終端(tty1-tty6,共6個)、圖形界面終端(tty7或:0,也叫桌面終端)。
圖形界面終端(桌面終端):tty7或:0,Alt + Ctrl + F7進入;文字終端(字符終端):tty1~tty6,Alt + Ctrl + F1、F2、F3、F4、F5、F6進入;設備終端(偽終端):pts/編號,從0開始;網絡終端:SSH、Telnet、xshell等。每一個網絡終端在服務器上都會對應一個偽終端,網絡終端輸入的各種命令或程序都先通過網絡協議發送到服務器,這些命令或程序在服務器上(偽終端)解析和執行,將執行結果又通過網絡通信協議發送給客服端(網絡終端)。因此,網絡終端,如xshell,與主機之間交互需要網絡通信。文字終端與設備終端相似,都是以命令行的方式與系統進行交互。在Windows中的文字終端打開方式:win+r 輸入cmd即可。
在top或ps命令中,TTY表示該進程來自于哪一個終端(設備、文字和桌面),?表示該進程不需要終端,即不需要登錄到系統,不能與用戶交互。進程可能屬于終端,也可能屬于系統自己的。終端本身會對應一個進程。如守護進程就不需要終端,不需要登錄到系統,是Linux中的后臺服務進程,通常獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。