Databac

NSI Terminale : Architecture matérielle, système d’exploitation, réseaux Cha7_2 : Les processus

Publié le 24/06/2024

Extrait du document

« NSI Terminale : Architecture matérielle, système d’exploitation, réseaux Cha7_2 : Les processus Objectifs pédagogiques : ⮚ Décrire la création d’un processus et l’ordonnancement de plusieurs processus par un système ⮚ Mettre en évidence le risque de l’interblocage (deadlock) Toute machine est dotée d’un système d’exploitation qui a pour fonction de charger les programmes depuis la mémoire de masse et de lancer leur exécution en leur créant des processus (process en anglais), de gérer l’ensemble des ressources, de traiter les interruptions ainsi que les entrées-sorties et enfin d’assurer la sécurité globale du système. 1.

Processus Tous les systèmes d'exploitation "modernes" (Linux, Windows, MacOS, Android, iOS...) sont capables de gérer l'exécution de plusieurs processus en même temps.

Mais pour être précis, cela n'est pas un réel "en même temps", mais plutôt un "chacun son tour".

Pour gérer ce "chacun son tour", les systèmes d'exploitation attributs des "états" au processus afin de les hiérarchiser. 1.1.Notion de processus Un processus informatique (en anglais process), est défini par : • • • un ensemble d'instructions à exécuter (un programme) ; un espace mémoire pour les données de travail ; éventuellement, d'autres ressources, comme des descripteurs de fichiers, des ports réseau, etc. Un ordinateur équipé d'un système d'exploitation à temps partagé est capable d'exécuter plusieurs processus de façon "quasi-simultanée".

S'il y a plusieurs processeurs, l'exécution des processus est distribuée de façon équitable entre chacun d’entre eux. Un processus peut être vu comme quelque chose qui prend un certain temps, donc qui a un début et (parfois) une fin.

Un processus peut se rencontrer sous différents états. Lorsqu’un processus est en train de s'exécuter, c’est-à-dire qu'il utilise les Diagramme d’état d’un processus ressources du microprocesseur, on dit qu’il est dans l'état "élu". Un processus qui se trouve dans l'état élu peut demander à accéder à une ressource pas forcément disponible instantanément (typiquement lire une donnée sur le disque dur).

Le processus ne peut pas poursuivre son exécution tant qu'il n'a pas obtenu cette ressource.

En attendant de recevoir cette ressource, il passe de l'état "élu" à l'état "bloqué". Activité Terminale NSI – Architectures matérielles, système d’exploitation et réseaux 1/17 Lorsque le processus finit par obtenir la ressource attendue, celui-ci peut potentiellement reprendre son exécution. Cependant, bien que les systèmes d'exploitation permettent de gérer plusieurs processus "en même temps", il n’en demeure pas moins qu’un seul processus peut se trouver dans un état "élu" (le microprocesseur ne peut "s'occuper" que d'un seul processus à la fois).

Quand un processus passe d'un état "élu" à un état "bloqué", un autre processus peut alors "prendre sa place" et passer dans l'état "élu".

Le processus qui vient de recevoir la ressource attendue ne va donc pas forcément pouvoir reprendre son exécution tout de suite, car pendant qu'il était dans à état "bloqué" un autre processus a "pris sa place".

Un processus qui quitte l'état bloqué ne repasse pas forcément à l'état "élu", il peut, en attendant que "la place se libère" passer dans l'état "prêt" ("j'ai obtenu ce que j'attendais, je suis prêt à reprendre mon exécution dès que la "place sera libérée""). Le passage de l'état "prêt" vers l'état "élu" constitue l'opération "d'élection".

Le passage de l'état élu vers l'état bloqué est l'opération de "blocage".

Un processus est toujours créé dans l'état "prêt".

Pour se terminer, un processus doit obligatoirement se trouver dans l'état "élu". Il est fondamental de bien comprendre que le "chef d'orchestre" qui attribue aux processus leur état "élu", "bloqué" ou "prêt" est le système d'exploitation (OS – Operating System).

On dit que le système d’exploitation gère l'ordonnancement des processus (un processus sera prioritaire sur un autre...). Remarque : un processus qui utilise une ressource doit la "libérer" une fois qu'il a fini de l'utiliser afin de la rendre disponible pour les autres processus.

Pour libérer une ressource, un processus doit obligatoirement être dans un état "élu". Un processus peut-être démarré par un utilisateur par l'intermédiaire d'un périphérique ou bien par un autre processus : les applications des utilisateurs sont des ensembles de processus plus ou moins complexes. Comme nous venons de le voir, Le système d'exploitation est chargé d'allouer les ressources (mémoires, temps processeur, entrées/sorties) nécessaires aux processus et d'assurer que le fonctionnement d'un processus n'interfère pas avec celui des autres (isolation).

