最近我第一次面對「X Window Server」的概念。在閱讀了很多相關內容並努力理解其大部分核心概念之後——主要是因為我出生在“現代計算時代”,從未接觸過“真正的終端”或“功能不夠強大,無法運行X 客戶端的PC 」——我對一件事感到困惑:
為什麼 X Server 是伺服器而不是具有一組預定義函數的函式庫?
我可以從之前提出的一些問題中學到很多東西,尤其是這些問題:
據我所知,X Server 最初的設計目的是支援網路通信,因為一些舊電腦的功能不足以運行圖形元素。這是 X Server 被設計為充當伺服器的唯一原因嗎?透過網路接收「請求」並以「圖形元素」回應?
X Server 即使在本機也充當伺服器,還有其他原因嗎?可能我遺漏了一些細節,而這正是我想要理解的,以「連結」我迄今為止學到的所有內容。
如果可能的話,你們能給我一個真實的例子來說明過去終端如何與 X Window 伺服器通訊嗎?我所能想像的就是一座充滿終端電腦(除了黑色終端螢幕之外不運行任何東西)的建築物,並且只有一台電腦能夠運行圖形介面。人們是否曾經共享這台電腦來與終端電腦進行通訊以執行繁重的任務?
謝謝你!
答案1
您似乎對終端有很大的誤解。
有文字終端,也有 X11 終端。 X11 終端機運行 X 伺服器。這也稱為瘦客戶端。
您可能還有一個運行 X 伺服器的工作站。它將連接到進程伺服器。地下室裡有一台強大的機器。
其他優點是:
- 它只是一個進程(可以存取圖形硬體、鍵盤和指點設備),但只是一個進程。這有其優點。您可以擁有一個無法存取圖形硬體、鍵盤和指點設備的裝置。它也可以是一個 VNC 伺服器,構成一個 X11-vnc 橋。它可用於測試(讓機器人取代人類對其進行製程控制)。
- 這是一個單獨的過程:我將電腦升級為多程式碼。它使用這些內核,無需對軟體進行任何更改(最多幾個內核)。
- 如果您有多個顯示器、鍵盤和滑鼠,那麼從架構上來說,很容易將它們分成單獨的席位(終端)。
- 它使得實現切換用戶變得容易。
- 不允許其他進程存取硬體。正如使用庫方法一樣,它更安全(注意 X11 確實存在一些安全問題,可以透過重新設計來解決)。
- 視窗管理器也是一個單獨的進程。這允許選擇桌面環境。因此,一個用於 X11 伺服器的進程,一個用於視窗管理器,一個用於顯示管理器(登入服務),一個用於這個那個。它非常靈活,您甚至無需登出即可更改桌面環境。
答案2
它是一個伺服器,因為它在可能具有多個鍵盤、其他輸入設備和多個顯示器的單一硬體(概念上是工作站)上提供和協調顯示服務。
多個進程可以本地或遠端連接到它,並協商螢幕空間、輸入焦點、顏色圖槽和其他資源。這些流程無法直接相互協商,也無法協調各自不同的需求。 X windows 伺服器提供的服務使所有客戶端程序相信它們可以存取工作站的所有功能。