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

Like dokumenter
HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunnsprosesser Opprettelse av prosesser:

HØGSKOLEN I SØR-TRØNDELAG

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

Faglig kontakt under eksamen: Orestis Gkorgkas

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

1. Introduksjon til operativsystemer

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

Definisjon av prosess

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

Innhold. Virtuelt minne. Paging i mer detalj. Felles rammeverk for hukommelseshierarki Hukommelseshierarki-2 1

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

EKSAMEN Innføring i Linux

Operativsystemer og grensesnitt

Oppgave 1 - Linux kommandolinje (%)

EKSAMENSOPPGAVE I FAG TDT4186 OPERATIVSYSTEMER. Faglig kontakt under eksamen: Svein Erik Bratsberg og Arvid Staupe

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

Tildeling av minne til prosesser

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

Kort notat om parallellstyring IN147

1. Introduksjon til operativsystemer

UNIVERSITETET I OSLO

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

Resymé: I denne leksjonen vil du få en oversikt over hva et operativsystem er for noe, hvordan det er bygget opp og hvordan det virker.

Dagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer

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

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

Prøve- EKSAMEN. Operativsystemer med Linux

UNIVERSITETET I OSLO

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

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

Oppgave 8.1 fra COD2e

Filsystemet fra innsiden

Tildeling av minne til prosesser

Filer og kataloger, prosesser og jobber

Scheduling og prosesshåndtering

EKSAMEN. Operativsystemer og nettverk

Betinget eksekvering og logiske tester i shell

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

Operativsystemer og nettverk

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data

Linux distribusjoner

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4186 Operativsystemer August 2005,

CPU-Scheduling. Fag: Operativsystemer

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

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

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

DAT kandidatnummer: 142

Høgskolen i Telemark Fakultet for allmennvitenskapelige fag

IN 147 Program og maskinvare

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

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

TDT4258 Eksamen vår 2013

Oppgave 1 - Java og prosesser (20%)

Høgskoleni Østfold. Ny/utsatt EKSAMEN

UNIVERSITETET I OSLO

TDT4110 IT Grunnkurs Høst 2014

Kapittel 3. The fun starts

Filer i Linux og Bourne-again shell

Det matematisk-naturvitenskapelige fakultet

Filsystemet fra innsiden

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

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Oppsummering av digitalteknikkdelen

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Ny EKSAMEN. Operativsystemer og nettverk

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

1,r H øgs kolen i Østfol d

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

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Hvorfor lære om maskinvare*?

Brukerprogram OS hardware

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

Shellscripting I. Innhold

Generelt om permanent lagring og filsystemer

UNIVERSITETET I OSLO

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

Dagens tema. Nyttige programmer Programmet make. Hvis én fil endres, hvilke filer må da kompileres på nytt?

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

! Ytelsen til I/O- systemer avhenger av flere faktorer: ! De to viktigste parametrene for ytelse til I/O er:

HØGSKOLEN I SØR-TRØNDELAG

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

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

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

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

Læringsmål og pensum. v=nkiu9yen5nc

Debugging. Tore Berg Hansen, TISIP

EKSAMEN Innføring i Linux

Minnehåndtering i operativsystemer

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

Del 4 Noen spesielle C-elementer

Tildeling av minne til prosesser

UNIVERSITETET I OSLO

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix

K O N T I N U A S J O N S E K S A M E N

Transkript:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Eksamensdato: 26. mai 2004 Varighet: 0900-200 Fagnummer: LO249D Fagnavn: Operativsystemer med Linux Klasse(r): ing, hk, fu Studiepoeng: 6 Faglærer(e): Geir Maribu (ing), Tore Mallaug (hk), Walter Keim (fu) Hjelpemidler: Ingen hjelpemidler tillatt Oppgavesettet: 3 oppgaver Vedlegg består av: Ingen vedlegg Alle deloppgavene teller likt! Oppgave : Linux a) Oppretting av en fil i Linux innebærer at det må skaffes til veie en inode for filen. Hva er en inode og hva er koblingen mellom inoden, filnavn, administrasjonsdata om filen og innholdet til filen. Svar: Inoden er en datastruktur som inneholder informasjon om filen og adressepekere til filens datablokker. Katalogene i Linux inneholder navnet til filen og nummeret til inoden. Dette nummeret peker til et område på disken som inneholder alle inodene. Hver fil har altså sitt unike inodenummer som peker til inoden. b) Fra og med kjerneversjon 2.6 for Linux er også kjernen blitt preemptive. Hva menes det med dette? Svar: Preemptiv betyr at kjørende prosesser kan avbrytes av operativsystemet. I tidligere versjoner av Linux var det slik at kun brukerprosesser kunne avbrytes av operativsystemet, f.eks når tidskvantet utløper. Kjerneprosesser derimot kunne kjøre helt til de selv sa at de var ferdige. Det nye med kjerneversjon 2.6 er at også kjerneprosesser kan avbrytes, f.eks dersom det kommer prosesser med høyere prioritet. c) I operativsystemer skiller en mellom kjernemodus og brukermodus når programkode kjøres. Hva menes det med dette skillet og hvorfor har vi et slikt skille? Svar: Tenk deg et c-program som du har skrevet. I dette programmet finnes det variabler som programmet bruker når det kjører, f.eks ved at programmet sette innhold i disse variablene. Det kan skje ved at det leses inn et tall eller en tekst fra tastaturet, eller det kan skje ved at programmet beregner en verdi og lagrer denne beregnede verdien i variabelen. I tilfeller som dette sier vi at programmet opererer i brukermodus. Men dersom programmet skal skrive ut data til skjerm, lagre data på disken eller lignende må programmet over i kjernemodus. Dette skjer ved at programmet kaller opp et systemkall, f.eks write, read eller lignende. Da opererer programmet i kjernemodus fordi instruksjonene som Side av 6

