thumb|Exemple d'interblocage : le processus P1 utilise la ressource R2 qui est attendue par le processus P2 qui utilise la ressource R1, attendue par P1.
Un interblocage (ou étreinte fatale, deadlock en anglais) est un phénomène qui peut survenir en programmation concurrente. L'interblocage se produit lorsque des processus concurrents s'attendent mutuellement. Un processus peut aussi s'attendre lui-même. Les processus bloqués dans cet état le sont définitivement, il s'agit donc d'une situation catastrophique. Les mécanismes conduisant aux phénomènes d'interblocage ont été étudiés principalement par Edward Coffman, Jr.
Une situation de blocage sur une ressource peut survenir si et seulement si toutes les conditions suivantes sont réunies simultanément dans un système:
Exclusion mutuelle: Au moins une ressource doit être conservée dans un mode non partageable. Sinon, les processus ne seraient pas empêchés d'utiliser la ressource si nécessaire. Un seul processus peut utiliser la ressource à un instant donné.
Hold and wait ou resource holding : un processus détient actuellement au moins une ressource et demande des ressources supplémentaires qui sont détenues par d'autres processus.
Non preemption: une ressource ne peut être libérée que volontairement par le processus qui la détient.
Attente circulaire: chaque processus doit attendre une ressource qui est détenue par un autre processus, qui à son tour attend que le premier processus libère la ressource. En général, il existe un ensemble de processus en attente, P = { P 1 , P 2 ,..., P N }, tel que P 1 attend une ressource détenue par P 2 , P 2 attend une ressource détenue par P 3
Ces quatre conditions sont connues sous le nom de «conditions de Coffman» d'après leur première description dans un article de 1971 par Edward G. Coffman, Jr.
Bien que ces conditions soient suffisantes pour produire un blocage sur les systèmes de ressources à instance unique, elles indiquent uniquement la possibilité d'un blocage sur les systèmes ayant plusieurs instances de ressources.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Multiprocessors are a core component in all types of computing infrastructure, from phones to datacenters. This course will build on the prerequisites of processor design and concurrency to introduce
Multiprocessors are now the defacto building blocks for all computer systems. This course will build upon the basic concepts offered in Computer Architecture I to cover the architecture and organizati
Course no longer offered for new students; this edition is only a make-up course for those who repeated the year. Please log in with EPFL credentials and consult the mediaspace link below for course v
Un verrou informatique permet de s'assurer qu'une seule personne, ou un seul processus accède à une ressource à un instant donné. Ceci est souvent utilisé dans le domaine des accès à des fichiers sur des systèmes d'exploitation multi-utilisateur, car si deux programmes modifient un même fichier au même moment, le risque est de : provoquer des erreurs dans un des deux programmes, voire dans les deux ; laisser le fichier en fin de traitement dans une complète incohérence ; endommager le fichier manipulé.
Un Mutex (anglais : Mutual exclusion, Exclusion mutuelle) est une primitive de synchronisation utilisée en programmation informatique pour éviter que des ressources partagées d'un système ne soient utilisées en même temps. Son implémentation varie selon les systèmes (masquage des interruptions, lecture/écriture en un cycle, etc.) Ces algorithmes permettent de réguler l'accès aux données, en permettant par exemple qu'une seule routine y accède à la fois. Un Mutex M.M.
Une boucle infinie est, en programmation informatique, une boucle dont la condition de sortie n'a pas été définie ou ne peut pas être satisfaite. En conséquence, la boucle ne peut se terminer qu'à l'interruption du programme qui l'utilise. Il y a rarement un intérêt à programmer une boucle infinie. Une telle boucle ne permet pas de faire sortir un résultat, et accapare les ressources de l'ordinateur. Sur un système monotâche, une boucle infinie peut interdire à l'utilisateur toute autre action.
Explore l'importance de la concurrence dans l'amélioration des performances et de la réactivité du système, en mettant l'accent sur la nécessité de la synchronisation et de l'atomicité pour prévenir les conditions de course et le non-déterminisme.
Explore la spécialisation matérielle, les avantages ASIC par rapport aux processeurs et les stratégies pour atteindre des efficacités de type ASIC dans la conception des puces.
High-Level Synthesis (HLS) tools generate hardware designs from high-level programming languages. These tools almost universally build datapaths that are controlled using a centralized controller which relies on a static, compile-time schedule to determine ...
EPFL2021
, ,
Detecting anomalies in sound data has recently received significant attention due to the increasing number of implementations of sound condition monitoring solutions for critical assets. In this context, changing operating conditions impose significant dom ...
2022
,
A persistent transactional memory (PTM) library provides an easy-to-use interface to programmers for using byte-addressable non-volatile memory (NVM). Previously proposed PTMs have, so far, been blocking. We present OneFile, the first wait-free PTM with in ...