En fait, le Hurd sur L4 utilise les primitives fournies par L4, et la primitive correspondante est la notion de flexpage (fpage). Une flexpage est une region de memoire virtuelle, indivisible (c'est a dire qu'on ne peut pas mapper une fpage dans un espace d'adressage, puis unmapper une portion de cette fpage).
Donc oui, on peut gerer des pages de taille difference, mais ce n'est pas le Hurd qui fait cela, c'est L4.
Pour rentrer dans le detail de ce qui se passe: physmem, le serveur de memoire physique du Hurd, "se debrouille" pour que son espace d'adressage virtuel corresponde exactement a celui de la memoire physique (i.e. l'adresse 10 000 vu de physmem aura l'adresse physique 10 000).
Ensuite, les differentes applications vont faire des demandes d'allocation a physmem, qui va mapper une region de la memoire virtuelle de l'application appellante dans une region de sa propre memoire virtuelle (qui est en correspondance 1:1 avec la memoire physique).
Ainsi au final, l'application appelante se retrouve bien avec une portion de sa memoire virtuelle mappee dans de la memoire physique, ce qui realise l'equivalent d'un appel systeme mmap sur de la memoire anonyme sous Linux.
Au fait: on ne peut pas vraiment a ce stade parler de processus, en tout cas au sens UNIX du terme, car un processus correspond a un espace d'adressage qui comprend plusieurs thread (ce qui s'appelle une tache dans la terminologie L4), mais aussi nombre d'autres choses comme un PID, un UID, un GID, la liste des descripteurs ouverts...
La question du nombre de ressource allouee a chaque tache n'est pas encore definie, mais il est probable que le modele adopte sera celui du "marketplace": en fonction de la rarete des ressources disponibles (memoire, temps processeurs, IO) et de ce dont les autres ont besoin, chaque application aura la possibilite de s'adapter en echangeant, par exemple, de la memoire contre du temps processeur.
Mais ceci fera sans doute l'objet d'une nouvelle news :)
[^] # Re: Question bète
Posté par Matthieu Lemerre . En réponse à la dépêche Nouvelle avancée du port du Hurd sur L4. Évalué à 10.
Donc oui, on peut gerer des pages de taille difference, mais ce n'est pas le Hurd qui fait cela, c'est L4.
Pour rentrer dans le detail de ce qui se passe: physmem, le serveur de memoire physique du Hurd, "se debrouille" pour que son espace d'adressage virtuel corresponde exactement a celui de la memoire physique (i.e. l'adresse 10 000 vu de physmem aura l'adresse physique 10 000).
Ensuite, les differentes applications vont faire des demandes d'allocation a physmem, qui va mapper une region de la memoire virtuelle de l'application appellante dans une region de sa propre memoire virtuelle (qui est en correspondance 1:1 avec la memoire physique).
Ainsi au final, l'application appelante se retrouve bien avec une portion de sa memoire virtuelle mappee dans de la memoire physique, ce qui realise l'equivalent d'un appel systeme mmap sur de la memoire anonyme sous Linux.
Au fait: on ne peut pas vraiment a ce stade parler de processus, en tout cas au sens UNIX du terme, car un processus correspond a un espace d'adressage qui comprend plusieurs thread (ce qui s'appelle une tache dans la terminologie L4), mais aussi nombre d'autres choses comme un PID, un UID, un GID, la liste des descripteurs ouverts...
La question du nombre de ressource allouee a chaque tache n'est pas encore definie, mais il est probable que le modele adopte sera celui du "marketplace": en fonction de la rarete des ressources disponibles (memoire, temps processeurs, IO) et de ce dont les autres ont besoin, chaque application aura la possibilite de s'adapter en echangeant, par exemple, de la memoire contre du temps processeur.
Mais ceci fera sans doute l'objet d'une nouvelle news :)
PS: ta question n'etait pas bete du tout :)
http://l-lang.org/ - Conception du langage L