da kjøres er operativsystemets egne instruksjoner, og disse instruksjonene opererer mot operativsystemets egne datastrukturer (variabler). Det er ikke tillatt for brukerprogrammets egne instruksjoner å operere direkte mot disse datastrukturene. Dette skillet har vi for bl.a å kunne gjøre slike fellesoperasjoner som skriving og lesing fra harddisken. Dette må gjøres i beskyttede omgivelser innenfor operativsystemet. Dersom brukerprogrammene skulle kunne operere direkte mot disse datastrukturene vil en risikere feil bruk av datastrukturene og dermed mange feilsituasjoner i operativsystemet. d) Hva er forskjellen på en hard lenke og en symbolsk lenke i Linux (-filsystem)? Forklar forskjellen ut fra følgende eksempel: ln test.txt test2.txt ln s test.txt test2.txt Svar: En hard lenke viser til inoden til filene. Som du sikkert husker en inodenummeret en unik identifikator for filen. En hard lenke er bare et annet filnavn som peker til den samme inoden. Begrensningen for harde lenker er at de må befinne seg på samme diskpartisjon fordi inodenummereringen starter på nytt for hver diskpartisjon. En symbolsk lenke er en helt ny fil og dermed også med et eget inodenummer. Denne filen, kalt en symbolsk lenke, inneholder ikke annet enn komplett katalogsti fram til den filen som den peker på. Det er ingen begrensninger hvor denne filen kan ligge, gjerne på en annen diskpartisjon. e) En katalogfil har vanligvis kun ei datablokk. Hvorfor? Noen ganger har den flere. Når? Svar: Fordi katalogfilen inneholder svært begrenset med data. For hver fil som finnes i katalogen lagres det data i katalogfilene tilsvarende filnavn, inode-nummer pluss noen data om hvor langt fillnavnet er. Det betyr at for de alle fleste katalogene rekker det med ei datablokk. Kun dersom katalogene inneholder mange filer får en bruk for flere datablokker. La oss se på et eksempel. Nedenfor er et utdrag fra en ls-utskrift i katalogen /usr. Størrelsen til katalogene varierer fra 53248 byte til 4096 bytes ( datablokk er lik 4096 bytes) drwxr-xr-x 2 root root 53248 2005-05-7 6:5 bin drwxr-xr-x 2 root root 2288 2005-05-09 20:08 doc drwxr-xr-x 2 root root 4096 2005-03-03 2:50 games drwxr-xr-x 7 root root 892 2005-05-09 20:08 include Katalogen games inneholder 8 filer og greier seg med en datablokk. Katalogen doc inneholder 85 filer men bruker så mye som tre datablokker. Dette kommer av at filnavnene i katalogen doc er så mye lengre enn i katalogen games. Katalogen bin derimot har over 2000 filer og bruker derfor hele 3 datablokker. Men de aller fleste katalogene inneholder relativt få filer og filnavnene er relativt korte, og derfor greier de seg med kun en datablokk. Sjekk selv på din egen hjemmekatalog med kommandoen ls l. Oppgave 2: Prosesser og prosesskommunikasjon a) Prosesser opprettes i Linux med fork- og exec-systemkallet. Forklar kort hvordan disse systemkallene virker. Gi et kort eksempel som demonstrerer virkemåten. Side 2 av 6

