Allocation de ressources

Un article de Wikipédia, l'encyclopédie libre.

Les méthodes de synchronisation

Barrière de synchronisation - Futex - Moniteur

Mutex - Sémaphore - Spinlock

Dans le contexte de la programmation concurrente, l'allocation de ressources est l'opération permettant d'affecter des ressources à un thread particulier. Cette opération est nécessaire dans le cadre de la programmation concurrente pour garantir les accès adaptées à des ressources partagées entre plusieurs thread. Une telle opération n'est pas nécessaire pour les ressources non partagées.

Il existe différents types de ressources partagées et donc aussi différents types d'accès à ces ressources ; La suite de cet article présente différents cas d'allocation de ressources. Il n'existe pas de solution permettant trivial pour traiter tous les types d'allocation ; Il existe des méthodes classiques pour des cas standards d'allocation, mais les allocations particulières doivent faire l'objet d'un algorithme adapté.

Sommaire

[modifier] Allocation de ressource n'autorisant qu'un thread à la fois

Ce genre de ressource peut par exemple être un espace mémoire, un bus d'accès au matériel. Il s'agit d'une ressource ne pouvant fonctionner qu'avec une seule tache travaillant avec elle.

L'allocation de ce genre de ressource est l'équivalent d'une section critique. Il est donc possible d'utiliser des méthodes simples pour gérer l'accès à cette ressource, comme par exemple les mutex.

[modifier] Allocation de ressource autorisant plusieurs thread à la fois

Ce genre de ressource supporte un nombre spécifique de thread pouvant l'utiliser à la fois.

L'allocation de ce genre de ressource peut s'effectuer à l'aide d'un sémaphore.

[modifier] Allocation de ressource sur réservation

Ce genre de ressource nécessite une réservation préalable. C'est par exemple le cas pour des applications critiques dans lesquelles la ressource devra absolument être disponible lorsqu'on en aura besoin.

L'allocation de ce genre de ressource utilise des méthodes comme l'Algorithme de Rayrole pour gérer un calendrier de réservation de la ressource.

[modifier] Allocation de ressource ayant des concepts de lecture/écriture

Ce genre de ressource peut être accédé par plusieurs thread en lecture et un seul thread en écriture. Il peut par exemple s'agir d'un fichier de données. Un problème classique dans ce genre d'allocation est le problème de la priorité entre les lecteurs et les rédacteurs.

Ce genre d'allocation est équivalent au Problème des lecteurs et des rédacteurs.

[modifier] Voir aussi