J'essaye de travailler sur ce problème: Un programme d'espaces utilisateur continue d'interroger un tampon pour recevoir des demandes d'un module de noyau et le sert, puis des réponses au noyau. Je veux rendre la solution beaucoup plus rapide, donc au lieu de créer un fichier de périphérique et de communiquer via celui-ci, j'alloue un tampon mémoire de l'espace utilisateur et le marque comme épinglé, afin que les pages mémoire ne soient jamais échangées. Ensuite, l'espace utilisateur invoque un appel système spécial pour informer le noyau du tampon mémoire afin que le module noyau puisse obtenir l'adresse physique de ce tampon. (parce que le programme d'espace utilisateur peut être désactivé par le contexte et donc l'adresse virtuelle ne signifie rien si le module noyau accède à la mémoire tampon à ce moment.)Comment puis-je accéder à la mémoire à une adresse physique connue dans un module noyau?
Lorsque le module veut envoyer une requête, il doit mettre la requête à tampon via l'adresse physique. La question est: Comment puis-je accéder au tampon à l'intérieur du module noyau via son adresse physique.
J'ai remarqué qu'il y a get_user_pages, mais je ne sais pas comment l'utiliser, ou peut-être existe-t-il d'autres méthodes?
Merci.
Comment cela serait-il plus rapide? Vous devez toujours faire un syscall pour indiquer au noyau que vous avez mis à jour le tampon. – mpe
Non, le thread noyau s'exécute sur un noyau dédié et continue d'interroger la réponse. –