Eksamensinformasjon. Linux kommandolinje. Linux kommandolinje. Eksamensinformasjon. Fakultet: Teknologi, kunst og design. Tid: 3 t.

Like dokumenter
Oppgave 1 - Linux kommandolinje (%)

Oppgave 1 - Java og prosesser (20%)

Eksamensinformasjon. Prosesser. Prosesser. Eksamensoppgave. Operativsystemer (DATS/ITPE2500) Bokmål 06. juni 2017 kl

Emnekode: SO135A Dato: onsdag 25. feb. I Antall oppgaver: 4

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Singletasking OS. Device minne Skjerm minne. Brukerprogram. Brukerdata/heap. Stack. Basis for flerprosess-systemer.

Løsningsforslag til eksamen 24. november 2015

EKSAMEN Innføring i Linux

Eksempler på ikke-blokkerende systemkall:

EKSAMEN. Operativsystemer og nettverk

P1 P2 P3 P1 P2 P3 P1 P2. OS gjør Contex Switch fra P1 til P2

Prøve- EKSAMEN. Operativsystemer med Linux

Håndtering av filer og kataloger

Håndtering av filer og kataloger

Operativsystemer og nettverk Løsningsforslag til eksamen Oppgave 1. a) Linux-kommando: java Beregn & b) Shellprogram:

Filterprogrammer og redirigering av I/O

Høgskoleni Østfold. Ny/utsatt EKSAMEN

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

Filer og kataloger, prosesser og jobber

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Operativsystemer og nettverk

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

faks: Avdeling for Ingeniørutdanning. Cart Aælersgate Oslo - tlf 05. iu@hio.no

EKSAMEN. Operativsystemer. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Lynkurs i shellprogrammering under Linux

Oppgaver til forkurs i informatikk dag 1

Filterprogrammer og redirigering av I/O

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Høgskolen i Telemark Fakultet for allmennvitenskapelige fag

Kurset består av to relativt uavhengige deler. Foreleser: Hårek Haugerud, rom PS431

Hvordan en prosessor arbeider, del 1

$ls -l $grep -i Olsen adresseliste.txt less #!/bin/sh $echo `ls` $chmod 755. Praktisk Linux. Grunnleggende skall kommandoer. Irene Ludvigsen Husa

Innhold. 2 Kompilatorer. 3 Datamaskiner og tallsystemer. 4 Oppsummering. 1 Skjerm (monitor) 2 Hovedkort (motherboard) 3 Prosessor (CPU)

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

UNIVERSITETET I OSLO

Scheduling og prosesshåndtering

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

OS Struktur Prosesser Kommandotolker Distribuert Filer Skript Mer?

Dagens tema: Enda mer MIPS maskinkode

Definisjon av prosess

HØGSKOLEN I SØR-TRØNDELAG

Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

HØGSKOLEN I SØR-TRØNDELAG

Emnenavn: Datakommunikasjon. Eksamenstid: 9:00 til 13:00. Faglærere: Erling Strand

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

6107 Operativsystemer og nettverk

Generelt om operativsystemer

HØGSKOLEN I SØR-TRØNDELAG

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Threads Threads (tråder) threads vs prosesser threads vs prosesser Definisjoner av

Gi en overordnet beskrivelse av RAID-nivå 0, 1 og 6. Gi eksempler på egnet bruk for hver. Skriv ditt svar her...

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Emnenavn: Datakommunikasjon. Eksamenstid: Kl: 9:00 til kl: 13:00. Faglærere: Erling Strand

IT1101 Informatikk basisfag, dobbeltime 18/9. Kommunikasjon med perifere enheter. Kontrollere. Kontrollere (2) I/O-instruksjoner

Programmeringsspråket C Del 3

Emnekode: SOl35A Alle trykte og skrevne hjelpemidler

Filer i Linux og Bourne-again shell

Oppgave 1 JK-flip-flop (Total vekt 20%)

Debugging. Tore Berg Hansen, TISIP

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

Programmering i C++ Løsningsforslag Eksamen høsten 2005

EKSAMEN. Dato: 7. desember 2016 Eksamenstid: 09:00 13:00

1,r H øgs kolen i Østfol d

EKSAMEN. Dato: 24. november 2015 Eksamenstid: 09:00 13:00

Programmeringsspråket C Del 2

2. Beskrivelse av installasjon av SQL Server 2005 og hvordan lage databasen som trengs av administrasjonsprogrammet:

