HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Eksamensdato: 22. mai 2002 Varighet: Fagnummer: Fagnavn: 4 timer LO245D Datateknikk Klasse(r): 1D FU Vekttall: 3 Faglærer(e): Geir Maribu (tlf 73 55 95 53) og Geir Ove Rosvold (tlf 73 55 95 59) Hjelpemidler: Oppgavesettet består av: Ordinær kalkulator 4 oppgaver og 5 sider, inklusive denne forside Vedlegg består av: - ingen vedlegg - Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. Viktig: Les hele oppgaveteksten for hver oppgave før du setter i gang Planlegg tiden. Prosenttallet bak hver oppgave viser ca. vektlegging ved karaktersetting. Prøv å svare på alle oppgaver. Lykke til!
Oppgave 1 Diverse spørsmål vekt: 25 % a) En avbruddsrutine (ISR, Interrupt Service Routine) har alltid en tilhørende prioritet som forteller om avbruddsrutinen skal kunne avbrytes av en annen avbruddsrutine. Ordinære funksjoner har derimot ingen prioritet - alle funksjoner er like viktige. Hvorfor trengs det ikke noen prioritet for funksjoner, mens det trengs for avbruddsrutiner? b) Hvorfor er normalt en prosessor med hardlogikk kontrollenhet hurtigere enn en prosessor med mikroprogrammert kontrollenhet? c) I kurset har vi lært at det finnes tre typer mikrooperasjoner. Hvilke hovedtyper er dette? d) Er de fleste moderne prosessorer RISC- eller CISC-prosessorer? Drøft problemstillingen. e) På prosessorer i Intels x86-serie har ikke alle instruksjoner samme lengde. På slike prosessorer kan en instruksjon være alt fra 1 til 16 byte. På andre prosessortyper blant annet på prosessorer av typen UltraSPARC II har alle instruksjoner samme lengde. Nevn fordeler med x86 sin metode. Nevn fordeler med UltraSPARC II sin metode. Oppgave 2 Lagerteknologier og cache vekt: 25 % a) På moderne datamaskiner lagres det data på lagerenheter med stor forskjell på aksesstid. Noen av disse lagertypene er: Registre Cache-minne (L1- og L2-cache) Primærminne (RAM) Harddisk. Svar på følgende spørsmål. Der det er spørsmål om tallverdier trenger du ikke nøyaktige verdier, men du bør kunne antyde størrelsesorden i hvert fall : 1. Hva er typisk aksesstid til hver av disse lagertypene? 2. Hva er typisk størrelse på lagringskapasiteten til hver av dem? 3. Forklar kort bruksområdet til hver av disse lagertypene. b) I kurset har vi sett at den effektive aksesstiden ved bruk av cache er: T e = T c + (1-H)T hvor T e er effektiv aksesstid H er treffraten T c er cachens aksesstid T er aksesstid til lageret vi leser fra (f.eks primærminne) Side 2 av 5
Svar på spørsmålene nedenfor. På noen av spørsmålene kan du gjerne ta utgangspunkt i formelen (men alle spørsmålene kan besvares med bruk av sunn fornuft hvis du ikke liker matematikk! Og husk: ikke gjør spørsmålene vanskeligere enn de er) : 1. Hva skjer med effektiv aksesstid dersom vi over lang tid bare har bom (altså at treffraten er null i lang tid)? 2. Hva skjer med effektiv aksesstid dersom vi over lang tid bare har treff (altså at treffraten er lik 1 i lang tid)? 3. Hvorfor er det lite sannsynlig at treffraten er null i lang tid? 4. Treffraten ER null med det samme vi starter et nytt program. Hvorfor? 5. Hva skjer med treffraten når et nystartet program har fått kjøre en stund? 6. Hva er det som bestemmer hvor høy treffraten må være for at cachen skal ha positiv effekt? (Samme spørsmål på en annen måte: hvis treffraten er for lav vil vinningen gå opp i spinningen. Hva er det som bestemmer hvor høy treffraten må være for at dette ikke skal skje? ) Oppgave 3 Diverse vekt: 25 % a) Noen operativsystemer tilbyr et systemkall rename for å gi filer nytt navn. Er det forskjell mellom det å gi ei fil nytt navn ved hjelp av systemkallet rename, og det å kopiere fila til ei ny fil med nytt navn etterfulgt av å slette den gamle fila. b) Ved utskrift til skriver vil operativsystemet alltid lagre fila på disk (på en såkalt spoolingområde på disken) før den skrives ut. Hvorfor tror du det gjøres på denne måten? c) I sammenheng med minneadministrasjon snakkes det om sidefeil (eng: pagefault). Hva er dette, og hvorfor oppstår det? d) Ved kommunikasjon mellom prosesser er det en del viktige forhold som vi må ta hensyn til slik at kommunikasjonen går riktig for seg og det ikke blir tull med dataene. Gi en kort redegjørelse for hvilke forhold dette er. e) Tilgang til felles dataområde er en kritisk operasjon som prosessene må være nøye med. Her skal det nevnes to metoder som du skal gi en beskrivelse av, og som du skal diskutere fordeler og ulemper med. De to metodene er i) bruk av avbruddsystemet, og ii) bruk av semaforer. f) Semaforer kan brukes til både gjensidig utelukkelse og til synkronisering. Gi en kort beskrivelse av hver av disse bruksområdene, og vis ved eksempler hvordan semaforer benyttes til gjensidig utelukkelse og til synkronisering. Oppgave 4 Programmering med fork-systemkallet vekt: 25 % a) Nedenfor ser du et enkelt c-program som utfører systemkallet fork. Forklar hvordan systemkallet fork virker, og forklar spesielt hvorfor det i if-setningen testes på om variabelen nr er lik 0. main() { int nr; Side 3 av 5
nr = fork(); if (nr == 0) { printf("barneprosess\n"); sleep(30); else { printf("foreldreprosess\n"); sleep(10); b) Nedenfor ser du utdrag fra utskriften til ps-kommandoen (programmet ligger på fila a.out). Forklar at denne utskriften samsvarer med kjøringen av programmet gitt i punkt a) ovenfor. Utskrift fra kommandoen ps tatt etter cirka 5 og etter cirka 15 sekund. geir 5660 4929 0 08:27:50 ttyp3 0:00 a.out geir 5661 5660 0 08:27:50 ttyp3 0:00 a.out geir 5662 4929 6 08:27:54 ttyp3 0:00 ps -fu geir geir 5663 4929 6 08:28:03 ttyp3 0:00 ps -fu geir geir 5661 1 0 08:27:50 ttyp3 0:00 a.out c) Det er gjort endringer på programmet. Det er lagt inn en wait-setning til slutt hos foreldre-prosessen. Utskriften fra ps blir nå som vist nedenfor. Forklar! Programmet er nå som følger: main() { int nr; int status; nr = fork(); if (nr == 0) { printf("barneprosess\n"); sleep(30); else { printf("foreldreprosess\n"); sleep(10); wait(&status); Side 4 av 5
Utskrift fra kommandoen ps tatt etter cirka 5 og etter cirka 15 sekund. geir 5885 4929 0 08:39:14 ttyp3 0:00 a.out geir 5886 5885 0 08:39:14 ttyp3 0:00 a.out geir 5887 4929 6 08:39:17 ttyp3 0:00 ps -fu geir geir 5885 4929 0 08:39:14 ttyp3 0:00 a.out geir 5886 5885 0 08:39:14 ttyp3 0:00 a.out geir 5888 4929 7 08:39:27 ttyp3 0:00 ps -fu geir Slutt! Side 5 av 5