Skip to content
Snippets Groups Projects
Commit 1d265655 authored by Fache Charles's avatar Fache Charles
Browse files

Questions up to 4.10

parent 419593cc
No related branches found
No related tags found
No related merge requests found
......@@ -21,7 +21,8 @@ Program Headers:
LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x00195e 0x00195e R E 0x1000
LOAD 0x00195e 0x0000000000000000 0x0000000000000000 0x000000 0x000000 0x1000
LOAD 0x002000 0x0000000000002000 0x0000000000002000 0x000038 0x000038 R 0x1000
LOAD 0x003000 0x0000000000003000 0x0000000000003000 0x000000 0x0004c8 RW 0x1000
LOAD 0x003000 0x0000000000003000 0x00000000000gis
03000 0x000000 0x0004c8 RW 0x1000
Numérotons les VMAs :
1. VA = [0x0000000000000000; 0x0000000000000000[ RWX=000
......@@ -44,4 +45,40 @@ L'instruction est la suivante dans init.asm :
sw s5,8(a0)
Donc cette faute a été levée en essayant d'écrire dans la mémoire, et à l'adresse 0x7008 selon le champs stval transmis dans le message d'erreur.
Question 4.7 :
3 page faults
Question 4.8 :
Le tas fait désormais 64 Mio. Cependant, on ne retrouve que 3 pages allouées.
..0x0:
.. ..0x0:
.. .. ..0x0: V=1 R=1 W=1 X=1 U=1 VAs=[0x0000000000000000; 0x0000000000000fff]
.. .. ..0x1: V=1 R=1 W=1 X=1 U=1 VAs=[0x0000000000001000; 0x0000000000001fff]
.. .. ..0x2: V=1 R=1 W=1 X=1 U=1 VAs=[0x0000000000002000; 0x0000000000002fff]
.. .. ..0x3: V=1 R=1 W=1 X=1 U=1 VAs=[0x0000000000003000; 0x0000000000003fff]
.. .. ..0x4: V=1 R=1 W=1 X=1 U=0 VAs=[0x0000000000004000; 0x0000000000004fff]
.. .. ..0x5: V=1 R=1 W=1 X=1 U=1 VAs=[0x0000000000005000; 0x0000000000005fff]
.. .. ..0x6: V=1 R=1 W=1 X=1 U=1 VAs=[0x0000000000006000; 0x0000000000006fff]
.. .. ..0x14: V=1 R=1 W=1 X=1 U=1 VAs=[0x0000000000014000; 0x0000000000014fff]
.. .. ..0x15: V=1 R=1 W=1 X=1 U=1 VAs=[0x0000000000015000; 0x0000000000015fff]
Question 4.9 :
Le message d'erreur obtenu est le suivant :
rwtest: write sbrk failed
En inspectant le code, on voit que ce message d'erreur s'affiche lorsque l'appel système suivant échoue :
write(fd, a, PGSIZE)
Question 4.10 :
Dans l'ordre, les fonctions par lesquelles on passe pour atteindre copyin sont :
- usertrap()
- syscall()
- sys_write()
- file_write()
- writei()
- either_copyin()
et enfin :
- copyin()
......@@ -377,7 +377,7 @@ int load_from_file(char* file,
}
int do_allocate(pagetable_t pagetable, struct proc* p, uint64 addr){
pte_t* pt_entry;
pte_t* pt_entry;
if ( !get_memory_area(p, addr)){
return ENOVMA;
}
......@@ -402,7 +402,6 @@ pte_t* pt_entry;
return EMAPFAILED;
}
return 0;
}
int do_allocate_range(pagetable_t pagetable, struct proc* p, uint64 addr, uint64 len){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment