Eksamen høsten 2008 Operativsystemer og Unix
Les nøye gjennom oppgavene og pass på å besvare alle spørsmålene. Før gjerne svarene rett inn uten å kladde først. Alle trykte og skrevne hjelpemidler er tillatt.

Oppgave 1 Bash (15%)

a) rm /tmp/log

b) chmod 700 bareMin.txt

c) ps aux | grep vnc

d) sort -t : -k 3 -n /etc/passwd

e) Filen ny.txt vil være tom fordi andre kommando overskriver og linjen med "Windows" fjernes av grep.

f) Mappen top_secret lages, deretter fjernes alle rettigheter slik at det ikke vil være mulig å kopiere /etc/passwd, man vil få en Permission denied melding.

g)

  1. .. Refererer til mappen over der man står, ett trinn opp i filtreet.
  2. /usr/bin/ Er en mappe som inneholder alle de vanligste kjørbare programmene som firefox, jed og perl.
  3. /etc/shadow Er en fil som inneholder krypterte passord(hasher) for alle brukerne på systemet.

Oppgave 2 Multitasking (20%)

a) Et OS deler tiden inn i små deler, typisk et hundredels sekund, og fordeler slike korte timeslices til alle prossene som ønsker å bruke CPU. Siden størrelsen på disse timeslicene er så liten, virker det som om flere prosesser kjører samtidig, selvom det til enhver tid kun er en eneste prosess som kjører. Ved hjelp av et interrupt fra en hardwaretimer sørges det for at OS systematisk kan dele ut CPU-tiden på denne måten.

b) Siden programmet er CPU-intensivt vil det ta omtrent to timer å kjøre ferdig de to kjøringene, for de vil bytte på å gjøre CPU-instruksjoner annenhver gang. Den positive effekten av multitasking er liten for CPU-intensive programmer, det kan føre til at det tar noe lenger tid å bli ferdig, men det er neppe merkbart i praksis.

c) Det vil fortsatt ta omtrent to timer. Riktignok kan context switching mellom to tråder være litt raskere enn mellom to prosesser, men det vil neppe være merkbart i praksis for dette tilfellet.

d) I dette tilfellet vil hver tråd kunne kjøre på hver sin CPU og da vil det ta ca en time å få begge prognosene ferdig.

e) Ved å kjøre programmet top og se på kolonnen %CPU.

f) Ved å kjøre Task Manager og se på kolonnen for CPU-bruk.

g) OS deler tiden inn i timeslices eller jiffies som er den minste tidsenheten som kan tildeles en prosess. Hver prosess som ønsker å bruke CPU tildeles en eller flere jiffies og slik fordeles tiden mellom dem.

h) Hvis jiffie er lang er det en fordel for prosesser som bruker mye CPU fordi de avbrytes sjeldenere. Mindre tid vil gå med til contextswitching. Men interaktive prosesser vil oppleve dårligere responstid. Mindre jiffies gir bedre responstid, men mer overhead på grunn av flere context switcher.

i) Programmet kan gå i en løkke og ved hjelp av sleep 1 hvert sekund lese ut antall brukte jiffies fra /proc. Dette tallet trekkes fra forrige leste verdi og gir dermed antall jiffies siste sekund. Dette tallet kan så skrives ut. Siden det er hundre jiffies i ett sekund vil antall brukte jiffies være lik antall prosent CPU-tid som prosessen har brukt.

Oppgave 3 Perl (30%)

a)

#! /usr/bin/perl

open(PROC,"/proc/meminfo") or die "Can't open  /proc/meminfo\n";

while($line = <PROC>)
  {
    print "Totalt minne: $1 kB\n" if($line =~ /^MemTotal:\s+(\d+)/);
    if($line =~ /^MemFree:\s+(\d+)/)
      {
              # Alternativ måte å skrive if-testen
              print "Ledig minne: $1 kB\n";
      }

  }
close(PROC);

