This shows you the differences between two versions of the page.
sde2:laboratoare:07_rust [2023/04/20 19:26] cristiana.andrei created |
sde2:laboratoare:07_rust [2023/04/25 08:12] (current) cristiana.andrei [Bibliographie] |
||
---|---|---|---|
Line 6: | Line 6: | ||
* Inspection de la disposition de la mémoire de processus (pmap) | * Inspection de la disposition de la mémoire de processus (pmap) | ||
* Mappage de fichiers et de pages vides en mémoire | * Mappage de fichiers et de pages vides en mémoire | ||
+ | |||
+ | ===== Assignment ===== | ||
+ | <note warning> | ||
+ | Vous devez **accepter** le assignment d'ici et travailler avec ce repository: [[https://classroom.github.com/a/w8JfjnXL|Lab7]] | ||
+ | </note> | ||
===== Gestion de la mémoire ===== | ===== Gestion de la mémoire ===== | ||
Line 42: | Line 47: | ||
<code c> | <code c> | ||
static mut a: u32 = 3; | static mut a: u32 = 3; | ||
- | let b: char = 'a'; | ||
</code> | </code> | ||
Line 51: | Line 55: | ||
<code c> | <code c> | ||
static mut a: u32 = 0; | static mut a: u32 = 0; | ||
- | let b: char; | ||
</code> | </code> | ||
Line 64: | Line 67: | ||
</code> | </code> | ||
- | et __contenu__. Toutes les variables globales déclarées avec le mot-clé '' const '' seront placées dans les '' données ''. Les variables locales déclarées comme "const" seront placées sur la pile, donc dans une zone mémoire non marquée comme // en lecture seule // et peuvent être modifiées par un pointeur sur elles. Un cas particulier est représenté par les variables locales constantes déclarées avec le mot-clé '' statique '' qui seront mises dans le '' .data '': | + | et __contenu__. Toutes les variables globales déclarées avec le mot-clé '' const '' seront sont alignées dans leur lieu d'utilisation. Les variables locales déclarées seront placées sur la pile, Un cas particulier est représenté par les variables locales constantes déclarées avec le mot-clé '' static '' qui seront mises dans le '' .data '': |
<code c> | <code c> | ||
static mut a: u32 = 0; /* dans .rodata */ | static mut a: u32 = 0; /* dans .rodata */ | ||
Line 71: | Line 74: | ||
{ | { | ||
let a: i32 /* sur la pile */ | let a: i32 /* sur la pile */ | ||
- | const SOME_CONST: u32 = 2; /* sur la pile */ | + | let some_const: u32 = 2; /* sur la pile */ |
static mut p: u32 = 8; /* dans .data */ | static mut p: u32 = 8; /* dans .data */ | ||
+ | static p: u32 = 8; /* dans .rodata */ | ||
... | ... | ||
</code> | </code> | ||
Line 306: | Line 310: | ||
* [[https://docs.rs/nix/latest/nix/sys/mman/struct.ProtFlags.html|ProtFlags]] | * [[https://docs.rs/nix/latest/nix/sys/mman/struct.ProtFlags.html|ProtFlags]] | ||
* [[https://docs.rs/nix/latest/nix/sys/mman/struct.MapFlags.html|MapFlags]] | * [[https://docs.rs/nix/latest/nix/sys/mman/struct.MapFlags.html|MapFlags]] | ||
- | + | ===== Exercices ===== | |
- | ===== Sujets ===== | + | - Exécutez le programme dans ex1. Répondez aux questions posées par le programme. |
- | - Clonez le [[https://github.com/UPB-FILS-SdE2/Solutions]] | + | |
- | - Exécutez le programme dans tp7/ex1. Répondez aux questions posées par le programme. | + | |
- Résolvez les lignes TODO (dans l'ordre) à partir de ex1. | - Résolvez les lignes TODO (dans l'ordre) à partir de ex1. | ||
- Résolvez les lignes TODO (dans l'ordre) de ex2. | - Résolvez les lignes TODO (dans l'ordre) de ex2. | ||
- Résolvez les lignes TODO (dans l'ordre) de ex3. | - Résolvez les lignes TODO (dans l'ordre) de ex3. | ||
- | |||
- | ===== Solutions ===== | ||
- | [[https://github.com/UPB-FILS-SdE2/Solutions/tree/main/tp7|Solutions]] | ||
| |