Die Architekten in den Bell Laboratories und ihre ursprüngliche Mitarbeiter bei General Electric und dem Massachusetts Institute of Technology entwickelt Unix als ein leistungsfähiges Multitasking-Betriebssystem . Der Unix-Kernel - der Kern oder Zentrum, um das die äußere Funktionalität des OS ist so vielschichtig - im Gespräch mit dem Bare-bones Hardware über Gerätetreiber und Software zur Steuerung von Prozessen und System-Ressourcen zuweisen . Ein Prozess auf Unix ist jede ausführbare Kontrollfluss- Verfahren in den Speicher geladen , und es wird der CPU nur Aufmerksamkeit , wenn der Kernel erlaubt. Prozess
Die zentrale und entscheidende Teil der Unix-Kernel , der Prozess - Steuerung Subsystem , ist verantwortlich für die Prozess-Synchronisation , Inter-Prozess- Kommunikation, Prozess-Scheduling und Speicherverwaltung. Verfahren erzeugt einen Kindprozess mit dem fork () Systemaufruf , und außer für Prozess 0 , haben alle Prozesse eines übergeordneten Prozesses , dass fork () an einem gewissen Punkt , um das Kind zu erstellen aufgerufen.
Der Kernel erkennt einen Prozess durch ihre ID , die so genannte PID . Ein Unix-Prozess läuft entweder im User-Modus oder Kernel-Modus , und unterhält zwei getrennten Stapeln beim Umschalten zwischen ihnen. Verfahren tritt Kernel-Modus , wenn es ein System Anruf tätigt oder empfängt einen Alarm oder ein Signal , so dass es eine höhere Priorität und mehr Anspruch auf Ressourcen und Vorkaufsrecht als die im User-Modus .
Scheduling
der Kernel erlaubt eine neue oder andere Verfahren , um die CPU nur verwenden, wenn der erste Prozess geht zu schlafen , und erlaubt es nicht , den Zustand oder den Zugriff auf Ressourcen zugeteilt an einen anderen Prozess zu ändern. Die Kernel- Scheduler Modul preempts einen Benutzer-Prozess in regelmäßigen Abständen , um es von Monopolisierung der CPU verhindern , jedoch.
Steuerung
Prozesse kommunizieren miteinander über System Calls , und während sie darauf hin, dass ein anderer Prozess weg, kann nur der Kernel es zuvorzukommen . Ein Prozess kann gehen, um auf seine eigene schlafen, aber der Kernel kann sie wecken. Prozesse in der Regel auf einer Veranstaltung zu schlafen, warten auf die CPU , solange das gewünschte Ereignis besetzen nicht aufgetreten .
Signalisiert
Wenn der Kernel teilt die CPU auf eine andere Verfahren , eine so genannte Kontext-Switch wird der Prozess verdrängt auf Stapel gespeichert , so dass sie dort fortgesetzt, wo sie aufgehört haben auf ihrer nächsten Runde . Ein Prozess kann ein Signal an andere zu schicken oder der Kernel kann ein Signal intern zu senden, sondern nur der Kernel kann ein Signal an einen laufenden Prozess zu senden, um sie so zuvorzukommen , dass es schlafen geht . Der Kernel tauscht dann mit einem ready- to-run- Prozess, der gewartet hatte , die Kontrolle über die CPU zu erhalten. Ein Prozess kann bei einer bestimmten Priorität unterbrechbar schlafen und ignorieren ein Signal mit niedriger Priorität .
Fair Share
Der Kernel implementiert eine Fair-Share- Scheduling-Algorithmus , die Prozesse gibt ein Anteil der CPU-Zeit auf Prioritäten zugewiesen werden , abhängig von der Art der Aufgabe basiert. Höhere Priorität Prozesse bekommen öfter und geplant erhalten mehr CPU-Zeit , sondern ein Prozess kann rohe Kontrolle über seine Planung mit der System Call schön ( ) wie folgt ausüben : nice ( value); Prozess Priorität ist eine Funktion dieses schönen Wert . Prozess priority = letzten CPU-Auslastung /a konstant + Basispriorität + nice-Wert .
Dieser Algorithmus gibt Benutzer der Gruppe A zweimal der Steckplatz für Gruppe B , drei Mal , dass der C-und viermal so hoch wie D, wo Benutzer Prozesse werden nach Priorität gruppiert . Diese Methode ist nicht geeignet für Echtzeit-Verarbeitung , wo der Prozess nicht leisten können, auf Mission-Critical Aufgaben warten, ein solches Verfahren gewinnt Instant CPU-Auslastung durch Unterstützungssysteme Anrufen und Senden von hoher Priorität Interrupt-Signale
< . br>