LU-LSP-b11:L10
Praktiskais darbs #10
1. Uzrakstīt programmu, kas alocē atmiņu (drīkst pēc tam neatbrīvot). Uzdevums līdzīgs PD#7, drīkst izmantot tā kodu.
2. Salīdzināt dažādus atmiņas alokācijas veidus. Katram veidam izpētīt, 1) Kāds ir maksimālais atmiņas daudzums, ko tādā veidā var alocēt? 2) Kāds programmas darbības laiks uz max daudzumu? Laiku ieteicams mērīt ar programmu time. Lietošana - ja programma saucas pd10, tad
$ time ./pd10
Uzrakstīt secinājumus - savas hipotēzes "kāpēc tā notiek".
Allocēt atmiņu pa vienam megabaitam (= 1024*2024 baitu). Salīdzināt šādus veidus (doti koda fragmenti): 1) malloc():
void *p = malloc(MB); if (p == NULL) break;
2) mmap():
void *p = mmap(NULL, MB, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); if (p == (void *) -1) break;
3) sbrk():
void *p = sbrk(MB); if (p == (void *) -1) break;
3. Izpētīt, kā uzraksītajā programā tiek izmantota atmiņa tās palaišanas brīdī. Ar programmu objdump (argumenti objdump -h ./pd10) statiski noteikt:
- .text segmenta starta un beigu adreses
- .data segmenta sākuma un beigu adreses
- .bss segmenta sākuma un beigu adreses
Iesūtīšana
Iesūtīt kodu uz kursa asistenta e-pastu, faila nosaukums LSP_PD10_Vards_Uzvards.c,
Analīzi iesūtīt vēstules tekstā.
Subject "LSP PD10 Vards Uzvards".