-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Maitrise de la VMM #173
Comments
A noter que pour la plupart des drivers utilisant des DMA ou le bus PCI, il est souvent question d'accès à des adresses physiques connues. Pour cette raison, avoir des interfaces simples pour mapper des adresses physiques dans l'adressage virtuel du kernel est très prioritaire. |
Je te trouve un peu dur, si on a perdu la maîtrise, c'est surtout parce que ça a été fait au début du projet et qu'on a eu le temps d'oublier comment ça marchait. L'aspect VMM ainsi que la partie malloc, a été réalisée par NoWiS et la partie pagination par moi-même. Niveau doc, on ne part pas de rien : https://github.com/TacOS-team/tacos/wiki/VMM et https://github.com/TacOS-team/tacos/wiki/Pagination Je n'ai bien sûr rien contre la proposition : commenter/documenter le code ne fera pas de mal, c'est une partie assez complexe et ultra importante. Aucun problème pour le refactoring, si tu juges que certaines parties pourraient être mieux faites, vas-y. |
Oui bon j'exagère un peu, ceci dit je pense quand même qu'il nous manque un peu de maitrise pour pouvoir faire des choses simples comme mapper de la mémoire commune entre deux process (pourtant y'a pas de réelle difficulté en théorie) |
Je faisais un peu joujou ce matin :
@NoWiS- Est-ce que tu peux nous éclairer ? |
Note: quand il s'agit de gestion de mémoire, je me méfie toujours de l'absense de regression apparente... |
Note: j'ai aussi reverté en attendant une réponse claire. |
Vu que c'est un sujet qui ne devrait pas faire changer les interfaces mais seulement la façon dont sa fonctionne, je suggère une branche refactoring vmm |
Alors, j'ai re-regarder un peu le code. Je ne pense pas qu'en l'état passer à un push_back ne devrait pas amener de régression. Comme je l'avais déjà dis, je pense que le plus simple serait probablement de repartir de zéro. En ayant plus en tête ces histoire d'extension pour de la mémoire partagé, fichier etc... |
Repartir à 0? mais ça avait l'air tellement bien fait! |
Plus de 10 fois plus rapide au bout d'un moment. #173
Je songe à travailler un peu sur cette partie. J'aimerais débloquer tout ce qui est mmap, on doit pouvoir gagner énormément en perf. |
Je me suis plongé dedans, et lorsque je pense avoir compris, je tombe toujours sur un truc qui fait que je me pose d'autres questions, etc... Alors quelques remarques :
De ce que j'ai pu en comprendre, l'idée c'est de ne pas avoir un seul allocateur (kmalloc) mais tout un ensemble d'allocateurs spécialisés dans des morceaux de taille identique. Voir Bref, à garder dans un coin de la tête car il y a probablement moyen d'accélérer les perfs du système avec des allocateurs spécialisés.
Initialement j'avais pour objectif de coder mmap : suffit de réserver une région dans l'adressage virtuel et y associer un fichier ou rien si on veut juste des 0. Lors d'une tentative d'accès à une adresse de cette région, on parcours les régions pour identifier la bonne et on recopie dans la mémoire physique les données qui vont bien. Dans la théorie c'est simple, mais il faut s'emboiter avec l'existant... D'où les questions de tables pas forcément à jour ce qui peut poser des problèmes. |
Il faut admettre qu'on ne maitrise pas vraiment l'aspect VMM/Pagination dans TacOS.
Tant que ça sera le cas, on ne pourra pas envisager d'avoir de la SHM, un mmap ou des MMIO. On doit reprendre la main sur cette partie du code.
Cela passera je pense par les étapes suivantes:
L'idée serait à la fin d'avoir une idée précise du layout de la mémoire physique et virtuelle.
The text was updated successfully, but these errors were encountered: