[SOS] Virtual Memory Manager
Christophe Lucas
clucas at rotomalug.org
Mer 10 Aou 10:32:10 CEST 2005
Thomas Petazzoni (thomas.petazzoni at enix.org) wrote:
> Salut,
>
> KAISER Edouard wrote:
>
> >Merci Thomas pour ces eclaircissements, y a que les cons qui changent
> >pas d'avis il parait, donc je me suis un peu pris en main et j'ai bien
> >relus le chapitre4. Tout semble plus clair dans ma tete sur la
> >pagination, et ce n'est pas du tout la montagne que je m'en etais fais
> >en tous cas.
> >Donc je vais l'implementer ! =)
>
> Ah, très bien !
>
> Ceci étant dit, je rappelle toutefois que faire un OS avec pagination
> reste une possibilité. On peut très bien faire un OS sans pagination,
> mais à ce moment là, on n'aura pas toutes les fonctionnalités d'un OS
> classique de bureau/serveur. Par contre, ne pas avoir de pagination
> permet de garantir d'autres propriétés au niveau temps-réel par exemple.
>
> >Au passage, pourquoi avoir choisis des champs aussi grand que
> >sos_ui32_t dans la struct x86_pde ou x86_pte pour les champs qui ne
> >font qu'un bit au final ? (R/W, P etc...).
>
> Je répondrais: « Pourquoi pas ? »
>
> Honnêtement, je ne sais pas exactement. Sans doute qu'avec un unsigned
> char ça aurait marché.
Je dirais qu'à première vue ca marcherait:
#include <unistd.h>
#include <stdio.h>
struct a {
unsigned long int champ_1:1;
unsigned long int champ_2:1;
};
struct b {
unsigned char champ_1:1;
unsigned char champ_2:1;
};
int main(int argc, char* argv)
{
struct a A;
struct b B;
A.champ_1 = 1;
A.champ_2 = 1;
B.champ_1 = 1;
B.champ_2 = 1;
}
et:
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
leal -4(%ebp), %eax
orb $1, (%eax)
leal -4(%ebp), %eax
orb $2, (%eax)
leal -5(%ebp), %eax
orb $1, (%eax)
leal -5(%ebp), %eax
orb $2, (%eax)
(listing assembleur incomplet)
Bonne journée,
- Christophe (clucas at rotomalug.org)
Plus d'informations sur la liste de diffusion Sos