Programmeringsspråket C

Oppgave 2: Gå til roten (/) av systemet. Finn minst tre forskjellige måter å gå tilbake til hjemmekatalogen din på.

Programmeringsspråket C Del 3

Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen

Shellscripting I. Innhold

1. Intro om PowerShell

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

Operativsystemer og grensesnitt

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

Program delegate. Lage et nytt prosjekt i Visual Studio

1. Profiler og variabler

Dagens tema INF1070. Makroer. Sanntidsprogrammering. Avbrudd. Bruker- og supermodus. Blanding av C og assemblerkode. Selvmodifiserende kode

Dagems temaer. kapittel 4 i Computer Organisation and Architecture. av CPU: von Neuman-modellen. Transfer Language (RTL) om hurtigminne (RAM)

Eksamen DAT 103. Oppgave 2. Kandidatnr.: 145 1) B 2) B 3) A 4) A 5) D 6) C 7) B 8) A 9) A 10) D

Programmeringsspråket C Del 3

UNIVERSITETET I OSLO

IN 147 Program og maskinvare

1 Diverse linuxtips. Innhold. 1.1 Klipp og lim med musen

Labbene skal være oppsatt med dual boot. Disse labene er satt opp med dual boot, dvs. at vi må velge Linux eller Windows under oppstart av maskin.

Antall sider:s (inkludert denne) Alle skrevne og trykte hjelpemidler samt kalkulator

Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser?

Obligatorisk oppgave 6 i INF1010: Dekryptering

Vi anbefaler at du setter deg litt inn i maskinen på forhånd. Det er en DELL Optiplex 620.

Dagens tema. Makroer Ofte gjentar man kodelinjer når man skriver assemblerkode. Da kan det lønne seg å definere en makro:

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Seksjon 1. INF2270-V16 Forside. Eksamen INF2270. Dato 1. juni 2016 Tid Alle trykte og skrevne hjelpemidler, og en kalkulator, er tillatt.

Fjerninnlogging over Internett

Øving 0 - Xcode TDT4102

Transkript:

Eksamensinformasjon Eksamensinformasjon Fakultet: Teknologi, kunst og design Utdanning: Teknologiske fag Emnenavn: Operativsystemer Emnekode: DATS/ITPE2500 (Kont) Dato: 4.august-2017 Tid: 3 t. Tillatte hjelpemidler: Ingen tillatte hjelpemidler 1(a) Linux kommandolinje Hvilken Linux-kommando gir deg hvilken katalog du står i? Velg ett alternativ pwd chmod mkdir ls touch ps cd cat 1(b) Linux kommandolinje 1/19

Hvilken Linux-kommando lister prosesser? Velg ett alternativ less more ls pwd cat ps proc list 1(c) Linux kommandolinje Nedenfor er åtte Linux-kommandoer listet opp i hver sin kolonne. Merk av hva de betyr i hver av radene. Finn de som passer sammen Lag link Skriv til stdout Lag mappe Kopier Flytt Endre rettigheter List innhold i mappe Slett/fjern chmod mv ln rm cat cp mkdir ls Maks poeng: 20 Bash-scripting; info-side Siste del av denne oppgaven vil være å lage et bash-script som finner ut hvilke rutere en IP-pakke er innom på vei til serveren den sendes til. Først skal du finne ut litt om hvordan kommandoen ping virker, slik at du senere kan bruke den i scriptet. Om man bruker kommandoen ping, vil man prøve å få svar fra serveren man ping'er. I eksempelet under prøver vi 2/19

