显示服务器与窗口管理器与图形驱动程序?


8

我试图对Linux上图形的不同部分进行理解,并且对以下每个概念所扮演的角色感到困惑。

  • 显示服务器
  • 窗口管理器
  • 图形驱动

我的问题:

  • 图形驱动程序是在Linux内核内部还是外部实现的?如果内核,网络,磁盘,文件系统都在内核内部时,为什么将它们排除在内核之外呢?
  • X Windows,Gnome,Ubuntu Unity,KDE,Mir,Wayland谁在显示服务器,窗口管理器和图形驱动程序方面做了什么?

我的目标是了解哪些项目在Linux Graphics体验的哪些方面做出了贡献?

更新 http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ 有很多我想要的细节。

Answers:


3

术语“图形驱动程序”用于表示几种不同的事物。其中之一是内核驱动程序。内核驱动程序大多数情况下只是设置视频模式,并有助于将数据传递到卡或从卡传递数据。通常还将固件下载到卡上的GPU中。固件是GPU本身运行的程序,但是不幸的是,图形供应商仅将其作为二进制blob提供,因此您无法查看其源代码。

除此之外,您通常需要运行Xorg,它具有自己的驱动程序,该驱动程序将通用的X11或OpenGL绘图调用转换为卡可以理解的命令,并将其发送给卡以执行。根据gpu支持和不支持的命令,它本身也可以完成一些工作。对于OpenGL调用,Direct Rendering Infrastructure允许驱动程序的这一部分直接在客户端应用程序而不是X服务器中直接执行,以获取可接受的性能。由于Xorg和启动时内核驱动程序的协调和帮助,它还允许客户端应用程序中的驱动程序直接将其命令发送到gpu。

Wayland和Mir应该取代Xorg作为一种简化的显示服务器。

Unity既是一个shell(提供桌面/启动器)又是一个组合窗口管理器。

GNOME和KDE是桌面环境。它们是由许多组件组成的大型项目。它们的核心是它们各自的应用程序工具包,它们是用于GNOME的GTK和用于KDE的Qt。这是一个与应用程序一起编写的库框架,并提供了构建其他所有内容的基础。他们提供的一些基本服务包括事件和对象处理,Windows,基本绘图功能,I / O等。


4
  • 图形驱动程序被实现为必须加载到其中的内核模块。因此,基本上,它们在内核之外。是否可以构建一个内核来包含它们,这是一个比我更有知识的人要回答的问题。我认为它们被排除在内核之外,因为如果内核是使用nouveau驱动程序构建的,则稍后加载专有的NVIDIA驱动程序会产生冲突。
  • X Windows,Wayland和Mir是显示服务器。
  • Gnome,Ubuntu Unity和KDE都是桌面环境,而不是窗口管理器。窗口管理器是桌面环境的一部分(例如Gnome使用metacity)。也就是说,您可以运行独立的窗口管理器(没有桌面环境),例如awesomexmonadopenbox

至于哪个部分扮演哪个部分:

  • 图形驱动程序是内核如何与图形卡“对话”的方式。
  • 显示服务器是创建和管理窗口以及其他显示图形元素的工具。
  • 桌面环境或窗口管理器充当显示服务器的客户端,并指示其如何绘制/装饰窗口,面板,...

内核模块绝对被认为是“内部”内核。
psusi

@psusi我选择将OP的“内部”和“外部”读取为内置于内核中的含义,而不是从“外部”装入其中。从内核不在用户空间的意义上讲,您可能是说在内核内部,对吧?
Joseph R.

是的,这就是我解释“内部”与“外部”的方式。
psusi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.