“Hello world”到像素——操作系统、驱动程序和硬件(CPU、GPU、PCIe、USB-C 到显示)之间的一切

“Hello world”到像素——操作系统、驱动程序和硬件(CPU、GPU、PCIe、USB-C 到显示)之间的一切

有人可以解释一下“你好世界!”吗?与现代 Linux 或 Unix 机器上的现代软件和硬件堆栈有关吗?$ strace对以下 helloworld.c 程序生成的二进制文件执行 a以write()系统调用结束。我希望有人能够指导我们这些想成为专家的人了解当字节“Hello World!”时操作系统、加载的设备驱动程序以及 CPU、GPU、PCIe 和 USB-C 端口(连接到外部显示器)等硬件之间发生的所有交互。是从 helloworld 程序的虚拟内存中复制的。最好知道各种软件和硬件事务的发起者是谁,它们如何交互,如中断、总线事务等。

#include<stdlib.h>
#include<stdio.h>
int main() {
    puts("Hello World!");
    return EXIT_SUCCESS;
}

注:这个问题在某些方面可能显得过于宽泛,但实际上非常有针对性。它只是询问“Hello World!”的 12 个字节的流程。从我们的 helloworld 程序的虚拟内存到连接到显示器的 USB-C 端口。

答案1

X11:

程序 -> 虚拟控制台 -> 终端应用程序 -> 终端应用程序调用 GTK/Qt 渲染例程 -> X11 渲染 -> Xorg 的合成器(可选) -> Xorg 的 GPU 驱动程序(现在通常是 KMS) -> 内核 GPU 驱动程序 -> 显示

韦兰:

程序 -> 虚拟控制台 -> 终端应用程序 -> 终端应用程序调用 GTK/Qt 渲染例程 -> Wayland 的缓冲区 -> Wayland 合成器 -> 内核 GPU 驱动程序 -> 显示

相关内容