Svar: En prosess som bruker systemkallet fork kloner seg selv, dvs lager en kopi av seg selv. Det betyr at etter at dette systemkallet er kjørt ferdig er det to identiske prosesser i systemet (men de har forskjellig prosess-id). Dette er Linux sin metode for å opprette nye prosesser. Men for at dette skal fungere i praksis må den nye prosessene skifte ut programkoden sin med annen programkoden enn den arvet fra foreldreprosessen. Dette gjør den selv ved å kalle opp exec-systemkallet. En av argumentene i exec-kallet er filnavn som inneholder aktuelt filnavn til programkoden. Eks: int nr; nr = fork() if (nr!= 0) her legger du inne programlinjer for foreldre-prosess else her kommer programmlinjer for barne-prosess, bl.a exec b) Gitt et utdrag av utskriften fra ps-kommandoen slik som vist nedenfor. Forklar hva kommandoen gjør, og hva utskriften fra kommandoen forteller oss. Si også noe om hvilke relasjoner det er mellom prosessene [geir@gremlin:~]$ ps -ef UID PID PPID C STIME TTY TIME CMD geir 8832 8827 0 07:24? 00:00:00 [sshd] geir 8833 8832 0 07:24 pts/5 00:00:00 -bash geir 06 8833 0 07:28 pts/5 00:00:00 ps -ef [geir@gremlin:~]$ Svar: ps-kommandoen skriver ut innholdet til prosess-deskriptoren. Hvilke deler av prosessdeskriptoren du ønsker skrevet ut styres ved hjelp av argumenter til ps-kommandoen. I dette tilfellet med argumentene ef er det snakk om alle prosessene (e for every) og du ønsker full utlisting (f for full). Kommandoen gir oss et bilde av status til prosessene i systemet. I utdraget ovenfor ser du at det kjøres en sshd, dvs en daemon-prosess som mottar secure shell-innlogginger. Denne sshd har opprettet en bash-skall som barneprosess. Det ser du av forholdet mellom PID og PPID (PID står for process-id mens PPID står for parent processid). Videre ser vi at innenfor dette bash-skallet er det gitt en ps-kommando. Dette ser du fordi ps-kommandoen har 8833 som PPID som er det samme som PID til bash. c) Hva menes med et kritisk område (region) for en prosess, og hvorfor er dette viktig å ta hensyn til? Svar: Dette er det området av programkoden som aksesserer et felles dataområde. Det er altså de programinstruksjonene som leser fra eller skriver til felles dataområde. NB! Kritisk region må ikke forveksles med felles dataområde. d) Hva er en semafor? Forklar! Side 3 av 6

Svar: En semafor er en mekanisme som brukes til kommunikasjon mellom prosesser, f.eks sikre at bare en prosess aksesserer felles dataområde om gangen. De kan også brukes til synkronisering ved at vi styrer rekkefølgen som prosesser aksesserer et felles dataområde. Semaforen består av en heltallsverdi og en kø av prosesser. Dersom heltallsverdien er betyr det at prosessene kan kjøre videre, f.eks aksessere felles dataområde. Er den 0 betyr det at prosessen ikke kommer videre men må inn i kø på semaforen. e) Anta at en tellende semafor mutex med startverdi lik brukes av tre prosesser som jobber mot et felles dataområde. Prosessene kaller alltid først wait-operasjonen, opererer deretter mot det felles dataområdet, og avslutter med signal-operasjonen. Forklar, gjerne ved hjelp av figur, hvilke forskjellige tilstander semaforen mutex kan ha mens prosessene kjører. Svar: Første prosess som ankommer dekrementerer semaforen til 0 (wait) og fortsetter inn i felles dataområde. Går den ut igjen før annen prosess ankommer setter den semaforen tilbake igjen til med signal-operasjonen. Men dersom det kommer flere prosesser mens den første fortsatt er inne i felles dataområde, vil hver av disse dekrementere semaforen med, finne at den er mindre eller lik 0 og dermed opptatt, og selv gå inn i kø på semaforen. For hver ny prosess som ankommer, mens den første ennå er inne i felles dataområde vil semaforen minke med, og antall prosesser i semaforkøen vil øke tilsvarende. Tallverdien til semaforen sier hvor mange prosesser som står i kø. Er semaforen -3 betyr det at 3 prosesser står i kø. Når den første prosessen går ut igjen vil signal-operasjonen inkrementere semaforen, finne at semaforen fortsatt er mindre enn, og derfor hente fram neste prosess i semafor-køen og gjøre den aktiv igjen, dvs sette den i cpu-køen. f) Trådprosesser ble innført bl.a for å gjøre kommunikasjon mellom prosesser enklere. Forklar hva det tenkes på her. Svar: Trådprosesser jobber innenfor samme adresseområde, og trådprosessene kan derfor selv organisere tilgangen til det felles dataområdet uten å måtte bruke formaliserte og administrativt tunge mekanismener for å styre tilgangen til det felles dataområdet. g) Hva menes med et kontekstskifte (også kalt prosesskifte) ifbm med prosesser og tråder? Svar: Kontekstskift betyr å skifte hvilken prosess som kjører. Det betyr å bytte ut prosessdeskriptorer for kjørende prosess, og innebærer bl.a å skifte inn innholdet i cpuregistrene slik at de inneholder verdiene til den nye prosessen som skal kjøre (dette er de samme verdiene som ble gjemt unna forrige gang prosessen kjørte), skifte hvilken sidetabell som nå skal gjelde etc. h) Hvorfor er et kontekstskifte mellom tråder mye raskere enn mellom prosesser? Svar: Fordi en trådprosess er en del av en større prosess. Tråden skifter bare ut den konteksten som har med kjøringen på cpu å gjøre. Når det gjelder alle andre ressurser (som f.kes minne, i/o-ressurser etc) så er dette prosessens ansvar og utføres kun dersom det er snakk om prosesskifte (og ikke ved trådskifte) i) Redegjør for forskjellen mellom kontekstskifte mellom tråder internt i en prosess og mellom tråder i forskjellige prosesser. Side 4 av 6

