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

From DiLab
Jump to: navigation, search
Line 10: Line 10:
$ time ./pd10
$ time ./pd10


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*2024 baitu). Salīdzināt šādus veidus (doti koda fragmenti):
Line 26: Line 26:
if (p == (void *) -1) break;
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:
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
# .text segmenta starta un beigu adreses
# .data segmenta sākuma un beigu adreses
# .data segmenta sākuma un beigu adreses

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

  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*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ā 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".