Extrait de la section 5.1.4 Accès direct à la mémoire dans les systèmes d'exploitation modernes par Andrew S. Tanenbaum, Herbert Bos, 2014 ,
Pour simplifier l'explication, nous supposons que la CPU accède à tous les périphériques et à la mémoire via un bus système unique qui connecte la CPU, la mémoire et les périphériques d'E / S, comme illustré à la Fig. 5-4.
Pour expliquer le fonctionnement de DMA, examinons d'abord comment les lectures de disque se produisent lorsque le DMA n'est pas utilisé.
- Le contrôleur de disque lit d'abord le bloc (un ou plusieurs secteurs) du lecteur en série, bit par bit, jusqu'à ce que le bloc entier se trouve dans le tampon interne du contrôleur.
- Ensuite, il calcule la somme de contrôle pour vérifier qu'aucune erreur de lecture ne s'est produite. Ensuite, le contrôleur provoque une interruption. Lorsque le système d'exploitation commence à fonctionner, il peut lire le bloc de disque du tampon du contrôleur un octet ou un mot à la fois en exécutant une boucle, chaque itération lisant un octet ou un mot d'un registre de périphérique de contrôleur et le stockant dans la mémoire principale.
Q: dans la deuxième étape,
les données ne sont-elles pas transférées " du tampon du contrôleur " vers la mémoire principale? Pourquoi est-il indiqué à la fois "à partir du tampon du contrôleur " et "à partir d'un registre de périphérique de contrôleur "?
dans la deuxième étape, le contrôleur peut-il transférer des données de son tampon vers la mémoire principale, sans interrompre le processeur, et sans impliquer à nouveau le système d'exploitation?
Lorsque DMA est utilisé, la procédure est différente.
- D'abord, la CPU programme le contrôleur DMA en définissant ses registres afin qu'il sache quoi transférer où (étape 1 de la figure 5-4).
Il envoie également une commande au contrôleur de disque lui disant de lire les données du disque dans son tampon interne et de vérifier la somme de contrôle. - Lorsque des données valides se trouvent dans la mémoire tampon du contrôleur de disque, DMA peut commencer. Le contrôleur DMA initie le transfert en émettant une demande de lecture sur le bus vers le contrôleur de disque (étape 2). Cette demande de lecture ressemble à toute autre demande de lecture, et le contrôleur de disque ne sait pas (ou ne se soucie pas) si elle provient du CPU ou d'un contrôleur DMA. En règle générale, l'adresse mémoire sur laquelle écrire est sur les lignes d'adresse du bus. Ainsi, lorsque le contrôleur de disque récupère le mot suivant dans sa mémoire tampon interne, il sait où l'écrire. L'écriture en mémoire est un autre cycle de bus standard (étape 3).
- Une fois l'écriture terminée, le contrôleur de disque envoie un signal d'accusé de réception au contrôleur DMA, également via le bus (étape 4). Le contrôleur DMA incrémente ensuite l'adresse mémoire à utiliser et décrémente le nombre d'octets. Si le nombre d'octets est toujours supérieur à 0, les étapes 2 à 4 sont répétées jusqu'à ce que le nombre atteigne 0.
- À ce moment, le contrôleur DMA interrompt le CPU pour lui faire savoir que le transfert est maintenant terminé. Lorsque le système d'exploitation démarre, il n'a pas besoin de copier le bloc de disque dans la mémoire; il est déjà là.
Q: dans la deuxième étape, le contrôleur DMA demande au contrôleur de disque de transférer les données du tampon du contrôleur de disque vers la mémoire principale. Dans la première étape, le CPU envoie une commande au contrôleur de disque lui disant de lire les données du disque dans sa mémoire tampon interne. Dans le même temps, le processeur peut-il également dire au contrôleur de disque de transférer les données du tampon du contrôleur de disque vers la mémoire principale, lorsque le contrôleur de disque a fini de transférer les données du disque vers le tampon du contrôleur de disque, de sorte qu'il n'est pas nécessaire Contrôleur DMA pour dire au contrôleur de disque de transférer les données du tampon du contrôleur de disque vers la mémoire principale? (Je ne comprends pas pourquoi nous avons besoin d'un contrôleur DMA pour le transfert de données entre le disque et la mémoire principale, alors devinez que je manque quelque chose d'important pour comprendre la citation).
- D'abord, la CPU programme le contrôleur DMA en définissant ses registres afin qu'il sache quoi transférer où (étape 1 de la figure 5-4).
Un contrôleur de périphérique d'un périphérique contrôle le périphérique et effectue des opérations sur le périphérique. Sur quel appareil un contrôleur DMA contrôle-t-il et effectue-t-il des opérations?
Merci!