å få svar fra web-serveren www.hin.no og sender ping til den: $ ping www.hin.no PING www.hin.no (129.242.5.168) 56(84) bytes of data. 64 bytes from hin.no (129.242.5.168): icmp_seq=1 ttl=55 time=21.5 ms 64 bytes from hin.no (129.242.5.168): icmp_seq=2 ttl=55 time=21.5 ms 64 bytes from hin.no (129.242.5.168): icmp_seq=3 ttl=55 time=21.4 ms 64 bytes from hin.no (129.242.5.168): icmp_seq=4 ttl=55 time=21.5 ms 64 bytes from hin.no (129.242.5.168): icmp_seq=5 ttl=55 time=21.4 ms ^C --- www.hin.no ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 21.412/21.483/21.535/0.169 ms Som du ser svarer serveren og da vet man at den er oppe. Men ping vil fortsette å sende pakker til www.hin.no helt til man avbryter kommandoen med CTRL-C og stopper kommandoen. Dette gjøres etter at 5 pakker er sendt i eksempelet over. I de følgende oppgavene kan det være nyttig å lese manualsiden for ping: ping og bruke informasjonen derfra til å løse oppgavene. 2(a) Bash-scripting Les først Bash-scripting; info-side og skriv ned en ping-kommando som tilsvarer den på info-siden, men som sender et nytt ping med 5 sekunders mellomrom til www.hin.no, istedet for ett sekunds mellomrom som er default verdi. 2(b) Bash-scripting Les først Bash-scripting; info-side og skriv så en ping-kommando som kun sender en enkelt ping-pakke til www.hin.no og dermed gir output som vist under: $ DIN PING-KOMMANDO PING www.hin.no (129.242.5.168) 56(84) bytes of data. 64 bytes from hin.no (129.242.5.168): icmp_seq=1 ttl=55 time=21.5 ms --- www.hin.no ping statistics --- 3/19

1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 21.527/21.527/21.527/0.000 ms Skriv ned DIN PING-KOMMANDO: 2(c) Bash-scripting Les først Bash-scripting; info-side og skriv så en ping-kommando som kun sender en enkelt ping-pakke til www.hin.no hvor ttl (IP Time to Live) verdien er satt lik 1 og dermed gir output som vist under: $ DIN PING-KOMMANDO PING www.hin.no (129.242.5.168) 56(84) bytes of data. From hioa-gw1.hioa.no (128.39.74.1) icmp_seq=1 Time to live exceeded --- www.hin.no ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms Skriv ned DIN PING-KOMMANDO: 4/19

2(d) Bash-scripting I forrige oppgave ble ttl satt til 1. Hver gang en IP-pakke når en ruter, vil verdien på ttl som er lagret i pakkens header minskes med en. Når ttl settes til verdien 1 i en pakke som sendes, vil den første ruteren minske verdien til 0. Det betyr at pakken skal droppes og ruteren kaster da pakken og sender en melding til avsenderen om "Time to live exceeded". I vårt tilfelle er HiOA-ruteren hioa-gw1.hioa.no den første ruteren pakken kommer til. Skriv igjen en ping-kommando som sender en enkelt ping-pakke til www.hin.no hvor ttl verdien er satt lik 1, men som velger ut kun en av linjene fra ping-kommandoen og som dermed gir output som vist under: $ DIN PING-KOMMANDO From hioa-gw1.hioa.no (128.39.74.1) icmp_seq=1 Time to live exceeded Skriv ned DIN PING-KOMMANDO: 2(e) Bash-scripting Hvis man øker ttl-verdien til 2 når man sender en ping-pakke, vil ttl-verdien senkes til 1 av hioa-gw1.hioa.no og så senkes til 0 av neste ruter på veien mot målet. Denne ruteren sender så en "Time to live exceeded" pakke tilbake til avsender. Skriv igjen en ping-kommando som sender en enkelt ping-pakke til www.hin.no, men hvor ttl verdien er satt lik 2, og som igjen velger ut kun en av linjene fra output og som dermed gir output som vist under: $ DIN PING-KOMMANDO From pil32-gw.uninett.no (158.36.84.53) icmp_seq=1 Time to live exceeded Skriv ned DIN PING-KOMMANDO: 5/19

