Upravljanje memorijom
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

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
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti