in

Exemple de section critique

Les sections suivantes illustrent deux mécanismes de synchronisation. Seule la synchronisation de flux d`instruction [5] est nécessaire. L`état initial est l`état de la route. La clé à cela est la lecture du code tel qu`il est, non pas comme comment il a été signifié (par l`homme qui l`a écrit). Section critique est un morceau d`un programme qui exige l`exclusion mutuelle de l`accès. Le pilote du robot orange est susceptible d`être très bouleversé, donc nous devrions chercher une meilleure solution! Parking: cet état correspond au moment où le Thymio est dans la place de parking. Gardez une trace de laquelle Thymio entre dans la boucle en premier. Parking: cet état correspond au moment où le Thymio est dans la place de parking. Tout d`abord, B obtient l`accès à la section.

Il la demande est refusée, le processus boucle, en demandant continuellement le verrou jusqu`à ce que l`autorisation est accordée. Nous avons montré comment résoudre le problème de section critique, qui est le problème le plus fondamental dans la programmation simultanée. De même, si une interruption se produit dans une section critique, les informations d`interruption sont enregistrées pour le traitement ultérieur, et l`exécution est renvoyée au processus ou au thread dans la section critique. Le Thymio transmet mon ID + hors du parking. Pour entrer une section critique, un thread doit obtenir un sémaphore, qu`il libère à la sortie de la section. Cette approche en force brute peut être améliorée en utilisant des sémapes. Par exemple, si une variable`x`doit être lue par le processus A et que le processus B doit écrire à la même variable`x`en même temps, le processus A peut obtenir soit l`ancienne ou la nouvelle valeur de`x`. Étant donné que les sections critiques peuvent s`exécuter uniquement sur le processeur sur lequel elles sont saisies, la synchronisation n`est requise que dans le processeur d`exécution. Occasionnellement, ils ont besoin de faire du shopping et de chercher une place de parking. Ainsi, le drapeau [0] et l`indicateur [1] peuvent tous deux être 1 à droite à l`instant où le programme commence à s`exécuter.

La ligne suivante est exécutée. Comment pourrions-nous mettre en place une solution pour deux places de stationnement? Dans notre exemple, la taille de la file d`attente est déterminée par le chemin physique de la route, et nous aurions du mal à l`étendre après un certain point. Que se passe-t-il si un Thymio oublie de signaler qu`il quitte la place de stationnement? Route: dans cet État, le robot se déplace le long de la route. Considérez, maintenant, le comportement démontré dans la vidéo suivante. Une fois que la section critique est quittée, et dans certains cas le quantum planifié terminé, l`interruption en attente sera exécutée. À tout moment, le programme est dans l`un des plusieurs États et le programme décide de faire une transition d`un État à l`autre en fonction de ce qu`il ressent. Le programme dans le THYMIOS mettra en œuvre une machine d`État. Essayez de penser à des situations dans la vraie vie quand nous rencontrons le problème critique de section.

Pour éviter cela, une méthode est que la structure de données entière peut être conservée sous la section critique afin qu`une seule opération est gérée à la fois.