2(f) Bash-scripting Hvis man fortsetter og øker ttl-verdien til 3, vil man få følgende respons fra tredje ruter som passeres på vei mot målet: From stolav-gw2.uninett.no (128.39.230.37) icmp_seq=1 Time to live exceeded Ved å fortsette å øke ttl systematisk videre helt til pakken når frem til målet og ikke returnerer "Time to live exceeded" kan man kartlegge hvilken rute en IP-pakke vil følge på vei frem til et mål. Når man har økt ttl til en så stor verdi at pakken når helt frem, vil output bli det samme som i oppgave b. Skriv et scrtipt med navn traceroute.sh som når det kjøres vil gi følgende output. Bruk det du har lært tidligere i denne oppgaven til å skrive scriptet: $./traceroute.sh www.hioa.no 1 From hioa-gw1.hioa.no (128.39.74.1) icmp_seq=1 Time to live exceeded Det er 1 rutere på vei til www.hioa.no $./traceroute.sh www.hib.no 1 From hioa-gw1.hioa.no (128.39.74.1) icmp_seq=1 Time to live exceeded 2 From pil32-gw.uninett.no (158.36.84.53) icmp_seq=1 Time to live exceeded 3 From stolav-gw2.uninett.no (128.39.230.37) icmp_seq=1 Time to live exceeded 4 From bergen-gw2.uninett.no (128.39.254.139) icmp_seq=1 Time to live exceeded 5 From hib-gsw.hib.no (158.37.160.130) icmp_seq=1 Time to live exceeded Det er 5 rutere på vei til www.hib.no $./traceroute.sh www.hin.no 1 From hioa-gw1.hioa.no (128.39.74.1) icmp_seq=1 Time to live exceeded 2 From pil32-gw.uninett.no (158.36.84.53) icmp_seq=1 Time to live exceeded 3 From stolav-gw2.uninett.no (128.39.230.37) icmp_seq=1 Time to live exceeded 4 From hovedbygget-gw.uninett.no (128.39.255.121) icmp_seq=1 Time to live exceeded 5 From narvik-gw2.uninett.no (128.39.231.35) icmp_seq=1 Time to live exceeded 6 From ma2-gw.uninett.no (128.39.231.56) icmp_seq=1 Time to live exceeded 7 From tromso-gw.uninett.no (128.39.230.44) icmp_seq=1 Time to live exceeded 8 From munin-gw1.uit.no (158.39.1.74) icmp_seq=1 Time to live exceeded 9 From ma-gsw.infra.uit.no (129.242.24.185) icmp_seq=1 Time to live exceeded Det er 9 rutere på vei til www.hin.no 6/19

Til sammenligning gir Linux-kommandoen traceroute følgende, noe som viser at scriptet som du skal lage har tilsvarende funksjonalitet (men ditt script skal virke som beskrevet ovenfor): $ traceroute www.hin.no traceroute to www.hin.no (129.242.5.168), 30 hops max, 60 byte packets 1 hioa-gw1.hioa.no (128.39.74.1) 0.331 ms 0.329 ms 0.368 ms 2 pil32-gw.uninett.no (158.36.84.53) 1.078 ms 1.143 ms 1.196 ms 3 stolav-gw2.uninett.no (128.39.230.37) 2.815 ms 2.804 ms 2.796 ms 4 hovedbygget-gw.uninett.no (128.39.255.121) 6.921 ms 6.903 ms 6.918 ms 5 narvik-gw2.uninett.no (128.39.231.35) 18.087 ms 18.056 ms 18.075 ms 6 ma2-gw.uninett.no (128.39.231.56) 21.415 ms 21.267 ms 21.255 ms 7 tromso-gw.uninett.no (128.39.230.44) 21.440 ms 21.430 ms 21.419 ms 8 munin-gw1.uit.no (158.39.1.74) 21.249 ms 21.316 ms 21.316 ms 9 ma-gsw.infra.uit.no (129.242.24.185) 21.477 ms 21.682 ms 21.492 ms 10 hin.no (129.242.5.168) 21.447 ms!x 21.270 ms!x 21.315 ms!x Maks poeng: 60 3(a) C og Assembly Anta at du har et C-program som heter add.c. Skriv ned kommandoen, eventuelt kommandoene, du må utføre for å kjøre dette programmet på en Linux-maskin. 7/19

3(b) C og Assembly Anta at add.c har følgende innhold. Hva blir output fra programmet når du kjører det? #include <stdio.h> int main(void) { int felles = 13; int tall = 29; felles = felles + tall; printf("resultat: %d\n",felles); } 8/19

3(c) C og Assembly Du kompilerer så programmet med $ gcc -S add.c og den vesentligste delen av den resulterende filen add.s ser slik ut: movl $13, -8(%rbp) movl $29, -4(%rbp) movl -4(%rbp), %eax addl %eax, -8(%rbp) Forklar kort hva som skjer når disse fire instruksjonene utføres. Hvilket tall er resultatet etter at disse har blitt kjørt og hvor ligger tallet lagret? Maks poeng: 20 3(d) C og Assembly Forklar hvilken eller hvilke assembly-instruksjoner som C-instruksjonen felles = felles + tall; leder til i add.s. Forklar kort om en C-instruksjon nødvendigvis leder til bare en enkelt Assembly-instruksjon og om en Assembly-instruksjon tilsvarer en enkelt maskin-instruksjon i den binære kjørbare koden. 9/19

