Les architectes de Bell Laboratories et leurs associés originaux à General Electric et le Massachusetts Institute of Technology conçu Unix comme système d'exploitation multitâche puissant . Le noyau Unix - le noyau ou centre autour duquel la fonctionnalité externe de l' OS est en couches - Les pourparlers sur le matériel bare-bones via les pilotes de périphériques et de logiciels pour contrôler les processus et allouer les ressources du système. Un processus sous Unix est une procédure de contrôle de flux exécutable chargé en mémoire , et il attire l'attention de la CPU uniquement lorsque le noyau le permet. Processus
La partie centrale et essentielle du noyau Unix, le sous-système de commande de processus , est responsable de la synchronisation de processus , la communication inter-processus , ordonnancement des processus et de la gestion de la mémoire. Un processus crée un processus enfant utilisant le fork () appel système , et sauf pour le processus 0 , tous les processus ont un processus parent qui a appelé fork () à un moment donné pour créer l'enfant.
Le noyau identifie un processus par son ID , appelé PID. Un processus Unix s'exécute en mode utilisateur ou en mode noyau , et maintient deux piles séparées lors de la commutation entre eux. Un processus se met en mode noyau quand il fait un appel système ou reçoit une interruption ou un signal , en lui donnant une plus grande priorité et plus de droit aux ressources et aux préemption que ceux en mode utilisateur .
Scheduling
le noyau permet un procédé nouveau ou différent pour l'utilisation de la CPU que lorsque le premier processus se met en veille , et ne lui permet pas de changer l'état des ressources ou d'accès attribué à un autre processus. Module d'ordonnancement du noyau préempte un processus utilisateur périodiquement pour l'empêcher de monopoliser le CPU , cependant.
Contrôle
processus communiquent les uns avec les autres via des appels système , et tandis qu'ils peuvent suggérer qu'un autre processus disparaître , seul le noyau peut préempter il . Un processus peut dormir sur ses propres, mais le noyau peut le réveiller . Processus dorment habituellement sur un événement , en attendant d' occuper le CPU aussi longtemps que l'événement souhaité n'a pas eu lieu .
Signaux
Lorsque le noyau alloue la CPU à l'autre processus , appelé un changement de contexte , le processus préempté est enregistré sur la pile , ce qui lui permet de reprendre là où il s'était arrêté sur son prochain tour . Un processus peut envoyer un signal à un autre ou le noyau peut envoyer un signal à l'intérieur , mais seulement le noyau peut envoyer un signal à un processus en cours d'anticiper pour qu'il s'endorme . Le noyau puis swaps avec un processus de prêt- à-l'emploi qui avait attendu pour obtenir le contrôle de la CPU . Un processus peut dormir à une certaine priorité interruptible et d'ignorer un signal de faible priorité.
Fair Share
Le noyau implémente un algorithme d'ordonnancement juste part qui donne un processus part de temps de calcul en fonction des priorités qui leur sont attribuées , en fonction de la nature de la tâche . Processus plus prioritaires se programmés plus souvent et reçoivent plus de temps CPU , mais un processus peuvent exercer un contrôle brut de sa programmation en utilisant l'appel système nice () comme suit : nice ( value); priorité du processus est fonction de cette belle valeur . priorité du traitement = récente utilisation du CPU /une priorité constante + base + belle valeur .
Cet algorithme donne groupe d'utilisateurs deux fois sur la fente pour le groupe B , trois fois celle de C et quatre fois celui de D, où un processus utilisateur sont regroupés par priorité . Cette méthode n'est pas appropriée pour le traitement en temps réel , où le processus ne peut pas se permettre d'attendre sur les tâches essentielles à la mission , un tel processus gagne l'utilisation du processeur instant en faisant des appels système et l'envoi de signaux d'interruption de haute priorité
< . br>