LU-LSP-b12:L07

From DiLab
Jump to: navigation, search

Praktiskais darbs #7

1. Uzrakstīt programmu, kas alocē atmiņu (drīkst pēc tam neatbrīvot). Uzdevums līdzīgs PD#6, 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 pd7, tad

$ time ./pd7

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 programmas objdump palīdzību vai citā veidā noteikt:

  1. .text segmenta izmēru baitos
  2. .data segmenta izmēru baitos
  3. .bss segmenta izmēru baitos

Iesūtīšana

Iesūtīt kodu uz kursa asistenta e-pastu, faila nosaukums LSP_PD7_Vards_Uzvards.c,

Analīzi iesūtīt vēstules tekstā.

Subject "LSP PD7 Vards Uzvards".