Display Server vs. Window Manager vs. Driver grafico?


8

Sto cercando di ordinare la mia comprensione della diversa parte della grafica su Linux e sono confuso riguardo ai ruoli interpretati da ciascuno dei seguenti concetti.

  • Server display
  • Window Manager
  • Driver grafico

Le mie domande:

  • I driver grafici sono implementati all'interno del kernel Linux o all'esterno? Se al di fuori del kernel, perché sono esclusi quando rete, disco, file system sono tutti all'interno del kernel?
  • X Windows, Gnome, Ubuntu Unity, KDE, Mir, Wayland che fanno cosa in termini di Display Server, Window Manager e Driver grafico?

Il mio obiettivo per questa domanda è capire quali progetti stanno contribuendo a quali parti dell'esperienza grafica di Linux?

AGGIORNAMENTO http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ ha molti dettagli che stavo cercando.

Risposte:


3

Il termine "driver grafico" viene utilizzato per fare riferimento a diverse cose. Uno di questi è un driver del kernel. Il driver del kernel per lo più imposta la modalità video e facilita il passaggio dei dati da / verso la scheda. Di solito scarica anche il firmware nella GPU sulla scheda. Il firmware è un programma che esegue la stessa GPU, ma sfortunatamente i produttori di grafica lo forniscono solo come un BLOB binario, quindi non puoi guardare il suo codice sorgente.

Inoltre, di solito hai Xorg in esecuzione, che ha il suo driver che traduce le chiamate generiche di disegno X11 o OpenGL in comandi che la scheda comprende e le invia alla scheda per eseguirle. Potrebbe anche fare un po 'del lavoro stesso a seconda di quali comandi gpu fa e non supporta. Nel caso delle chiamate OpenGL, l'infrastruttura di rendering diretto consente a questa parte del driver di essere eseguita direttamente nell'applicazione client anziché nel server X, al fine di ottenere prestazioni accettabili. Inoltre, consente al driver nell'applicazione client di inviare i suoi comandi direttamente alla GPU, grazie al coordinamento e all'aiuto di Xorg e del driver del kernel all'avvio.

Wayland e Mir dovrebbero sostituire Xorg come un tipo semplificato di display server.

Unity è sia una shell (fornisce desktop / launcher) sia un compositing window manager in uno.

GNOME e KDE sono ambienti desktop. Sono grandi progetti costituiti da molti componenti. Il loro nucleo sono i rispettivi toolkit applicativi, che sono GTK per GNOME e Qt per KDE. Questo è un framework di librerie con cui viene scritta un'applicazione e fornisce le basi su cui è costruito tutto il resto. Alcuni dei servizi di base che forniscono sono la gestione di eventi e oggetti, Windows, funzioni di disegno di base, I / O e molto altro.


4
  • I driver grafici sono implementati come moduli del kernel che devono essere caricati al suo interno. Quindi, sostanzialmente, sono fuori dal kernel. La possibilità o meno di creare un kernel per contenerli è una questione lasciata da qualcuno a cui è più competente di me di rispondere. Penso che siano stati esclusi dal kernel perché se un kernel è compilato con, per esempio, il nouveaudriver avrebbe dei conflitti nel caricamento successivo di un driver NVIDIA proprietario.
  • X Windows, Wayland e Mir sono server di visualizzazione.
  • Gnome, Ubuntu Unity e KDE sono tutti ambienti desktop e non gestori di finestre. Un gestore di finestre fa parte di un ambiente desktop (ad esempio, utilizza Gnome metacity). Detto questo, puoi eseguire gestori di finestre autonomi (senza ambiente desktop) come awesome , xmonad o openbox

Per quanto riguarda quale componente svolge quale parte:

  • Il driver grafico è il modo in cui il kernel "parla" con la scheda grafica.
  • Il server di visualizzazione è ciò che crea e gestisce finestre e altri elementi grafici del display.
  • Un ambiente desktop o gestore di finestre funge da client per il server di visualizzazione e indica come deve disegnare / decorare finestre, pannelli, ...

I moduli del kernel sono sicuramente considerati "all'interno" del kernel.
psusi,

@psusi Ho scelto di leggere l'OP "dentro" e "fuori" come significato incorporato nel kernel e caricato in "dall'esterno". Probabilmente intendi "dentro" il kernel, nel senso che non fanno parte dello spazio utente, giusto?
Joseph R.

Sì, è così che interpreto "dentro" contro "fuori".
psusi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.