★ À maîtriser
Les processus concurrents permettent d’améliorer l’utilisation d’une machine monoprocesseur, de multiprogrammer des serveurs, de faire se dérouler en parallèle calcul et entrées-sorties, de lancer des sous-calculs sur une machine parallèle ou répartie et de répondre à des requêtes ou événements externes dans des systèmes temps réel, embarqués ou mobiles.
Le code de retour 0 indique une fin normale d’un processus, tandis qu’un code différent de 0 signale un comportement anormal en cours d’exécution ou à la terminaison.
📌 La séparation de commandes par des points-virgules les exécute en enchaînement sans qu’une erreur d’une commande affecte les suivantes, tandis que le tube | transmet la sortie d’une commande comme entrée de la suivante.
Compléments
📌 Un processus système appartient au super-utilisateur, tandis qu’un processus utilisateur est lancé par un utilisateur.
★ À maîtriser
La commande ps sans option affiche uniquement les processus associés au terminal depuis lequel elle est lancée.
Dans la sortie de ps, S indique l’état du processus : S signifie endormi, R actif, T stoppé et Z terminé en zombie.
Compléments
Un processus peut posséder au maximum OPEN_MAX descripteurs de fichier et peut en créer avec open, creat ou dup, en plus de ceux qu’il hérite de son père.
Dans ps, PID désigne l’identifiant du processus, PPID celui de son père, PGID celui de son groupe et SID celui de sa session.
Dans ps, UID identifie l’utilisateur propriétaire, PRI indique la priorité du processus, NI sa valeur nice, SZ sa taille en pages et WCHAN l’adresse de l’événement attendu par un processus endormi.
★ À maîtriser
📌 La pile contient notamment les variables locales, les paramètres et les adresses de retour des fonctions, tandis que le tas sert à l’allocation dynamique de variables.
📌 La fonction nice(incr) permet au processus d’augmenter incr dans l’intervalle [0-39], ce qui diminue sa priorité ; le super-utilisateur peut augmenter la priorité en donnant à incr une valeur inférieure à 0.
Compléments
Le code des fonctions est placé dans la zone code (text), qui est en lecture seule.
La zone Data+BSS contient les constantes et les variables initialisées ou non initialisées.
Le calcul de la priorité courante prend en compte une priorité de base liée au niveau d’interruption, le temps CPU récemment consommé et une priorité ajustable par le processus avec nice(incr).
Les états présentés pour un processus sont :
★ À maîtriser
La primitive fork() crée un processus fils par duplication du processus appelant.
Après fork(), la valeur de retour est -1 en cas d’échec, 0 dans le fils et le PID du fils dans le père.
Le fils partage les données du père lorsqu’il y accède en lecture, mais une donnée est recopiée dans son espace local lorsqu’il y accède en écriture.
Compléments
getpid() renvoie l’identifiant du processus appelant et getppid() renvoie celui de son père.
Le fils n’hérite pas de l’identification de son père, de ses temps d’exécution, de ses signaux pendants, de sa priorité ni de ses verrous sur les fichiers.
Le processus fils hérite de nombreux attributs du père, mais les verrous sur les fichiers détenus par le père ne sont pas hérités.
★ À maîtriser
📌 wait() attend la terminaison d’un fils, tandis que waitpid() permet de sélectionner un fils particulier à partir de son PID.
Compléments
Sans wait, la fin du fils laisse un zombie ; wait récupère ses informations et le supprime.
★ À maîtriser
Compléments
Les noms argc, argv et envp sont conventionnels et peuvent être remplacés par d’autres noms.
getenv("SHELL") permet de récupérer la valeur de la variable d’environnement SHELL.
★ À maîtriser
Les primitives exec chargent en mémoire, à la place du processus fils, un autre programme provenant d’un fichier binaire.
Les variantes execv, execvp et execve transmettent les paramètres sous forme de tableau, tandis que execl, execlp et execle les transmettent sous forme de liste terminée par NULL.
Compléments
📌 system("commande…") lance une commande en créant un nouveau shell pour l’interpréter.
execv transmet un vecteur ; execl transmet une liste.
Transmission des paramètres aux primitives exec
| Forme | Primitives | Transmission |
|---|---|---|
| Vecteur | execv, execvp, execve | Paramètres sous forme de tableau |
| Liste | execl, execlp, execle | Arguments successifs terminés par NULL |
Teste tes connaissances sur Architecture des systèmes avec 11 questions à choix multiples et corrections détaillées.
1. Sur un serveur monoprocesseur qui doit traiter plusieurs requêtes pendant que des opérations d’entrée-sortie sont en cours, quel intérêt les processus concurrents apportent-ils ?
2. Dans une commande shell, quelle différence s’applique entre `rapport ; statistiques` et `rapport | statistiques` ?
Mémorisez les concepts clés de Architecture des systèmes avec 10 flashcards interactives.
À quoi servent les processus concurrents sur une machine monoprocesseur ?
À améliorer l’utilisation de la machine.
Qu’est-ce qu’un processus ?
Une instance d’un programme en exécution, associée à des données et à un BCP.
Qu’affiche la commande ps sans option ?
Les processus associés au terminal depuis lequel elle est lancée.
Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.
Générateur de fiches