Il peut aussi fournir une API (Application Programming Interface) pour permettre la communication inter-processus (IPC). Outre le multiplexage des ressources matérielles, le système peut contrôler l'accès des processus aux ressources selon une matrice de droits (permissions d'accès) et également associer les processus aux utilisateurs, qui sont les récipiendaires d'un ensemble de droits d'accès : un processus a les droits de l'utilisateur qui l'a démarré. Un processus peut s'arrêter de plusieurs manières : 1. 2. 3. 4. Arrêt normal (volontaire). Arrêt pour erreur (volontaire). Arrêt pour erreur fatale (involontaire). Le processus est arrêté par un autre processus (involontaire). La plupart des systèmes offrent la distinction entre processus lourd (tels que nous les avons décrits), qui sont a priori complètement isolés les uns des autres, et processus légers (Threads en anglais), qui ont un espace mémoire (et d'autres ressources) en commun. Dans le cas de processus comportant plusieurs processus légers (ou suivant l'expression souvent utilisée multi-thread) il existe un état du processeur (un contexte d'exécution) distinct pour chaque processus léger. Activité Terminale NSI – Architectures matérielles, système d’exploitation et réseaux 2/17 1.2.Création d’un processus Un processus peut créer un ou plusieurs processus à l'aide d'une commande système ("fork" sous les systèmes de type Unix).

Imaginons un processus A qui crée un processus B.

On dira que A est le père de B et que B est le fils de A.

B peut, à son tour créé un processus C (B sera le père de C et C le fils de B).

On peut modéliser ces relations père/fils par une structure arborescente (voir le schéma ci-contre). Si un processus est créé à partir d'un autre processus, comment est créé le tout premier processus ? Sous un système d'exploitation comme Linux, au moment du démarrage de l'ordinateur un tout premier processus (appelé processus 0 ou encore Swapper) est créé à partir de "rien" (il n'est le fils d'aucun processus).

Ensuite, ce processus 0 crée un processus souvent appelé "init" ("init" est donc le fils du processus 0). À partir de "init", les processus nécessaires au bon fonctionnement du système d’exploitation Linux sont créés (par exemple les processus "crond", "inetd", "getty",...).

Puis d'autres processus sont créés à partir des fils de "init"... Schéma de la création des processus de base sous Linux lors du lancement du système Activité Terminale NSI – Architectures matérielles, système d’exploitation et réseaux 3/17 1.3.

Identification des processus Chaque processus possède un identifiant appelé PID (Process Identification), ce PID est un nombre entier.

Le premier processus créé au démarrage du système à pour PID 0, le second 1, le troisième 2...

Le système d'exploitation utilise un compteur qui est incrémenté de 1 à chaque création de processus, le système utilise ce compteur pour attribuer les PID aux processus. Chaque processus possède aussi un PPID (Parent Process Identification).

Ce PPID permet de connaitre le processus parent d'un processus (par exemple le processus "init" vu ci-dessus à un PID de 1 et un PPID de 0).

À noter que le processus 0 ne possède pas de PPID (c'est le seul dans cette situation). 2.

Ordonnancement des processus Dans un système multi-utilisateurs à temps partagé, plusieurs processus peuvent être présents en mémoire centrale en attente d’exécution.

Si plusieurs processus sont prêts, le système d’exploitation doit gérer l’allocation du processeur aux différents processus à exécuter.

C’est l’ordonnanceur qui s’acquitte de cette tâche. 2.1.Notion d’ordonnancement Le système d’exploitation d’un ordinateur peut être vu comme un ensemble de processus dont l’exécution est gérée par un processus particulier : l’ordonnanceur (scheduler en anglais). Un ordonnanceur fait face à deux problèmes principaux : • le choix du processus à exécuter ; • le temps d’allocation du processeur au processus choisi. Un système d’exploitation multitâche est préemptif lorsque celui-ci peut arrêter (réquisition) à tout moment n’importe quelle application pour passer la main à la suivante. Dans les systèmes d’exploitation préemptifs on peut lancer plusieurs applications à la fois et passer de l’une à l’autre, voire lancer une application pendant qu’une autre effectue un travail. Il y a aussi des systèmes d’exploitation dits multitâches, qui sont en fait des « multi-tâches coopératifs ».

Quelle est la différence ? Un multitâche coopératif permet à plusieurs applications de fonctionner et d’occuper des plages mémoire, laissant le soin à ces applications de gérer cette occupation, au risque de bloquer tout le système. Par contre, avec un « multi-tâche préemptif », le noyau garde toujours le contrôle (qui fait quoi, quand et comment), et se réserve le droit de fermer les applications qui monopolisent les ressources du système.

Ainsi les blocages du système sont inexistants. 2.2.Objectifs de l’ordonnanceur d’un système multi-utilisateurs Les objectifs d’un ordonnanceur d’un système multi-utilisateurs sont, entre autres : • s’assurer que chaque processus en attente d’exécution reçoive sa part de temps processeur ; • minimiser.... »

↓↓↓ APERÇU DU DOCUMENT ↓↓↓

Liens utiles