L'accès direct à la mémoire ou DMA (sigle anglais de Direct Memory Access) est un procédé
informatique où des données circulant de ou vers un
périphérique (port de communication,
disque dur) sont transférées directement par un
contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour commencer et conclure le transfert. La conclusion du transfert ou la disponibilité du
périphérique peuvent être signalés par interruption.
On l'oppose ainsi à des techniques de polling
où le microprocesseur doit attendre chaque donnée.
Le DMA est nécessaire pour conserver la fluidité d'utilisation d'un système
multitâche lors de l'accès à des périphériques rapides, comme les disques durs [un
disque dur n'est pas « rapide » !]. En effet, en l'absence de DMA, le système est presque bloqué pendant les transferts de données. Par ailleurs, pour des périphériques rapides, il est impossible de transférer chaque donnée par une interruption. Une alternative est que le
périphérique ait une mémoire tampon partagée avec le système, dont le remplissage est signalé par une interruption. Cet arrangement, utilisé sur certains contrôleurs de réseau, induit cependant un surcoût en raison de la copie supplémentaire à faire.
On parle de DMA maître du bus (DMA busmaster) quand le
périphérique qui fait du DMA peut adresser lui-même les données sur le bus système, et de scatter-gather quand un même transfert peut porter sur une succession de plusieurs zones mémoires. Cette dernière fonctionnalité est pratique pour les systèmes à mémoire virtuelle, car un tampon situé à des adresses contigües en mémoire virtuelle est en général formé de plusieurs blocs de mémoire physique.
Pendant le fonctionnement du DMA, celui-ci entre parfois en conflit avec le
processeur, les mémoires ne pouvant effectuer par définition qu'un accès par cycle (puisque c'est la définition même du cycle). Le DMA ne pouvant pas forcément attendre aussi longtemps que le
processeur (qui ne risque pas, lui, de perdre de l'information au vol), il a la priorité d'accès, technique qui se nomme le vol de cycle.