Løsningsforslag til eksamen i Operativsystemer og nettverk 04.06.2015 Oppgave 1: Generelt om Linux a) Det grunnleggende brukergrensesnittet i Linux er et tastaturbasert CUI (Commandline User Interface), men alle Linux-systemer leveres i dag også med et GUI (Graphical User Interface) basert på the X Window System. Gi korte svar på følgende to spørsmål: 1. Hva er den grunnleggende forskjellen mellom et CUI og et GUI? CUI: Tastaturet er den enheten som brukes til å gi kommandoer til operativsystemet. GUI: En pek-og-klikk enhet (f.eks. en mus) er den enheten som primært brukes for å gi operativsystemkommandoer. 2. Nevn en fordel og en ulempe ved å bruke et GUI og en fordel og en ulempe ved å bruke et CUI under Linux? Fordeler ved GUI: Gjør det enklere og mer intuitivt å bruke datamaskinen. Mange brukere er vant til GUI'er (spillmaskiner, Windows, nettsider) og arbeider lettere med pek-og-klikk verktøy. Ulemper ved GUI: Gir et "ferdigsydd" oppsett med mindre muligheter til å "skreddersy" arbeidsomgivelsene. En GUI er et ekstra lag med software mellom bruker og oppgavene som skal gjøres på maskinen, noe som gjør at oppgavene utføres saktere. Fordeler ved CUI: Gir bedre mulighet til å kontrollere systemet og kjøre applikasjonene slik man selv ønsker. Raskt, med et minimalt ekstra lag med software mellom bruker og kjernen. Ulemper ved CUI: Kryptisk syntaks. Høyere inngangsterskel for nybegynnere og GUIbrukere. b) Forklar kort følgende begreper i Linux: 1. Standard innenhet og standard utenhet. Stdin: Default kilde (l) som data leses fra. Stdin er i utgangspunktet tastaturet, eller egentlig den devicelen som representerer tastaturet.
Stdout: Default medium (l) som data skrives til. Stdout er i utgangspunktet skjermen. 2. Filterprogram. Program som leser tekstlige data linje for linje fra stdin, og skriver tekstlig output linjevis til stdout. 3. Redirigering av I/O. Tegnene '<' og '>' brukes til å redenere hhv. stdin og stdout til å være en l i stedet for skjermen. '>>' (append) gjør atutskrift til stdout legges til på slutten av en eksisterendel. 4. Piping (eller rørlegging ) Brukes for interprosesskommunikasjon mellom to lterprogrammer. angis med tegnet ' ' mellom navnene på programmene. Gjør at stdout fra et lter leses som stdin fra neste lter. c) Gi en kortfattet forklaring av hva regulæruttrykk (regular expressions) er. Nevn minst to standard Linux-programmer som bruker regulæruttrykk. Kompakt notasjon for å representere generelle tekstmønstre. Brukes bla. i: grep - til å nne tekstmønstre i data emacs - til å søke etter/erstatte tekst i ler som redigeres med teksteditoren d) Hva er forskjellen på et program og en prosess i Linux? Program: Selve programkoden, enten skrevet i et høynivå programmeringsspråk, eller i form av ferdig kompilert maskinkode eller bytekode. Prosess: Et program som er lastet inn i RAM og kjører, sammen med de ressursene som programmet trenger under eksekveringen. e) Gi en kort beskrivelse av hva som skjer når Linux gjør en "context switch". Context switch: Bytter ut prosessen som kjører med neste prosess som skal kjøre i sin time-slice. Medfører flytting av alle data som prosessene trenger. Oppgave 2: Filer og lsystemer a) Når ler som opprettes og endres på en harddisk lagres fysisk på disken, skjer ikke dette i noen bestemt rekkefølge. Filene ser i stedet ut til å ligge spredt tilfeldig rundt i ulike områder på disken. Allikevel fremstår lene som samlet i mapper (eller kataloger) som igjen ligger ordnet hierarkisk, når vi bruker et operativsystem for å håndtere lene. Beskriv kort mekanismene som operativsystemet bruker for å klare å ordne ler og mapper på denne måten. Metadatene for alle ler, inkludert den fysiske adressen på disken, lagres i en tabell i lsystemet. For å samle lene i mapper/kataloger brukes spesielle katalogler som inneholder en liste med peker/indeks til metadataene for alle lene som ligger i
samme katalog. Filsystemet blir hierarkisk (med mapper inne i mapper) fordi listen av ler i en katalogl kan inneholde en ny katalogl. b) Hvilke tre hovedtyper av ler nner vi i Linux? 1. Regulære ler (regular/ordinary les) : Vanlige bruker-/systemler på disk (data, programmer) 2. Kataloger (directory les) : Inneholder en liste av lene (og underkatalogene) som ligger i denne katalogen. Muliggjør hierarkisk lsystem. Lages og redigeres med bruk av Linuxkommandoer 3. Spesialler : Block le device som leses/skrives i blokker via et buffer Character device le skriver/leser i en ustrukturert bytestrøm (Named) pipe le Buffer for FIFO-utveksling mellom prosesser Symbolic link le Lenke til en annen l på systemet Socket le For kommunikasjon mellom prosesser c) Hvor lagres navnet på en l i lsystemet i Linux? Filnavn lagres i kataloglene i Linux. Kataloglene er lister som inneholder inodenummer og lnavn for hver l i katalogen d) Hvor og hvordan lagres de øvrige metadataene om en l i Linux? En inode i Linux er datastrukturen som lagrer alle metadataene, unntatt lnavnet, om en l i lsystemet. Alle inodene ligger lagret i en tabell. Inodenummeret til en l er indeksen i denne inodetabellen. e) Når lsystemet i Linux blir fullt, kan det ikke opprettes flere nye ler. Filsystemet kan bli fullt selv om det fortsatt er mye ledig lagringsplass på disker og andre fysiske medier. Hvordan og hvorfor kan dette problemet oppstå? Alle inodene ligger i en tabell som (oftest) har fast lengde, typisk én inode per 2-8 Kbytes med diskplass. Hvis inodetabellen er full er lsystemet fullt, selv om det er diskplass igjen. Oppgave 3: Shell og shellprogrammering a) Forklar hva som utføres ved kjøring av hver av de re kommandoene nedenfor. Gjør også rede for eventuelle forutsetninger som må være oppfylt for at kommandoene skal fungere: 1. ls l opsys/ Skriver ut en liste over lene i katalogen "opsys", som ligger under stående katalog. Opsjonen -l (long) gir full informasjons for hver l, om ltype, tilgangsrettigheter, eier, gruppe, lstørrelse, siste dato for modikasjon og lnavn.
2. ls ld opsys/ Opsjonen -d fører her til at det skrives ut full informasjon om selve kataloglen "opsys" og ikke innholdet i katalogen som i forrige deloppgave. 3. chmod 751 ~/* Alle lene i brukes hjemmeområde får le mode 751. Dvs. at bruker har alle rettigheter på lene, brukere i samme gruppe kan lese og kjøre lene, alle andre kan kun kjøre. 4. echo Linux ruler tr d 'eiu' > SMS tr med opsjonen -d (delete) fjerner de angitte tegnene fra standard input før den skriver linjene tilbake til standard output, som her er denert til å være len "SMS". Teksten "Lnx rlr" skriver derfor ut til denne len. b) Skriv en Linux-kommando som skriver ut de 10 siste kommandoene som du har gitt interaktivt til skallet. history tail 10 c) Skriv en Linux-kommando som skriver ut en rapport til standard utenhet med informasjon om hvor mye diskplass som er ledig og hvor mye som er brukt, for alle monterte lsystemer. df d) De såkalte Fibonacci-tallene er en sekvens av heltall som begynner med tallene 0 og 1. Deretter er det neste tallet i sekvensen alltid summen av de to foregående. Fibonaccitallene nummeres vanligvis forløpende fra null, og Fibonacci-tall nummer i betegnes som F i. Her er de 15 første Fibonacci-tallene: F 0 F 1 F 2 F 3 F 4 F 5 F 6 F 7 F 8 F 9 F 10 F 11 F 12 F 13 F 14 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 Skriv et shellprogram som beregner og skriver ut et Fibonacci-tall. Input til programmet, gitt fra kommandolinjen, skal være nummeret i på Fibonacci-tallet F i som skal beregnes. #!/bin/bash # Sjekker for riktig antall parametre if [ $# ne 1 ] echo "usage: $0 [number]" exit 1 # F0 og F1 er spesialtilfeller if [ $1 eq 0 ]
echo "0" exit 0 elif [ $1 eq 1 ] echo "1" exit 0 # Beregner Fn n=$1 f0=0 f1=1 i=1 while [ $i lt $n ] do (( f = f0 + f1 )) f0=$f1 f1=$f (( i = i + 1 )) done echo "$f" exit 0 e) Hva utføres av følgende shellprogram: #!/bin/bash if [ $# gt 1 ] echo "usage: $0 [directory]" exit 1 if [ $# eq 0 ] wdir=`pwd` elif [! d $1 ] echo "$0: $1 is not a directory" exit 1 else wdir=$1 cd $wdir for i in * do if ls l $i grep q "^ rw r r "
echo $i done Programmet skriver ut navnet på de lene i en bestemt katalog som har le mode lik "rw-r r--" (eller 644). Katalogen kan angis av bruker som parameter på kommandolinjen. Hvis ingen katalog er angitt (null parametre inn), brukes stående katalog. Programmet gir feilmelding hvis det er flere enn én parameter angitt, eller hvis parameteren ikke er en katalog. Oppgave 4: Linux, servere og nettverk Løsningsforslag kommer snart...