Linux

Xorg 是如何工作的?

  • November 20, 2017

我試圖了解 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 程序確實將該終端作為控制終端。

引用自:https://unix.stackexchange.com/questions/405565