Les processus (tâches ou jobs) sont les images dynamiques de l'exécution d'un programme en mémoire centrale. Le contexte d'un processus correspond aux trois zones de l'environnement mémoire pour le code, pour les données statiques et dynamiques ainsi que la pile et à la zone système qui stocke les informations de l'environnement d'exécution du programme (liste des fichiers ouverts, registres, catalogue de travail, les signaux...). Un processus dispose d'un père unique et, dans le contexte de temps partagé multitâche, c'est l'ordonnanceur des processus (le scheduler) qui gère les transitions d'états des processus.
Le noyau Linux est un gestionnaire de processus, qui offrent des services. Ces services peuvent être appelés par le biais d'un appel système ou d'une commande.
Il existe deux modes d'exécution, le mode maître pour les routines systèmes et un mode utilisateur.
Le noyau comporte aussi des threads noyaux qui s'exécutent en mode maître pour des tâches spécifiques (...)
[...] Les processus accèdent donc par un descripteur de l'IPC dont la valeur est : n°_de_poste + (seq*nombre_de_postes_de_la_table) Si par exemple la table comporte 50 postes, le deuxième utilisateur du poste 4 disposera du descripteur Les sémaphores Les sémaphores constituent une solution pour résoudre le problème des conflits concurrents de processus distincts qui partagent une même ressource Définition Un sémaphore (un_sem) est constitué d'une variable entière E(un_sem) et d'une file d'attente F(un_sem). La variable E(un_sem) peut prendre des valeurs positives, négatives ou nulles. struct un_sem { int E(un_sem) ; son entier (void F(un_sem) ; / sa file d'attente } ; Cette structure ne peut être manipulée que par trois opérations P(un_sem), V(un_sem) et Init (un_sem,une_valeur). [...]
[...] Pour supprimer un fichier, on utilise : Int unlink ( char * nom_du_fichier) La valeur de retour est 0 en cas de succès LA SYNCHRONISATION PAR SIGNAUX 1. Principe Un signal est un message envoyé par le noyau à un processus ou à un groupe de processus pour indiquer l'occurrence d'un événement survenu au niveau système. La prise en compte du signal par le processus oblige celui-ci à exécuter une fonction de gestion du signal reçu (le signal est trappé). Par défaut, un signal provoque la fin du processus receveur. [...]
[...] Le champ sigpending est un drapeau qui signal l'existence d'un signal bloqué. Le champ gsig est un pointeur sur une structure de type signal_struct qui contient la définition des actions associées aux signaux L'émission d'un signal On dispose de la primitive : kill ( pid_t PID, int num_signal) La fonction retourne 0 ou La primitive raise ( int num_signal) permet d'envoyer un signal au programme lui même La réception d'un signal On dispose de la primitive : signal ( int num_signal, void traitement)(int)) ou traitement est le nom de la fonction de traitement exécutée à la réception du signal, cette fonction admet le numéro de signal en paramètre. [...]
[...] Les commandes disponibles sont : ps pour la visualisation des processus existants top pour une visualisation en temps réel nice pour changer le niveau de priorité kill - pour tuer un processus wait attend la fin du fils avant de reprendre son exécution exec recouvre le processus courant Les signaux envoyés aux processus peuvent ne pas entraîner sa mort,.en effet tous les signaux peuvent être trappés ( on utilise la commande trap dans les scripts).et associés à un traitement spécifique, sauf le signal (SIGKILL) de numéro 9 qui ne peut être trappé Les threads (processus légers) Il s'agit d'une extension du modèle traditionnel de processus(processus lourd), on dispose de plusieurs fils d'exécution indépendantes(compteur ordinal propre et pile d'exécution) pour un espace d'adressage commun. On parle d'acteur ou de processus à threads. Processus à threads ou acteur Ce mécanisme permet d'économiser du temps, par rapport aux processus lourds avec une seule file d'exécution, par la conservation du contexte mémoire puisque seule la file change. L'inconvénient est liée aux proplèmes de partage de ressources Les threads peuvent être utilisés au niveau utilisateur ou noyau. [...]
[...] Ils gardent la mémoire, via une file d'attente, des occurrences des signaux envoyés. Ils sont hiérarchisés au niveau de la priorité de réception. LA COMMUNICATION PAR TUBES On dispose des tubes systèmes et des tubes nommés. Un tube est un tuyau dans lequel un processus peut écrire et un autre lire les données à partir des plus anciennes (FIFO).Ce mode de communication est unidirectionnel et les données lues sont perdues Les tubes systèmes ou anonymes Ce tube est géré par le système au niveau du système de fichier, mais c'est un fichier sans nom. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture