TacOS-team / tacos

Système d'exploitation / Operating System
GNU General Public License v3.0
9 stars 4 forks source link

Tubes nommés #77

Open MaximeCheramy opened 12 years ago

MaximeCheramy commented 12 years ago

En attente de #76, après c'est pas compliqué je pense. Cela dit, pour des raisons de perfs, il faudrait pouvoir mmaper je pense.

MaximeCheramy commented 12 years ago

J'ai un peu réfléchi à la question hier et en fait, que ce soit pour des pipes nommés ou non, il me manque des choses dans le VFS. Il n'y a pas d'histoire de mmap par contre.

Lorsque j'ai créé ce ticket, j'avais en tête que les données de la FIFO pourrait être écrite sur le FS, et tant pis pour les perfs (d'où l'idée de mmap pour que cela reste en ram). Une autre idée que j'avais était de stocker dans le fichier des adresses mémoires pour les données, mais cela pose des problèmes : si on relance l'OS, la mémoire n'existe plus et le fichier n'est pas mis à jour.

Je me suis donc intéressé au fonctionnement sous Linux. Sans rentrer dans les détails, l'idée est que les infos nécessaires sont stockées dans la structure inode qui est gérée par le VFS. En simplifiant, l'inode est une structure qui reprend les infos dispos dans le FS au sujet d'un noeud (fichier, dossier, etc.) et y ajoute des infos utiles pour le VFS (là où le fichier est mmapé, les pages mémoires utilisées, les infos pour les fifo, sockets, etc) qui ne sont pas forcément dispos dans le FS.

Je ne souhaite pas repomper Linux donc je sens que je vais tenter un gros refactoring du VFS assez moche pour ajouter une structure intermédiaire dont on va avoir besoin. Je m'en occupe lorsque la 0.1 est sortie.

MaximeCheramy commented 11 years ago

C'est en cours. Mon problème actuel est lié au fait que le VFS crée un inode par ouverture de fichier ce qui empêche de créer un point de rencontre. Je dois donc finir le cache inode qui va contenir tous les inodes correspondant à des fichiers ouverts.

NicolasFloquet commented 11 years ago

s'en est où du coup ça?

MaximeCheramy commented 11 years ago

Bien avancé mais il faut finaliser et debugguer un peu. Ce qui m'embête c'est que pour tester je dois lancer getty et que ça plante.