Elektrotehnički fakultet 

Operativni sistemi 1

u Beogradu

Upravljanje memorijom

Zad 1.

 

Jun 2005.

Date su poruke o greškama (označene sa X i Y) od strane linkera i neki 

propusti   u   dizajnu   programa   (označeni   1-5).   Za   svaki   od   propusta   1-5 

navesti   poruku   koju   linker   može   izdati   –   napisati   oznake   parova   koji 

odgovaraju (npr. 1-X, 2-Y, itd.). Pretpostavlja se da su fajlovi prevedeni bez 

grešaka.
X.

"Undefined symbol ... referenced in files ..."

Y.

"Multiple definitions of symbol ... in files ..."

1.

Definicija (telo) funkcije (koja nije 

inline

) napisano u fajlu-zaglavlju 

(.h).

2.

U listi fajlova koje treba povezati nije navedena korišćena biblioteka.

3.

Program ne sadrži funkciju 

main()

.

4.

Identifikator promenljive u  

extern

  deklaraciji navedenoj u fajlu-

zaglavlju   je   pogrešno   napisan   (drugačije   od   definicije   iste 

promenljive u .c fajlu).

5.

Deklaracija promenljive tipa 

int

 navedena u fajlu-zaglavlju (.h) bez 

ključne reči 

extern

.

Odgovor: 1 - ____, 2 - ____, 3 - ____, 4 - ____, 5 - ____.

Odgovor: 1 - Y, 2 - X, 3 - X, 4 - X, 5 – Y.

Zad 2. April 2006.

Neki C program sastoji se samo iz dva fajla sa datim sadržajem:

// a.c

  

   // b.c

float base = 2.0;

   float log(float);

float log(float);

       extern float base;

float ln(float);

float log(float x) {

   float f(float x) {

  return ln(x)/ln(base);

return log(x*base)/log(base);

}

   }

Odgovoriti na sledeća pitanja:

1) Koliko nerazrešenih adresnih polja instrukcija prevodilac ostavlja u fajlu 

a.obj

? _________________

Operativni sistemi 1                Copyright 

 2006 Miloš Milovanović                 

Maj 2006

1 / 17

Elektrotehnički fakultet 

Operativni sistemi 1

u Beogradu

2) Koliko nerazrešenih adresnih polja instrukcija prevodilac ostavlja u fajlu 

b.obj

? _________________

3) Koje simbole izvozi fajl 

a.obj

? __________________________________

4) Koje simbole uvozi fajl 

a.obj

? __________________________________

5) Koje simbole izvozi fajl 

b.obj

? __________________________________

6) Koje simbole uvozi fajl 

b.obj

? __________________________________

7) Koliko grešaka prijavljuje linker prilikom povezivanja 

a.obj

 i 

b.obj

 u 

p.exe

? _________

Rešenje:

1) 2

2) 4 ili 3, u zavisnosti da li je optimizovao dohvatanje vrednosti 

base

 u neki 

registar

3) 

base

log

4) 

ln

5) 

f

6) 

base, log

7) 2

Zad 3. Oktobar 2005.

Operativni sistemi 1                Copyright 

 2006 Miloš Milovanović                 

Maj 2006

2 / 17

background image

Elektrotehnički fakultet 

Operativni sistemi 1

u Beogradu

po 

best-fit

 algoritmu i vrati njegovu adresu. Preostali deo fragmenta treba 

da postane novi (manji) fragment u listi slobodnih.

typedef unsigned int size_t;

struct FreeFragment {

  size_t size; // Veličina fragmenta

  FreeFragment* prev; // Prethodni u listi

  FreeFragment* next; // Sledeći u listi

}

FreeFragment* head; // Glava liste slobodnih fragmenata

void* getBestFitFragment(size_t);

Rešenje:

void* getBestFitFragment (size_t sz) {

  FreeFragment* bestFit = 0;

  size_t smallestFragment = MAXSIZE;

  for (FreeFragment* cur = head; cur!=0; cur=cur->next) {

    if (cur->size<sz) continue;

    if (cur->size<smallestFragment) {

      smallestFragment = cur->size;

      bestFit = cur;

    }

  }

  if (bestFit==0) return 0;

  FreeFragment* newfrgm =     

(FreeFragment*)((char*)bestFit+sz);

  if (bestFit->prev) bestFit->prev->next = newfrgm;

  if (bestFit->next) bestFit->next->prev = newfrgm;

  FreeFragment* p = bestFit->prev;

  FreeFragment* n = bestFit->next;

  size_t s = bestFit->size-sz;

  newfrgm->prev = p;

  newfrgm->next = n;

  newfrgm->size = s;

  return bestFit;

}

Operativni sistemi 1                Copyright 

 2006 Miloš Milovanović                 

Maj 2006

4 / 17

Elektrotehnički fakultet 

Operativni sistemi 1

u Beogradu

Zad 5. Oktobar 2005.

Neki OS koristi straničnu organizaciju virtuelne memorije sa mogućnošću 

deljenja stranica, a podržava i biblioteke sa dinamičkim vezivanjem (DLL). 

Izvršen je sledeći eksperiment sa jednim malim test-programom koji samo 

poziva neki potprogram iz datog DLL-a, izmeri vreme tog poziva, ispiše ga 

na   izlaz   i   završi.   Na   tek   pokrenutom   računaru   sa   podignutim   OS-om 

pokrenut je samo proces nad ovim programom i završio je izvršavanje, 

ispisavši vreme. Odmah potom je taj program ponovo pokrenut i ispisao je 

znatno kraće vreme.

(

i

)(5)

Zašto je rezultat ovakav? Precizno objasniti.

(

ii

)(5)

Isti eksperiment je ponovljen na istom računaru i istom OS-u, 

samo na malo izmenjenoj verziji tog OS-a (izmena se odnosi samo na 

upotrebu DLL-ova). Ovaj put je program ispisivao vrlo približno isto 

vreme, svaki put kada je pokrenut. Koja izmena u OS-u je izvršena? 

Precizno objasniti kako je ova izmena implementirana.

Rešenje:
Operativni sistemi 1                Copyright 

 2006 Miloš Milovanović                 

Maj 2006

5 / 17

Želiš da pročitaš svih 17 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti