为什么 X Server 是一个服务器而不是一个具有一组预定义函数的库?

为什么 X Server 是一个服务器而不是一个具有一组预定义函数的库?

最近我第一次面对“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 服务器提供的服务使所有客户端进程相信它们可以访问工作站的所有功能。

相关内容