Difference between revisions of "LU-LSP-b12:L06"

From DiLab
Jump to: navigation, search
 
Line 28: Line 28:
Izmantojot proc failusistēmu, novērtējiet (1) kopējās alocētās virtuālās atmiņas (VmSize), (2) ''resident set size'' izmērus (VmRSS) abos gadījumos. Secinājumi?
Izmantojot proc failusistēmu, novērtējiet (1) kopējās alocētās virtuālās atmiņas (VmSize), (2) ''resident set size'' izmērus (VmRSS) abos gadījumos. Secinājumi?


4. Eksperimentāli noskaidrot, cik daudz atmiņas iespējams alocēt stekā. Padoms - atmiņas alokācijai stekā izmantot funkciju alloca()!
4. Eksperimentāli noskaidrot, cik daudz atmiņas iespējams alocēt stekā. Padoms - atmiņas alokācijai stekā izmantot funkciju <code>alloca()</code>!
* Kas notiks, ja programmas darbības laikā tiks izsaukta šāda funkcija:
* Kas notiks, ja programmas darbības laikā tiks izsaukta šāda funkcija:
void f() {
void f() {

Latest revision as of 16:42, 23 October 2012

Praktiskais darbs #6 - atmiņas alokācija

1. Uzrakstīt programmu, kas alocē atmiņu (drīkst to pēc tam neatbrīvot). Par pamatu var izmantot šo skeletu:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
        printf("allocating...\n");

        // ...

        printf("done\n");
        return 0;
}

2. Eksperimentāli noskaidrot, cik daudz atmiņas iespējams alocēt heap segmentā (var lietot malloc()). Salīdziniet - vai un kā šis apjoms mainās, ja:

    • Atmiņa tiek alocēta "vienā gabalā" (one chunk)
    • Atmiņa tiek alocēta pa 1MB lieliem gabaliem (many chunks)
  • Secinājumi?

3. Salīdziniet programmu ātrdarbību:

    • 1. variants - atmiņa tiek alocēta, bet netiek izmantota.
    • 2. variants - atmiņa tiek alocēta un tiek izmantota (piemēram, aizpildīta ar 0, izmantojot memset() funckiju)
  • Salīdziniet uz 100MB atmiņas alokāciju. Ieteicams izpildes laika novērtēšanai izmantot programmu "time".

Izmantojot proc failusistēmu, novērtējiet (1) kopējās alocētās virtuālās atmiņas (VmSize), (2) resident set size izmērus (VmRSS) abos gadījumos. Secinājumi?

4. Eksperimentāli noskaidrot, cik daudz atmiņas iespējams alocēt stekā. Padoms - atmiņas alokācijai stekā izmantot funkciju alloca()!

  • Kas notiks, ja programmas darbības laikā tiks izsaukta šāda funkcija:
void f() {
     char array[100 * 1024 * 1024];
     memset(array, 0, sizeof(array));
}
  • Izskaidrot, kāpēc. Kas mainītos, ja mainīgais array būtu deklarēts kā "static"?

Iesūtīšana

Risinājumus nosūtīt uz kursa asistenta e-pastu, rakstot atbildes vēstules tekstā. E-pasta "Subject" obligāti iekļaut burtus "LSP".