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,
- Kāds ir maksimālais atmiņas daudzums, ko tādā veidā var alocēt?
- 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".