Jens Holzkämper: Userspace->Kernelspace/kernel->Hardware ..

Beitrag lesen

Tach,

Ich möchte den Kernel eines System (hier jetzt Linux aber ich denke die Aufgabe eines OS ist überall gleich)

die folgende Definition ist nicht unumstritten, ich halte sie aber für sinnvoll: Linux ist ein Kernel und (zentraler) Teil eines Betriebssystems, der Rest des Betriebssystems dass häufig Linux genannt wird stammt wohl zum größten Teil aus dem GNU-Projekt, deshalb spricht man, wenn man das Betriebssystem meint auch von GNU/Linux.

Userspace (Anwendungsprogramme) -> API (Syscalls) -> Kern/Kernelspace -> Hardware

Das paßt so erstmal: als Bild

Doch eine frage ich mich doch schon, in Linux gibt es ca. 300 Syscalls, wie können die denn für die ganzen Aufgaben reichen?

Naja, so viele Aufgaben sind es ja gar nicht, schauen wir mal was so üblicherweise gemacht wird: http://en.wikipedia.org/wiki/System_call#Typical_implementations. Das sind 5 Gruppen von Dingen (etwas mit Prozessen anstellen, etwas mit Dateien anstellen, ein Gerät nutzen, Informationen nutzen/setzen und Kommunikation), mit jeweils etwa 5 expliziten Befehlen. Man muß hierbei bedenken, dass ein Prozeß nur dann Syscalls braucht, wenn er etwas tun will, dass er selber nicht darf, möchte er z.B. nur etwas berechnen, braucht er dafür keinen Call.

Schaut man in die etwa 500 Systemcalls von FreeBSD, dann sieht man auch, dass die meisten davon gut in die obigen fünf Kategorien passen und viele im wesentlichen Komfortfunktionen bereitstellen.

Was anderes was mir nicht in den Kopf gehen will, man sagt ja Linux sei Multitaksing fähig (es können mehrere Programme gleichzeitig laufen und organisiert werden) aber mal ernsthaft, das kann Windows 3.1 doch auch, es läuft das OS selbst und z.B. paintbrush, oder wie kann man sich das vorstellen?

Richtig, das konnte auch schon DOS (s.u.), das war allerdings kooperatives Multitasking, d.h. ein Prozess konnte, wenn er denn wollte, Zeit freigeben für andere Prozesse, mußte aber nicht. Der Prozeß war in voller Kontrolle. Heutzutage ist eher präemptives Multitasking verbreitet, d.h. der Kernel verteilt die Timeslots und ist in Kontrolle.

Windows 3.x war übrigens kein Betriebssystem sondern eher ein Windowmanager für DOS (und das mußte nicht zwangsweise MS DOS sein), erst Windows 95 war eigenständig lauffähig.

mfg
Woodfighter