Skip to content

Exemple de la premiere page d`un memoire

Un IOMMU peut rendre la vie plus facile de plusieurs façons (faire un tampon dispersé en mémoire apparaît contigu à l`appareil, par exemple), mais la programmation de l`IOMMU est une étape supplémentaire qui doit être effectuée lors de la configuration des opérations DMA. Le premier d`entre eux est que le matériel raisonnable est livré avec un IOMMU qui fournit un ensemble de registres de mappage pour le bus. Souvenez-vous que les processeurs modernes conservent des copies des zones de mémoire récemment consultées dans un cache local rapide; sans ce cache, des performances raisonnables ne sont pas possibles. C`est votre chance de brancher vos lecteurs et de les faire excité pour votre livre, alors prenez le temps de bien faire. Certains systèmes ont compliqué le matériel de bus qui peut rendre la tâche DMA plus facile, ou plus difficile. Cependant, les nouveaux auteurs comme moi n`ont pas ce luxe. Vous devez prendre cette étape uniquement si vous êtes sûr que la surcharge des e/S tamponnées est vraiment ralentir les choses. Writer unboxed a cette chose appelée "flog a Pro" où ils invitent les gens à lire les premières pages de livres écrits par des auteurs célèbres, puis commenter si elles ont été déplacés pour continuer. En outre, il n`y a qu`une seule différence entre les implémentations nopages utilisées par scullp et scullv. Une grande partie de la gestion interne du système de la mémoire est effectuée sur une base par page.

Fichier d`en-tête requis pour définir les fonctions DMA génériques. À ce stade, le contrôle retourne à l`espace utilisateur. Par conséquent, la séquence requise des événements est de calculer l`adresse physique souhaitée, et de le transformer en un numéro de trame de page en déplaçant à droite les bits PAGE_SHIFT. Nom du fichier (généralement une image exécutable) qui a été mappé. Mais une prise de conscience de la façon de mapper la mémoire de l`espace utilisateur dans le noyau (avec get_user_pages) peut être utile. Par exemple, si nous considérons la chaîne de référence 3, 2, 1, 0, 3, 2, 4, 3, 2, 1, 0, 4 et 3 slots, nous obtenons 9 défauts de page total, mais si nous augmentons les fentes à 4, nous obtenons 10 défauts de page. Outre le calcul des décalages, ce code introduit une vérification qui signale une erreur lorsque le programme tente de mapper plus de mémoire que ce qui est disponible dans la région d`e/S du périphérique cible. Une fois que l`appel a été fait, le CPU "possède" le tampon DMA et peut travailler avec elle au besoin. La méthode retourne le pointeur de page struct pour la page physique après, peut-être, après avoir lu dans le stockage secondaire.

Lorsqu`un processus d`espace utilisateur appelle mmap pour mapper la mémoire de périphérique dans son espace d`adressage, le système répond en créant un nouveau VMA pour représenter ce mappage. Ce n`est pas facile à clouer, mais ça en vaut la peine. Notez qu`il n`y a aucun nombre d`utilisation associé aux VMAs; la zone est ouverte et fermée exactement une fois par chaque processus qui l`utilise. Dans la pratique, les deux fonctions sont identiques sur chaque architecture à l`exception de la SPARC, et vous voyez remap_pfn_range utilisé dans la plupart des situations. Sur les noyaux Linux supportant des pages immenses transparentes, ainsi que FreeBSD et Solaris, les applications profitent automatiquement des grandes pages, sans nécessiter de modification. Le pilote typique, cependant, veut mapper uniquement la petite plage d`adresses qui s`applique à son périphérique, pas toute la mémoire. Si, pour une raison quelconque, une page normale ne peut pas être retournée (e. erreur de page – un défaut de page est un type d`interruption, déclenché par le matériel lorsqu`un programme en cours d`exécution accède à une page de mémoire mappée dans l`espace d`adressage virtuel, mais pas chargé dans la mémoire physique.

Retourne l`adresse de bus (DMA) à partir de cette entrée de scatterlist. À mon avis, cet exercice n`est pas tout à fait juste parce que les auteurs établis n`ont pas besoin de vous accrocher sur la première page-leurs fans savent déjà ce qu`ils obtiennent.

אם אהבתם... בבקשה תשתפו :)

כותב הפוסט:

יאיר וינר

Comments are closed.

כל הזכויות שמורות Go-Gui.co.il