Mise en oeuvrenoyau de synchronisation de processus
1 Description du noyau
Le noyau doit permettre l’exécution d’un certain nombre de processus, en leur fournissant un outil de synchronisation. Il nous faut gérer le partage des processus (machine monoprocesseur) et des différentes ressources et utiliser les sémaphores.
2 Les processus
Un processus qui s’exécute utilise une zone de code, de data, de pile et les registre. Les processus vont utiliser le processeur à tour de rôle, cela nécessite de pouvoir arrêter un processus avant son terme. Une partie du noyau de synchronisation s’occupe de l’attribution du processeur, c’est le SCHEDULER. Il y a deux façon de faire, avec préemption (de force ce qui implique l’usage des interruptions), sans préemption (quand le noyau récupère la main).
3 Les sémaphores
Un sémaphore est représenté par une structure à 2 champs :un entier e, un pointeur f sur une liste de descripteur.
4 Exemple
5 Entrées / Sorties du noyau
On accède au noyau via la routine d'interruption 223 (Il faut la programmer). Pour fontionner correctement, le noyau nécessite tout d'abord que l'on exécute une initialisation du système. Dans cette initialisation, on mettra en place les structures de données, on créera le contexe du processus actuellement lancé (p0) et on installera la routine d'interruption 223. Ensuite, lors des appels le noyau :
- sauvegardera le contexte ( tous les registres sauf CS,IP, F, SS et SP)
- sauvegardera SS et SP dans file_pret
- masquera les interruptions
- et selon le code fonction exécutera la fonction correspondante
- rendra les résultats à l'appelant
- démasquera les interruptions (automatique)
- restaurera le processus le plus prioritaire
- terminera par iret
|