En fait, pour deux raisons, les concepteurs de systèmes d'exploitation ignorent en partie le problème de l'interblocage.
Les solutions retenues sont en fait une combinaison des politiques de reprise et de prévention.
La détection est assurée par l'utilisateur où l'ingénieur système. La reprise est une reprise par élimination d'un processus.
dma.c
.1 /* $Id: dma.c,v 1.7 1994/12/28 03:35:33 root Exp root $ 2 * linux/kernel/dma.c: A DMA channel allocator. Inspired by linux/kernel/irq.c. 3 * 4 * Written by Hennus Bergman, 1992. 11 */ 12 13 #include <linux/kernel.h> 14 #include <linux/errno.h> 15 #include <asm/dma.h> 16 #include <asm/system.h> 17 18 19 /* A note on resource allocation: 20 * 21 * All drivers needing DMA channels, should allocate and release them 22 * through the public routines `request_dma()' and `free_dma()'. 23 * 24 * In order to avoid problems, all processes should allocate resources in 25 * the same sequence and release them in the reverse order. 26 * 27 * So, when allocating DMAs and IRQs, first allocate the IRQ, then the DMA. 28 * When releasing them, first release the DMA, then release the IRQ. 29 * If you don't, you may cause allocation requests to fail unnecessarily. 30 * This doesn't really matter now, but it will once we get real semaphores 31 * in the kernel. 32 */