| Zeile 5: | Zeile 5: | ||
== Entwickeln einer GUI für das eigene OS == | == Entwickeln einer GUI für das eigene OS == | ||
| − | Die meisten OS-Developer wollen eine GUI für ihr OS haben. Doch besonders viele Anfänger wollen quasi sofort eine GUI mit allem Drum und Dran haben. Dabei sollte jedem klar sein, dass eine GUI ein hochkomplexes Programm ist, vergleichbar mit einem aufwändigen 3D-Spiel. Und wo es gerade | + | Die meisten OS-Developer wollen eine GUI für ihr OS haben. Doch besonders viele Anfänger wollen quasi sofort eine GUI mit allem Drum und Dran haben. Dabei sollte jedem klar sein, dass eine GUI ein hochkomplexes Programm ist, vergleichbar mit einem aufwändigen 3D-Spiel. Und wo es gerade erwähnt wurde: Eine GUI ist ein '''Programm''', soll also vom Kernel '''geladen und ausgeführt''' werden. Eine GUI ist '''kein''' Bestandteil des [[Kernel|Kernels]]! Auch die GUI von [[Windows]] gehört nicht zum Kernel, wie oft angenommen wird (allerdings sind GUI und Kernel über die WinAPI und verschiedenste [[Syscall|Syscalls]] eng miteinander verzahnt). Wer eine GUI für sein OS entwickeln möchte, benötigt folgendes in seinem Kernel: |
<ul> | <ul> | ||
| − | <li> | + | <li>Vollständige [[Speicherverwaltung]]</li> |
| − | <li>Multitasking</li> | + | <li>[[Multitasking]]</li> |
</ul> | </ul> | ||
| Zeile 23: | Zeile 23: | ||
=== Portieren oder selbst schreiben? === | === Portieren oder selbst schreiben? === | ||
| − | KDE, Gnome, IceWM... | + | KDE, Gnome, IceWM... Bei der Fülle an (Linux-)GUIs fragt man sich sicherlich, warum man nicht einfach eine bestehende portieren kann. Kann man, allerdings ist dazu fast immer die Portierung von Libs (Qt bei KDE, GTK bei Gnome) vonnöten, was mitunter ein ebenso großes Projekt ist. Außerdem brauchen GUIs auch Window-Manager. |
Selber schreiben klingt da vernünftiger, allerdings muss man hier auf unterster Ebene (lowlevel ;)) arbeiten: Man hat keine Libs im Hintergrund, die eine Fenster mit "createWindow();" erstellen, man muss alles von Hand machen. | Selber schreiben klingt da vernünftiger, allerdings muss man hier auf unterster Ebene (lowlevel ;)) arbeiten: Man hat keine Libs im Hintergrund, die eine Fenster mit "createWindow();" erstellen, man muss alles von Hand machen. | ||