Difference between revisions of "LU-LSP-b11:L10"

From DiLab
Jump to: navigation, search
 
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*2024 baitu). Salīdzināt šādus veidus (doti koda fragmenti):
Allocēt atmiņu pa vienam megabaitam (= 1024*1024 baitu). Salīdzināt šādus veidus (doti koda fragmenti):


malloc():
malloc():

Latest revision as of 15: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,

  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*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:

  1. .text segmenta starta un beigu adreses
  2. .data segmenta sākuma un beigu adreses
  3. .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".