[SOS] Virtual Memory Manager

KAISER Edouard edouard.kaiser at gmail.com
Dim 4 Sep 19:30:10 CEST 2005


Salut à tous !
J'avais mis en pause quelque temps le dévelopement de mon coté, et
aprés moultes tentatives de mise en place de la pagination, j'éprouve
toujours quelques difficultés.
Alors je me suis dis que finalement c'est l'occasion de faire quelque
chose de différent des tutoriaux d'OS que l'on trouve et de pousser à
fond le mécanisme de la segmentation et d'utiliser tout ce que me
propose l'architecture x86 (TSS, LDT, GDT etc...).
Alors plutot que de me baser sur un flat model, je vais utiliser un
modele à multisegments.
Selon vos connaissances sur l'architecture x86 comment voyer vous la
chose en ce qui concerne donc la gestion de la mémoire ?
Personnellement je vois dans la GDT 4 descripteurs de base (NULL, Code
Noyau, Data Noyau, Stack Noyau).
Ensuite le reste de la GDT sera dédié aux segments utilisateurs.

Par quoi serait caractérisé un processus utilisateur ?
- Un TSS qui aurait son descripteur dans la GDT
- Une LDT contenant 4 descripteurs (NULL imposée.., Code utilisateur,
Data utilisateur, et le Stack pour finir).

Que ferait le noyau de son cote ?
Le noyau possèderait un tableau statique (pour l'instant...) qui
contiendrait dans chacune de ses cases une structure caractérisant un
processus pour l'OS (PID, état, priorité, pointeur vers le TSS ? ,
etc...).
Bien sur à travers l'IRQ0 dont l'entrée dans l'IDT pointera vers une
fonction de scheduling, le noyau s'occupera d'elire un processus (mise
en place de son TSS, on fait pointer les registres vers ses
descripteurs) et de mettre à jour son tableau.

Je sais que ce type de modele limite le nombre de processus. Mais peu
importe nous avons suffisement d'entrée dans la GDT pour réaliser
quelques choses de viable sans être du niveau d'un grand Unix.

Je souhaiterai avoir vos avis sur comment je vois la chose, vos
conseils, comment vous envisageriait la chose en prenant compte que
nous partons sur un modele multi segments.

Merci à tous !
----
KAISER Edouard.
Wiki-Blog : http://kaiser.edouard.free.fr/
BesOS : http://besos.mtp.epsi.fr/


Plus d'informations sur la liste de diffusion Sos