Difference between revisions of "LU-LSP-b11:L10"
Line 13: | Line 13: | ||
Allocēt atmiņu pa vienam megabaitam (= 1024*2024 baitu). Salīdzināt šādus veidus (doti koda fragmenti): |
Allocēt atmiņu pa vienam megabaitam (= 1024*2024 baitu). Salīdzināt šādus veidus (doti koda fragmenti): |
||
malloc(): |
|||
void *p = malloc(MB); |
void *p = malloc(MB); |
||
if (p == NULL) break; |
if (p == NULL) break; |
||
mmap(): |
|||
void *p = mmap(NULL, MB, PROT_READ|PROT_WRITE, |
void *p = mmap(NULL, MB, PROT_READ|PROT_WRITE, |
||
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); |
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); |
||
if (p == (void *) -1) break; |
if (p == (void *) -1) break; |
||
sbrk(): |
|||
void *p = sbrk(MB); |
void *p = sbrk(MB); |
||
if (p == (void *) -1) break; |
if (p == (void *) -1) break; |
Revision as of 14:56, 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*2024 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".