De la section 5.1.4 Accès direct à la mémoire dans 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é dans la Fig.
Pour expliquer le fonctionnement de DMA, examinons d'abord comment les lectures de disque se produisent lorsque DMA n'est pas utilisé.
- Tout d'abord, le contrôleur de disque lit 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 à partir de le 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 à partir d'un = registre de périphérique du contrôleur et le stocker 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 dit-il à 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.
- Tout d'abord, la CPU programme le contrôleur DMA en définissant ses registres pour 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 via 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 processeur ou d'un contrôleur DMA. En règle générale, l'adresse mémoire à laquelle écrire est sur les lignes d'adresse du bus, donc lorsque le contrôleur de disque récupère le mot suivant dans son tampon interne, il sait où l'écrire. L'écriture dans la 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 diminue 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 son 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 DMA contrôleur 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).
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 périphérique un contrôleur DMA contrôle-t-il et exécute-t-il des opérations?
Merci!
Q1
Dans la première étape, nous n'utilisons PAS DMA, donc le contenu du contrôleur de disque est lu morceau par morceau par le processeur. Le processeur va bien sûr (en supposant que les données seront réellement utilisées pour quelque chose, et pas seulement être jetées) les stocker dans la mémoire du système.
Le tampon dans ce cas est un morceau de mémoire sur le disque dur (contrôleur) lui-même, et le dispositif de contrôleur enregistre un registre de contrôle du disque dur (contrôleur) lui-même.
Ne pas impliquer le système d'exploitation (ou un autre logiciel) nécessiterait une sorte d'opération DMA, et la section de texte dont vous discutez dans cette partie de votre question N'utilise PAS DMA. Donc, non, ça ne se passera pas comme ça dans ce cas.
Q2
Donc, tout l'intérêt d'un contrôleur DMA est de "réaliser la tâche fastidieuse de stocker des éléments du tampon interne de l'appareil dans la mémoire principale". Le CPU fonctionnera avec les deux DMA et périphérique de disque. Si le disque pouvait le faire lui-même, il n'y aurait pas besoin d'un contrôleur DMA.
Et en effet, dans les systèmes modernes, la capacité DMA est généralement intégrée au contrôleur de disque dur lui-même, en ce sens que le contrôleur possède des capacités de "maîtrise du bus", ce qui signifie que le contrôleur lui-même [~ # ~] est [~ # ~] le DMA contrôleur pour le périphérique. Cependant, pour les regarder car deux appareils séparés rendent le concept de DMA un peu moins difficile à comprendre).
Q (sorte de)
Si vous considérez le disque dur comme la pile de briques qui vient d'être livrée sur un chantier, et le processeur est le maçon qui pose les briques pour construire la maison. Le contrôleur DMA est l'ouvrier qui transporte les briques de la pile de briques à l'endroit où elles sont nécessaires pour le maçon, ce qui signifie que le maçon peut se concentrer sur le travail réel de pose de briques (qui est un travail qualifié, si vous l'avez déjà essayé vous-même), et le simple travail de "chercher et porter" peut être effectué par un travailleur moins qualifié.
Preuve anecdotique: la première fois que j'ai entendu parler de DMA transfert du disque vers la mémoire, c'était vers 1997 environ) IDE ont commencé à utiliser DMA et vous aviez besoin pilote "carte mère IDE contrôleur" pour permettre au IDE de faire du DMA, et à ce moment-là, la lecture à partir du disque dur prendrait environ 6-10% du temps CPU, où DMA dans la même configuration utiliserait environ 1% du temps CPU. Avant cette date, seuls les systèmes sophistiqués avec des contrôleurs de disque SCSI utiliseraient DMA.
Ce n'est pas une réponse; c'est une demande de clarification trop longue pour tenir dans les commentaires.
Avant que quiconque puisse répondre à cette question, il faut expliquer clairement l'architecture du système informatique dont il est question. À savoir:
Quels sont les systèmes de bus impliqués dans cette description?
Le disque IO passe-t-il également par le bus mémoire?
Le contrôleur de disque voit-il le bus mémoire comme ...
Alors ... qu'est-ce que le contrôleur de disque pense que le bus "est réellement"?
Dans la plupart des systèmes informatiques, il existe une sorte de IO appelé "Port I/O".
Dans les systèmes plus avancés (enfin, il y a deux décennies), il existe de nouveaux types de systèmes de bus. Par exemple, ISA, PCI, AGP, PCMCIA ... SCSI, ATA, SAS, SATA, FC-AL ...
Maintenant, avec autant d'incertitudes sur "le système informatique dont on discute", vous pouvez comprendre pourquoi vous n'obtiendrez pas de réponse claire à votre question.
Oui, je sais que cela vient d'un manuel. Vous en avez une copie. Je ne. (Pas à la maison - il y en a un au bureau, cependant.) Par conséquent, si vous avez besoin d'une réponse, vous devrez montrer quelques diagrammes et expliquer à quoi ressemble le système de bus de votre ordinateur.
En fin de compte, cependant:
A DMA est un appareil programmable. Autrement dit, le CPU a la responsabilité ultime de dire le DMA quoi faire. Bien sûr, pendant l'intervalle de temps où le DMA prend le contrôle du système, le CPU coopérera en laissant le DMA = exécuter le spectacle.
Sous le contrôle du CPU (et de l'OS qui l'exécute), un DMA a la capacité de prendre le contrôle de un ou plusieurs bus (pluriel) afin de faciliter le transfert des données du contrôleur de disque vers la mémoire principale.
Pendant la période où le DMA prend le bus (pluriel), le DMA émettra des commandes sur ce bus - c'est-à-dire à la place de son contrôleur habituel, c'est-à-dire le DMA prétend qu'il fait le travail du CPU.
Si le transfert de données implique deux bus différents, le DMA peut devoir le faire sur un bus différent.
Pour pouvoir déplacer un certain nombre d'octets (mots, etc.), le DMA contient un compteur de boucle pour garder une trace de la quantité restante de données à copier.
Pour pouvoir écrire dans la mémoire principale, le DMA contient un registre d'adresse mémoire, qui est programmable par le CPU, afin que le CPU puisse dire le DMA = où écrire les données.
En fonction de la conception du bus du système, le DMA peut ou non avoir à gérer les horribles détails des cycles de synchronisation DRAM.
Il était une fois, quelque temps après que DMA a été inventé, certains périphériques commencent à pré-emballer DMA sur leurs contrôleurs - c'est ce qu'on appelle Bus Mastering. Pourtant, que le DMA se trouve sur le package CPU, la carte mère ou la carte d'E/S, il doit être finalement sous le contrôle (programmation) du CPU , car ils doivent en quelque sorte négocier l'accès au bus système (pluriel) et à la mémoire principale.
Les systèmes informatiques modernes ont un sous-système dédié appelé contrôleur DRAM. S'il y en a un, il est presque certain que ce contrôleur DRAM remplira également les fonctionnalités du DMA, c'est-à-dire qu'il ressemble à une "boucle de copie d'octets" programmable, et toute la complexité susmentionnée est cachée à l'intérieur du silicium de la DRAM. Manette.
Si vous trouvez cela très déroutant - je le trouve déroutant aussi - vous aurez besoin de diagrammes. Beaucoup de diagrammes. Diagrammes du système. Diagrammes de bus. Diagrammes de temps. Diagrammes de transition d'état. etc.