Systèmes d'exploitation

Disussions liées au livre Systèmes d'exploitation paru chez Pearson Education France.

Vous n'êtes pas identifié.

Annonce

Suite à des abus constatés et provoqués par des connexions de "robots", l'enregistrement de nouveaux utilisateurs est temporairement suspendu. Merci de contacter l'administrateur du site pour s'abonner au forum.


#1 09-02-2008 13:50:40

zentaf
New member
Date d'inscription: 09-02-2008
Messages: 4

Utilisation des sémphores avec TAS ?!

Bonjour à tous,
Comment peut-on utiliser les sémaphores avec des instructions spéciales telles " Test And Set "?
Salutations...

Hors ligne

 

#2 09-02-2008 22:20:47

BartLamiroy
Auteur
Lieu: Nancy
Date d'inscription: 04-12-2006
Messages: 24
Site web

Re: Utilisation des sémphores avec TAS ?!

Bonjour,

Pourriez-vous être plus précis dans votre question ? TAS est typiquement une instruction en langage machine tandis que le sémaphore est une structure de données fourni par l'OS et opérant à des niveaux d'abstraction plus élevés (langages de programmation de plus haut niveau). Les deux ont donc peu de chances de co-exister.

Ou souhaitez-vous savoir comment implanter des sémaphores avec des instructions de type TAS ?

Bart Lamiroy

Hors ligne

 

#3 11-02-2008 15:09:59

zentaf
New member
Date d'inscription: 09-02-2008
Messages: 4

Re: Utilisation des sémphores avec TAS ?!

Bonjour,

Exactement, c'est ça ce que je veux le savoir.

Salutations...

Hors ligne

 

#4 11-02-2008 16:39:38

BartLamiroy
Auteur
Lieu: Nancy
Date d'inscription: 04-12-2006
Messages: 24
Site web

Re: Utilisation des sémphores avec TAS ?!

Si vous souhaitez une réponse technique précise, le mieux est de regarder les codes sources du noyau Linux, par exemple, et de la libC pour avoir des exemples précis de mise en oeuvre qui prennent en considération tous les aspects du problème, intégrés dans les contraintes réelles d'un OS opérationnel.

Sur le principe :
- Le système gère un ensemble de structures de données potentiellement partagées par différents processus et que l'on appelle sémaphores. Cette structure de données comporte notamment un champ de gestion d'accès exclusif (mutex)
- Lorsqu'un processus fait appel à la bibliothèque système ad hoc fournissant les fonctions de gestion des sémaphores. Celle-ci, après les vérifications d'existence et de droits d'accès effectuées, tente de s'octroyer un accès exclusif à la ressource sémaphore en tentant de mettre le mutex à 0 (s'il n'y est pas déjà) avec une opération de type TSL ou TAS. Soit l'opération réussit, et le traitement du sémaphore continue. Soit elle échoue. Si elle échoue, elle retente d'en acquérir l'exclusivité. Ceci peut être fait en attente pseudo-active.
- Une fois l'exclusivité obtenue, si le traitement consiste à décrémenter le sémaphore, ceux cas se présentent :
   a/ le sémaphore vaut plus que 0, et le décrément s'opère sans tarder et un appel à TSL ou TAS rend le mutex.
   b/ le sémaphore vaut 0, auquel cas on enregistre dans la structure de données interne que le processus est en attente sur le sémaphore, on demande à l'ordonnanceur de mettre le processus en sommeil, et on libère le mutex avec TSL ou TAS, en positionnant les valeurs ad hoc pour que le processus reprenne au niveau de la vérification du mutex.
- Si le traitement consiste à incrémenter le sémaphore, on incrémente, et on vérifie si d'éventuels processus sont en attente sur le sémaphore. On demande à l'ordonnanceur de les réveiller et on libère le mutex avec un TSL ou TAS.

Bart Lamiroy

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson