AOR2/K2P 2022
- Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.
Popravni drugi kolokvijum 2022. godine održan je 11. juna i trajao je 90 minuta.
1. zadatak
Postavka
Opisati opšti postupak virtuelizacije uređaja. Posebno opisati virtuelizaciju diskova i načina na koji je obavljena virtuelizacija prekida koji stižu od ovih uređaja.
Rešenje
2. zadatak
Postavka
Potrebno je optimizovati funkciju int find(register char* str1, register int len1, register char* str2, register int len2)
korišćenjem ugrađenog makroa void prefetch(const void *addr)
na odgovarajućim mestima tako da se maksimalno smanji broj promašaja u keš memoriji. Data funkcija pronalazi poziciju niza karaktera zadat[sic] pokazivačem str2
i dužinom len2
unutar niza karaktera zadat[sic] pokazivačem str1
i dužinom len1
. Ukoliko se niz karaktera zadat pokazivačem str2
i dužinom len2
ne nalazi unutar niza karaktera zadat[sic] pokazivačem str1
i dužinom len1
, rezultat funkcije je -1. Smatrati da je len1>0
i len2>0
.
int find(register char* str1, register int len1, register char* str2, register int len2)
{
register int i;
register int j;
for (i = 0; i <= len1 - len2; i++) {
for (j = 0; j < len2; j++) {
register c1 = str1[i + j];
register c2 = str2[j];
if (c1 != c2)
break;
}
if (j == len2)
return i;
}
return -1;
}
Procesor poseduje samo L1 keš memoriju. Veličina bloka keš memorije je 64B.
Memorijski kontroler i aritmetičko logička jedinica procesora imaju mogućnost rada u paraleli. Smatrati da void prefetch
vraća rezultat nakon 5 C++ izraza koji koriste operativnu memoriju. C++ izrazi koji ne koriste operativnu memoriju smatrati da ne utiču značajno u vremenu prilikom izvršavanja void prefetch
, tako da takve izraze treba ignorisati.