Systèmes d’exploitation Processus conclusion
Modèle conceptuel de processus Pour masquer les effets des interruptions, les SE fournissent un modèle conceptuel de processus qui s’exécutent en « parallèle » Chaque processus possède son propre état et peut être considéré comme s’exécutant sur un processeur virtuel
Accès concurrents Les processus doivent parfois interagir en partageant, par exemple, une mémoire tampon Cette interaction peut induire des accès concurrents Dans ces situations, le « séquencement » dans le temps détermine le résultat Les accès concurrents engendrent des comportements non reproductibles
Section critique Nous avons introduit le concept de section critique pour éviter les accès concurrents Il s’agit d’une partie du code dans laquelle un processus accède à un objet partagé et veut en interdire l’accès aux autres processus Les sections critiques rendent possible l’exclusion mutuelle
IPC Les processus peuvent communiquer entre eux au moyen de primitives de communication Ces primitives assurent que jamais 2 processus ne seront en section critique en même temps, ce qui garantit l’exclusion mutuelle Un processus peut être élu (en cours d’exécution), prêt ou bloqué Cet état peut changer si un processus quelconque exécute une des primitives de communication inter- processus
Équivalence des IPC primitives de communication ont été proposées : –Les sémaphores –Les moniteurs –Les compteurs d’événements –Les échanges de messages Ces primitives sont théoriquement équivalentes en ce sens que chacune d’elles permet de réaliser les autres Les sémaphores et les échanges de messages sont le plus souvent utilisés dans les systèmes réels
Problèmes classiques Un certain nombre de problèmes classiques de communication inter-processus ont été résolus au moyen des primitives précédentes Souvent le premier test d’une nouvelle primitive consiste à résoudre ces problèmes classiques : –Producteur-consommateur –Philosophes –Lecteurs-rédacteurs –Coiffeur endormi Malgré ces primitives, il faut veiller à éviter les erreurs et les interblocages
Ordonnancement On connaît de nombreux algorithmes d’ordonnancement L’ordonnanceur doit déterminer le prochain processus à exécuter en prenant en considération des facteurs comme le tps de réponse, l’efficacité et l’équité Les algos les plus connus sont : –Le tourniquet –L’ordonnancement avec priorité –Les files à plusieurs niveaux –L’ordonnancement du plus court d’abord –L’ordonnancement garanti Le mécanisme d’ordonnancement et les décisions sont parfois disjoints dans certains systèmes pour davantage de souplesse
Interblocage Les interblocages sont un problème potentiel dans tout SE Ils se produisent : –Si des processus ont obtenu des accès exclusifs à un certain nombre de ressources –Et si chacun des processus demande une ressource détenue par un autre processus du groupe –Ils sont tous bloqués et aucun ne peut plus s’exécuter On peut détecter des interblocages à l’aide du graphe d’allocations des ressources (recherche de cycle), cependant aucune méthode satisfaisante ne permet la reprise On peut éviter l’apparition des interblocages en mémorisant les états sûrs et non sûrs : –Un état sûr, contrairement à un état non sûr, est un état pour lequel il existe une séquence d’événements qui garantit la terminaison de tous les processus –L’algorithme du banquier évite les interblocages en n’accordant pas une ressource si cela doit faire passer le système dans un état non sûr On peut prévenir l’apparition des interblocages en structurant le système de manière à éviter leur apparition –Ex : condition d’attente circulaire n’est pas vérifiée si on accorde une ressource à la fois On peut aussi éviter les interblocages en numérotant toutes les ressources et en s’assurant que les processus les demandent en ordre croissant La famine peut être évitée par une politique d’allocation premier-arrivé, premier-servi
Applications Une application du cours a été réalisée sous UNIX Avec les études notamment des primitives : –fork –exec* –signal, kill –pipe –mkfifo –semget, semop –shmget, shmat, shmdt, shmctl –socket, send, receive –…–…