Difference between revisions of "LU-LSP-b11:L10"
Line 12: | Line 12: | ||
Uzrakstīt '''secinājumus''': savas hipotēzes "kāpēc tā notiek". |
Uzrakstīt '''secinājumus''': savas hipotēzes "kāpēc tā notiek". |
||
Allocēt atmiņu pa vienam megabaitam (= 1024* |
Allocēt atmiņu pa vienam megabaitam (= 1024*1024 baitu). Salīdzināt šādus veidus (doti koda fragmenti): |
||
malloc(): |
malloc(): |
Latest revision as of 14:57, 15 November 2011
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*1024 baitu). Salīdzināt šādus veidus (doti koda fragmenti):
malloc():
void *p = malloc(MB); if (p == NULL) break;
mmap():
void *p = mmap(NULL, MB, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); if (p == (void *) -1) break;
sbrk():
void *p = sbrk(MB); if (p == (void *) -1) break;
3. Izpētīt, kā uzrakstītajā programmā 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".