3(e) C og Assembly Du kompilerer nå add.c med opsjonen -O $ gcc -O -S add.c og de fire linjene som add.s tidligere inneholdt blir nå erstattet av en enkelt linje: movl $42, %edx Forklar kort hva som har skjedd og hvorfor opsjonen -O fører til at kompilatoren lager denne koden istedet. 4(a) Serialisering og Mutex 10/19

Serialisering og Mutex DATS/ITPE2500 kont 2017 4(a) Hva er et kritisk avsnitt? Velg ett alternativ Kode som er nødvendig for at deler av OS-kjernen skal kunne serialiseres Kode som avgjør om en prosess skal avsluttes på grunn av en deadlock Kode som en prosess kun kan utføre når CPU'en har switchet modus bit til priviligert modus Kode som må utføres veldig hurtig for at en trap til OS-kjernen ikke skal ta for lang tid Kode som må fullføres uten at andre prosesser bruker samme felles ressurs Kode i OS-kjernen som utfører en context switch 4(b) Serialisering og Mutex Hva er en context switch? Velg ett alternativ En hardware-switch som peker ut den neste prosessen som skal kjøre At OS skifter prosess som bruker CPU'en At OS går inn i et kritisk avsnitt En opsjon man bruker når et program starter, slik at det velger riktig kontekst At prosessor-modus skifter mellom bruker-modus og priviligert-modus En oppgradering av OS-kjernen 4(c) Serialisering og Mutex Forklar kort hvorfor serialisering av prosesser er nødvendig i et multitasking operativsystem. 11/19

4(d) Serialisering og Mutex Anta at du har et multitasking system med en singel prosessor med to samtidige tråder T0 og T1 som deler en felles variabel med navn felles. I høynivåkoden for T0 forekommer linjen felles = felles + tall; mens linjen felles = felles - tall; forekommer i koden for T1. Forklar hva som kan gå galt hvis disse kode-linjene blir utført samtidig. Henvis gjerne til koden og dine svar i oppgaven "C og Assembly". 12/19

4(e) Serialisering og Mutex Forklar hvordan problemet i 4(d) kan unngås om prosessene har tilgjengelig en felles variabel lock og to mutexprosedyrer Get_Mutex(lock) og Release_Mutex(lock) og vis konkret hvordan koden for T0 og T1 må endres. 4(f) Serialisering og Mutex Tenk deg at trådene T0 og T1 har tid (thread ID) 0 og 1 henholdsvis. Betrakt følgende implementasjon av mutexfunksjonene: int turn = 0; // Felles variabel som begge tråder har tilgang til void Get_Mutex (int tid){ } while (turn!= tid) { } Release_Mutex (int tid){ } turn = 1 - tid; Forklar hvordan T0 og T1 skal bruke disse funksjonene og hvorfor de virker. Hva er den største ulempen med denne implementasjonen av mutex-funksjonene (for eksempel sammenlignet med Peterson-algoritmen)? 13/19

Maks poeng: 20 5(a) PowerShell I PowerShell kan man, akkurat som i et bash-shell, sende output fra en kommando til en annen kommando ved hjelp av en pipe. For eksempel er ls sort en gyldig kommando i begge tilfeller. Hva er den viktigste forskjellen på det som sendes igjennom en pipe når man sammenligner PowerShell og bash? Velg ett alternativ I PowerShell krypteres alt som sendes slik at overføringen er sikrere I bash er denne teknologien mer avansert fordi den har blitt utviklet gjennom 40 år I PowerShell sendes også ikoner, noe som egner seg bedre i et grafisk brukergrensesnitt I PowerShell sendes hele objekter med metoder og egenskaper I bash kan informasjonen sendes til andre kanaler, som stderr og /dev/null I bash komprimeres informasjonen som sendes slik at det går raskere 5(b) PowerShell I PowerShell gjør du følgende kommando: PS C:\Users\evav\mydir> ls Directory: C:\Users\evav\mydir Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 22.06.2017 21.14 26807 dok.pdf -a---- 01.12.2015 08.24 59481 License.pdf 14/19

