Linux
Xorg 是如何工作的?
我試圖了解 Xorg 是如何工作的。
我創建了以下圖像以顯示我的理解(此圖像顯示了按 Ctrl+Alt+F7 後組件的狀態):
下面是圖片的解釋:
/dev/tty7
是 Xorg 的控制終端。- Xorg 直接與 VGA 驅動程序對話以在螢幕上繪製(它不會將它想要繪製的內容髮送給 TTY 驅動程序)。
- Xorg 直接從鍵盤和滑鼠驅動程序接收輸入(它不從 TTY 驅動程序接收鍵盤和滑鼠輸入)。
- 虛擬終端還接收來自鍵盤驅動程序的輸入(但根據我的測試,它接收按鍵的掃描碼)。
- X 客戶端(圖中的 xterm 和 Firefox)沒有控制終端。
我的理解正確嗎?
您的描述與您的圖表不太匹配,並且比您的圖表更正確。
X 伺服器不使用 tty 驅動程序進行輸入或輸出。它直接從各種輸入設備的驅動程序讀取輸入,並將輸出直接發送到顯卡驅動程序。
您可以使用 列出輸入設備,
xinput
然後使用 獲取更多資訊xinput list-props
。例如:$ xinput | tail -n 1 ↳ USB Keyboard id=10 [slave keyboard (3)] $ xinput list-props 10 | tail -n 1 Device Node (263): "/dev/input/event2"
您可以看到我的 X 伺服器通過讀取從我的 USB 鍵盤獲取輸入
/dev/input/event2
。對於輸出,不知道有沒有類似的使用者級工具。
xrandr --listproviders
列出正在使用或可用的圖形驅動程序,但不列出/dev
條目。您可以查看 X 伺服器打開的圖形設備lsof -p$(pgrep Xorg)
或less /var/log/Xorg.0.log
。控制終端的概念是為文本模式會話設計的。X 伺服器可能有也可能沒有控制終端,這取決於它是如何啟動的。從 GUI 菜單啟動的 X 程序通常沒有控制終端,因為視窗管理器沒有。從在終端中執行的 shell 啟動的 X 程序確實將該終端作為控制終端。