
誰かが「Hello World!」を説明できますか?最新のLinuxまたはUnixシステムの最新のソフトウェアおよびハードウェアスタックに関連していますか?$ strace
次のhelloworld.cプログラムによって生成されたバイナリファイルに対して実行すると、write()
システムコールで終了します。私たちの専門家になりたい人は、オペレーティングシステム、ロードされたデバイスドライバ、CPU、GPU、PCIe、およびUSB-Cポート(外部モニタに接続されている)などのハードウェア間の違いを理解するように指示できることを願っています。間に起こるすべての相互作用は「Hello World!」です。 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 Compositor->カーネルGPUドライバ->ディスプレイ