-a---- 26.06.2017 11.15 609017 Room.pdf Hvilken av de følgede kommandoene vil gi dok.pdf som output? Velg ett alternativ ls.dok.pdf.name ls grep dok.pdf Get-Name $(ls dok.pdf) ls *.pdf (ls dok.pdf).name ls dok.pdf ls grep dok.pdf cut -f 5 5(c) PowerShell I PowerShell er det laget en rekke alias som gjør det enkelt for en som kjenner til Linux-kommandoer å bruke de samme kommandoene i PowerShell. Merk av hvilke Linux-kommandoer som tilsvarer hvilke PowerShell Cmdlets. Finn de som passer sammen ls cp ps mv kill cat echo pwd Stop- Process Move- Item Write- Output Get- Process Get- Location Get- ChildItem Copy- Item Get- Content Maks poeng: 20 15/19

5(d) PowerShell script Anta at du ønsker å få en kronologisk samling av alle dine pdf-dokumenter på din Windows 10 PC. Skriv et PowerShell script pdf.ps1 som kopierer alle dokumenter med fil-endelse.pdf under C:\ (inkludert alle undermapper) til en mappe-struktur i den tomme mappen C:\pdf. Du kan anta at scriptet vil kjøres med administrator-rettigheter. Mappe-strukturen skal lages underveis av scriptet. For eksempel skal dokumentet dok.pdf laget i måned 7 i året 2017 kopieres til mappen C:\pdf\Y2017\M7 mens ett laget i måned 4 i 2016 skal kopieres til C:\pdf\Y2016\M4. Hvis en mappe det er behov for ikke eksisterer fra før skal den lages av scriptet. Før du lager scriptet, tester du ut noen kommandoer som kan gi nyttig informasjon: PS C:\Users\evav\mydir> $fil = ls dok.pdf PS C:\Users\evav\mydir> $fil.creationtime torsdag 6. juli 2017 15.26.46 PS C:\Users\evav\mydir> $fil.creationtime.month 7 PS C:\Users\evav\mydir> $fil.creationtime.year 2017 PS C:\Users\evav\mydir> $fil.extension.pdf PS C:\Users\evav\mydir> Test-Path C:\Users True PS C:\Users\evav\mydir> Test-Path C:\pdf False PS C:\Users\evav\mydir> mkdir Y2015 Directory: C:\Users\evav\mydir Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 06.07.2017 19.12 Y2015 Maks poeng: 40 6(a) Internminne 16/19

Hva er betydningen av begrepet Random Access Memory? Velg ett alternativ At det er tilfeldig hvilken byte som hentes først om to byte leses samtidig At det tar like lang tid å hente en byte fra hvor som helst i minnet At adressene til hver byte i minnet allokeres tilfeldig av operativsystemet At det går like fort å skrive til minnet som å lese fra minnet At data som lagres kan bli lagt hvor som helst i minnet At alle enheter har tilgang til minnet 6(b) Interniminne Mange datamaskiner har et cache-minne mellom CPU og RAM. Vil det kunne føre til at det er forskjell i hvor lang tid det tar for CPU å hente inn to forskjellige bytes fra RAM til registerne i CPU en? Forklar kort. 6(c) Internminne En matrise, også kalt et todimensjonalt array, er et sett av elementer ordnet i rader og kolonner. For eksempel kan en 2x2 matrise A[2][2] defineres i et C-program og den vil da ha 2x2 elementer: A[0][0], A[0][1], A[1][0] og A[1][1]. Når disse elementene lagres i RAM, lagres de etter hverandre som vist i eksempelet. I en 3x3 matrise lagres først A[0][0], A[0][1] og A[0][2] etter hverandre, så A[1][0], A[1][1] og så videre. Et C-program definerer en heltalls-matrise med int mat[5000][5000];. Hvis et heltall (integer, int) bruker 4 byte lagringsplass, hvor mange Megabyte består denne matrisen av? (La her Mega bety en million i SI-betydningen) 17/19

6(d) Internminne På en maskin med 2 GByte RAM har man følgende C-program: int mat[5000][5000]; for(i = 0;i < 5000;i++){ for(j = 0;j < 5000;j++){ mat[i][j] = 5; } } Programmet kompileres og kjøres: $ time a.out Real:0.113 User:0.020 System:0.092 99.39% Så endres kun en linje i programmet; linjen der matriseverdier legges inn endres til mat[j][i] = 5;. Når programmet så kompileres og kjøres, tar det nesten tre ganger så lang tid å kjøre det: $ time a.out Real:0.303 User:0.216 System:0.084 98.95% Hvordan kan dette forklares? 18/19

19/19