Système d'exploitation - Partie 5
Si un programme informatique exécute un appel système pour effectuer une opération d'écriture d'E/S de bloc, cet appel peut exécuter les instructions suivantes :
Définir le contenu des registres du processeur (y compris le compteur de programme) dans le bloc de contrôle de processus.
Créer une entrée dans la table d'état des périphériques. Le système d'exploitation gère cette table pour suivre les processus en attente de chaque périphérique. Un champ de la table correspond à l'adresse mémoire du bloc de contrôle de processus.
Placer tous les caractères à envoyer au périphérique dans une mémoire tampon.
Définir l'adresse mémoire de la mémoire tampon sur un registre de périphérique prédéterminé.
Définir la taille de la mémoire tampon (un entier) sur un autre registre prédéterminé.
Exécuter l'instruction machine pour lancer l'écriture.
Effectuer un changement de contexte vers le processus suivant dans la file d'attente.
Pendant l'écriture, le système d'exploitation bascule normalement vers d'autres processus. Une fois l'écriture terminée, le périphérique interrompt le processus en cours en émettant une requête d'interruption. Le périphérique place également un entier sur le bus de données. Après avoir accepté la demande d'interruption, le système d'exploitation :
Pousse le contenu du compteur de programme (un registre), suivi du registre d'état, vers la pile d'appels.
Pousse le contenu des autres registres vers la pile d'appels. (Le contenu des registres peut également être placé dans une table système.)
Lit l'entier sur le bus de données. Cet entier constitue un décalage par rapport à la table des vecteurs d'interruption. Les instructions de la table des vecteurs :
Accès à la table d'état des périphériques.
Extraction du bloc de contrôle de processus.
Retour au processus d'écriture.
Lorsque la tranche de temps du processus d'écriture est expirée, le système d'exploitation :
Suppression des registres de la pile d'appels autres que le registre d'état et le compteur de programme.
Suppression du registre d'état.
Suppression de l'adresse de l'instruction suivante de la pile d'appels et réinsertion de cette dernière dans le compteur de programme.
Une fois le compteur de programme réinitialisé, le processus interrompu reprend sa tranche de temps.
Gestion de la mémoire
Entre autres choses, le noyau d'un système d'exploitation multiprogrammation doit gérer toute la mémoire système actuellement utilisée par les programmes. Cela garantit qu'un programme n'interfère pas avec la mémoire déjà utilisée par un autre programme. Le temps de fonctionnement des programmes étant partagé, chaque programme doit disposer d'un accès indépendant à la mémoire.
La gestion coopérative de la mémoire, utilisée par de nombreux systèmes d'exploitation anciens, suppose que tous les programmes utilisent volontairement le gestionnaire de mémoire du noyau et ne dépassent pas la mémoire allouée. Ce système de gestion de la mémoire est quasiment introuvable aujourd'hui, car les programmes contiennent souvent des bogues qui peuvent les faire dépasser la mémoire allouée. Si un programme échoue, la mémoire utilisée par un ou plusieurs autres programmes peut être affectée ou écrasée. Des programmes malveillants ou des virus peuvent altérer intentionnellement la mémoire d'un autre programme ou affecter le fonctionnement du système d'exploitation lui-même. Avec la gestion coopérative de la mémoire, il suffit d'un seul programme défaillant pour planter le système.
La protection de la mémoire permet au noyau de limiter l'accès d'un processus à la mémoire de l'ordinateur. Il existe différentes méthodes de protection de la mémoire, notamment la segmentation et la pagination. Toutes les méthodes nécessitent un certain niveau de support matériel (comme la MMU 80286), qui n'est pas présent sur tous les ordinateurs.
En segmentation comme en pagination, certains registres en mode protégé indiquent au processeur l'adresse mémoire à laquelle un programme en cours d'exécution doit accéder. Toute tentative d'accès à d'autres adresses déclenche une interruption, ce qui force le processeur à repasser en mode superviseur, plaçant le noyau en charge. On parle alors de violation de segmentation, ou Seg-V. Comme il est difficile d'attribuer un résultat significatif à une telle opération et qu'elle est généralement le signe d'un programme défectueux, le noyau termine généralement le programme fautif et signale l'erreur.
Les versions 3.1 à ME de Windows disposaient d'un certain niveau de protection mémoire, mais les programmes pouvaient facilement contourner son utilisation. Une erreur de protection générale se produisait, indiquant une violation de segmentation ; cependant, le système plantait souvent malgré tout.
Link 1
Link 2
Link 3
Link 4
Link 5
Link 6
Link 7
Link 8
Link 9
Link 10
Link 11
Link 12
Link 13
Link 14
Link 15
Ajouter un commentaire