b) Følgende legges til inne i while-løkken:

   $buf   = $1 if($line =~ /^Buffers:\s+(\d+)/);
   $cach = $1 if($line =~ /^Cached:\s+(\d+)/);
og følgende etter close:
if($buf > $cach)
  {
    print "Buffers: $buf kB\n";
  }
else
  {
    print "Cached: $cach kB\n";
  }

c) Følgende legges til på slutten av programmet:

open(MEM," /etc/minnegrense");
$min = <MEM>;
close(MEM);
chomp($min);

if($free < $min)
  {
    `echo "ALARM: under laveste minne grense." | mail -s haugerud@iu.hio.no`;
  }
Forutsetter at $free = $1; legges til inne i MemFree-iftesten i starten av programmet.

Oppgave 4 Nettverk (35%)

a) Dette er source og destination IP-adressene som sier hvem som er avsender og mottager for IP-pakken. De brukes til å finne veien fram til mottager og til at svar skal finne veien tilbake til avsender igjen.

b) Felt i IP-headeren:

c) Du prøver å spore den veien en pakke følger til www.washington.edu. Det som skjer i bakgrunnen er at det først sendes tre IP-pakker (med UDP-protokollen) til www.washington.edu med TTL=1. Dette gjør at de droppes av første gateway de kommer til og denne gatewayen (128.39.89.1) sender så en beskjed om dette til avsender. Dette gjøres for økende verdier av TTL helt til pakkene kommer fram til www.washington.edu. På grunnlag av denne tilbakemeldingen kan da en sannsynlig rute bestemmes. Første kolonne er antall hop, neste navn på gateway, så denne gatewayens IP-adresse og tilslutt tre kolonner som sier hvor lang tid i millisekunder de tre pakkene brukte på veien fram og tilbake til gatewayen.

d) I linje 7 har det intruffet at to av pakkene har gått til dk-uni.nordu.net mens en av pakkene har fulgt en annen vei og gått til se-fre.nordu.net. Dette viser at selv to pakker som sendes nesten samtidig kan følge forskjellige veier på internett fram til målet.

e) Mellom 10 og 11 (so-4-0-0.rt1.ams.nl.geant2.net og so-7-0-0.rt1.nyc.us.geant2.net) er det en forskjell på ca 100 ms eller 0.1 sekunder og det skyldes at pakken må over atlanterhavet for å komme til nyc.us (New York City) mens ams.nl er Amsterdam i Nederland.

f) Det er 23 gateways en pakke må innom før den kommer frem. Det sendes ut tre pakker med TTL-verdier fra 1 og opp til 23 og alle disse forårsaker en ICMP-pakke i retur med beskjeden Time to live exceeded in transit, totalt $3 \times 23 = 69$ pakker. Tiden hver av de 69 pakkene har brukt frem og tilbake vises på output fra traceroute.

g) Kommandoen gjør at det sendes en enkelt ping ECHO_REQUEST ICMP-pakke i retning www.washington.edu. Time to Live for pakken er satt til 6 og det fører til at den sjette gatewayen den kommer til (se-tug.nordu.net) sender en Time to live exceeded og forkaster pakken. Dette kunne vi forventet, for linje nummer 6 fra output fra traceroute viser det samme.

h) Nå settes record route opsjonen istedet for en lav ttl-verdi. Denne opsjonen fører til at alle gateways som pakken er innom lagrer sin IP-adresse i pakkens opsjonsfelt. Dette feltets størrelse er maksimalt 40 byte og dermed er det ikke plass til mer enn 9 adresser og vi får ikke se flere hop på veien til www.washington.edu.

i) De 40 ekstra bytene brukes til å lagre IP-adressene som pakken har vært innom. Noe plass går til å sette bit som gir gatewayene beskjed om Record Route og dermed er det bare plass til 9 IP-adresser som tilsammen tar 36 byte. traceroute sender tre pakker til alle gateways på veien, men +ping -R+ sender bare en enkelt pakke som plukker opp IP-adresser på veien.

-SLUTT-



haugerud 2009-05-15