[Kos-dev] identity mapping et noyau

Thomas Petazzoni kos-dev@yoda.isnpro.com
Thu, 08 Feb 2001 22:48:04 +0100


salut,

on va devoir realiser un allocateur de bloc de memoire physique pour la
gestion du DMA, et pour la gestion de divers peripheriques qui
demanderaient des gros blocs de memoire physique. ces allocations nous
obligeront a deplacer des choses dans la memoire, ce qui ne pose pas de
problemes grace a la pagination, et aux savants moyens (restants a
determiner) qui vont nous permettre de remonter d'une page physique a
ses diverses associations virtuelles.

seul hic : on ne peut pas deplacer le noyau !

en effet, celui-ci a ete reloge pour tourner dans l'idendity mapping, et
on ne doit pas casser l'idendity mapping (si une page a 6Mo appartient
au noyau, elle doit encore pointer a 6Mo en physique). pourtant si on a
besoin de l'espace du noyau, on est dans la merde !
la solution est simple : c'est que le noyau ne tourne pas dans
l'idendity mapping. il est reloge pour fonctionner a une adresse
virtuelle absolue, qui ne sera pas dans l'idendity mapping.
 il sera bien entendu encore accessible par l'idendity mapping, mais
sera execute via son adresse virtuelle propre. ceci requiert bien sur
d'avoir mis en place la pagination avant d'entrer dans le noyau (oups,
desole d2 !).

une autre serait de dire : si on a besoin de deplacer le noyau, c k'on
prend trop de memoire, alors on dit 'et merde tu nous fais c*i*r avec ta
memoire physique d'abord t'en auras pas'. mais bon c un peu bete si on
peut le faire non ?

je sais tjs pas pourquoi mon pauvre scheduler ne marche pas.. mais j'ai
pas trop regarde.

amicalement,

thomas
-- 
PETAZZONI Thomas
thomas.petazzoni@meridon.com     UIN : 34937744
Projet KOS : http://kos.enix.org