EKSAMEN Emnekode: ITF22506 Emne: Operativsystemer Dato: 12. desember 2007 Eksamenstid: kl. 9.00 til kl. 13.00 Hjelpemidler: 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater. Faglærer: Jan Høiberg Einar Krogh Eksamensoppgaven: Oppgavesettet består av 5 sider inklusiv denne forsiden. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene. Oppgavesettet består av 7 oppgaver. Oppgavene 1, 2,3,4 er fra Modul 1 (JH) Oppgavene 5, 6, 7 er fra Modul 2 (EK) Sensurdato: 7. januar 2008 Karakterene er tilgjengelige for studenter på studentweb senest 2 dager etter oppgitt sensurfrist. Følg instruksjoner gitt på: http://www.hiof.no/index.php?id=11229 1
Oppgave 1: Generelt om operativsystemet Linux (10 %) a) Gi en kortfattet forklaring av hva regulæruttrykk (regular expressions) er. Nevn minst ett standard Linux-program som bruker regulæruttrykk. b) Hvorfor sier man at filsystemet i Linux er hierarkisk? Hvilken enkel mekanisme ligger til grunn for denne organiseringen av filene i en hierarkisk trestruktur? c) Gjør kort rede for hvordan beskyttelse av filer og tilgangsrettigheter til filer er organisert i Linux. Oppgave 2: Linux-verktøy og kommandoer (12.5 %) a) Forklar kort hva som utføres ved eksekvering av hver av disse tre kommandoene: i) grep einar-krogh ii) rm -rf /tmp/firefox/cache/* iii) n_safe_files=`ls -l grep rw------- wc -l` b) Skriv Linux kommandoer (sammensatt med rørlegging og redirigering av I/O) som utfører følgende operasjoner: i) Skriver ut, til standard utenhet, alle linjer på filen opsys_karakterer_2007.txt som inneholder tekststrengen Karakter:Stryk. ii) Skriver ut, til standard utenhet og til default printer, en liste med navnene på alle filer i stående katalog som inneholder tekststrengen einar-krogh. Kommandoen skal ikke være "case-sensitive", dvs. at filer som inneholder f.eks. Einar-Krogh skal være med i listen av filnavn som skrives ut. iii) Bytter ut alle tegn som ikke er bokstaver eller siffer i standard input med tegnet stjerne (*), og skriver resultatet til standard utenhet. Flere påfølgende ikkebokstaver/ikke-siffer skal erstattes med kun én stjerne.. 2
Oppgave 3: Skallprogrammering (15 %) a) Forklar hva som utføres ved kjøring av følgende skallprogram: #!/bin/sh while read f do case $f in hello) echo English howdy) echo American gday) echo Australian bonjour) echo French "guten tag") echo German *) echo Unknown Language: $f esac done < myfile b) Lag et skallprogram som tester om andre maskiner på nettet er tilgjengelige fra ditt system. Programmet skal ha som parametre en eller flere maskinadresser, som f.eks. freja.hiof.no, 158.36.33.11 eller www.playboy.com. Det er ikke nødvendig å sjekke om det er gitt lovlige adresser på riktig format. For hver angitt maskin skal programmet skrive ut en melding som forteller om maskinen er tilgjengelig eller ikke. Hint: En kommando som kan brukes i programmet er ping -c1 [hostaddress], som vil sende en pakke over nettet til gitt maskinadresse, og returnere status 0 til skallet hvis maskinen kunne nås. I tillegg til å returnere en status, vil ping også skrive ut en del informasjon selv. 3
Oppgave 4: C-kode (12.5 %) Forklar hva som skjer når C-programmet nedenfor kjøres. Du kan anta at det er kompilert med gcc med opsjonen -pthread. #include <pthread.h> #include <stdio.h> #define N 10 void *HvaSkjer(void *id) int t_id; t_id = (int) id; if (t_id % 2 == 0) printf("even thread: %d\n", t_id); else printf("odd thread : %d\n", t_id); pthread_exit(null); int main (int argc, char *argv[]) pthread_t p_t[n]; int retval, t; for (t = 0; t < N; t++) retval = pthread_create(&p_t[t], NULL, HvaSkjer, (void *)t); if (retval) printf("thread creation failed, giving up..."); exit(-1); pthread_exit(null); 4
Oppgave 5 (17 %) a) Forklar hvordan operativsystemet behandler tråder. Hva menes med scheduling i forbindelse med operativsystemer? Gi eksempel på noen strategier som kan benyttes ved scheduling. b) Semafor, monitor og events er tre måter å synkronisere tråders aktiviteter på. Forklar hvordan disse synkroniseringsmåtene virker og gi en sammenlikning mellom dem. c) Hva menes med vranglås (deadlock) i forbindelse med et operativsystem? Gi eksempel på vranglås. Oppgave 6 (17 %) a) Hva menes med synchronous og asynchronous I/O? b) Hva menes med feiltoleranse? Gi en oversikt over typer feil som kan oppstå i datamaskiner. Hvordan kan en driftsansvarlig forsøke å unngå at feil oppstår i et datasystem? c) Hva er distribuerte systemer? Gi en oversikt over fordeler og ulemper med distribuerte systemer. Oppgave 7 (17 %) Du skal skrive et lite C++ program (Console i Visual Studio) med en metode som er en tråd som kan skrive tallene 1,2,3,..., 1000 ut på skjermen med 1 sekunds mellomrom. Når tråden har kommet til 1000 begynner den på ny. Lag et program med tråden og metoder som administrer tråden. Siden det skal være mulig å starte flere tråder samtidig er det behov for synkronisering av utskrifter til skjermen. Husk å få med hvilke namespaces og biblioteks klasser som programmet vil benytte. 5