Svar: Et skifte mellom tråder i forskjellige prosesser er det samme som et prosesskifte. Altså skifte av full kontekst. Skifte mellom tråder internt i en prosess derimot er mye mindre krevende, kun litt utskifting av cup-registre. Oppgave 3: Minneadministrasjon a) En cpu bruker 20-bits registre for å adressere seg fram i minnet. Hvor mange Mbyte kan da adresseres? Trenger ikke eksakt kalkulatorsvar her. Det holder med en cirka-verdi. Svar: Svaret finner du ved å regne ut 2 20. Utregnet blir dette 048576. Cirkaverdier finner du ved å vite at 2 6 er 64K (ja dette er noe alle skal vite). Fro hver økning i potense, dvs til 7, 9, 9 og 20 fordobles tallet 64K, dvs til 28, 256, 52 og 024, dvs vi ender på 024K som er det samme som 048576. Svaret er altså 024K eller omregnet til antall byte er det 048576. b) Forklar forskjellen på fysisk minneadressering og logisk minneadressering. Svar: Fysisk adresser refererer til adresser i fysisk minne, mens logiske (virtuelle) adresser refererer til adresse i programmet slik det er lagt ut på disken. Virtuelle adresser opererer i området fra 0 til en max-adresse, og er det samme for alle programmene uansett hvor i fysisk minne programmet er plasert når det kjører. Dette krever en omregning fra virtuell adresse til fysisk adresse når programmet kjører. Dette er oppgaven til minneadministrasjonen. c) Gitt en tilstand i et sidedelt system som vist på figuren nedenfor med et virtuelt minne på 8 sider og et fysisk minne på 4 sider. Sidetabellen er vist uten innhold. Oppgaven er å tegne sidetabellen med innhold for systemet slik det er vist i figuren nedenfor. Virtuelt minne 0 side 0 side 2 side 2 3 side 3 4 side 4 5 side 5 6 side 6 7 side 7 Sidetabell Fysisk minne 0 side 7 2 side 2 3 side 5 Svar: Sidetabell 0 2 2 3 4 5 3 6 7 0 Side 5 av 6

d) Sidene i fysisk minne er lagt inn etter FIFO-algoritmen i rekkefølgen 2, 5 og 7. De neste sidene som etterspørres er 6, 4,3, 2 i denne gitte rekkefølgen. Tegn innholdet i sidetabell og i fysisk minne etter at sidene 6, 4, 3, 2 er etterspurt. Svar: Side 6 kommer inn i ledig blokk. Når side 4 etterspørres er det fullt i fysisk minne, og side 2 i blokk 2 må ut da den kom først inn. Det betyr at side 4 plasseres i blokk 2. Neste side som etterspørres er 3. Det er fullt i minnet og side 5 kastes ut da den var først inn av de som er der nå, dvs side 3 i blokk 3. Til slutt kommer side 2 som skyver ut side 7 og plasserer seg i blokk 0. 0 2 3 4 5 6 7 Sidetabell 0 3 2 Fysisk minne 0 side 2 side 6 2 side 4 3 side 3 e) Hva menes med sidefeil (page fault)? Svar: Sidefeil oppstår når det i prosessen refereres til en side som ikke finnes i fysisk minne. Prosessen må da stoppe opp og vente til den aktuelle siden er hentet inn i minnet. f) Hvorfor er det enklere og mer naturlig å dele kode og data mellom prosesser i et system med virtuelt minne enn i et system som kun opererer med fysisk minne? Forklar. Svar: I system virtuelt minne opererer en med side- og segmenttabeller, og da er det enkelt å la det samme kode- eller datasegmentet inngå i flere prosesser sine tabeller. Da vil alle disse prosessene kunne bruke det samme data- eller kodesegmentet. Slutt! Side 6 av 6