Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Relevanta dokument
Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Distribuerade Informationssystem VT-04

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

ELEV- HANDLEDNING (Ansökan via webben)

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

HT 2011 FK2004 Tenta Lärare delen 4 problem 6 poäng / problem

Skriva B gammalt nationellt prov

Tentamen i matematisk statistik (9MA241/9MA341/LIMAB6, STN2) kl 08-13

Arbeta bäst där du är Dialect Unified Mi

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

Vi skall skriva uppsats

Tentamen i Programmering grundkurs och Programmering C

Tentamensdeltagare från Dataekonomutbildningen, Textilekonomutbildningen och Affärsinformatikutbildningen.

Säkerhet. De onda. Vilka är farorna?

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

Menys webbaserade kurser manual för kursdeltagare. Utbildningsplattform: Fronter

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

VÄRDERINGSÖVNINGAR. Vad är Svenskt?

Datorövning 2 Statistik med Excel (Office 2007, svenska)

TIMREDOVISNINGSSYSTEM

7. SAMHÄLLSORIENTERING ÅK 5

4-6 Trianglar Namn:..

Manual för BPSD registret. Version 6 /

Det är bra om även distriktsstyrelsen gör en presentation av sig själva på samma sätt som de andra.

912 Läsförståelse och matematik behöver man lära sig läsa matematik?

För dig som är valutaväxlare. Så här följer du reglerna om penningtvätt i din dagliga verksamhet INFORMATION FRÅN FINANSINSPEKTIONEN

Information om trygghetslarm

Tentamen. Makroekonomi NA0133. Juni 2016 Skrivtid 3 timmar.

Examensarbete är det en kurs? Inst. för Samhällsbyggnad 2009

Utbildningsplan för arrangörer

Boll-lek om normer. Nyckelord: likabehandling, hbt, normer/stereotyper, skolmiljö. Innehåll

SANNOLIKHET. Sannolikhet är: Hur stor chans (eller risk) att något inträffar.

Logga in. Gå in på: Klicka på Logga in. Klicka på den region, kommun eller organisation där din verksamhet finns

Två konstiga klockor

Hur du presenterar och marknadsför dig under själva intervjun är avgörande för att du ska bli en intressant kandidat.

Guide för att hitta markavvattningssamfälligheter och täckdikningsplaner

Enkätresultat för elever i år 2 i Nösnäsgymnasiet 2 i Stenungsund våren 2014

Partnerskapsförord. giftorättsgods görs till enskild egendom 1, 2. Parter 3. Partnerskapsförordets innehåll: 4

Enkätresultat för elever i år 2 i Praktiska Skövde i Praktiska Sverige AB hösten 2014

Individuellt Mjukvaruutvecklingsprojekt

Enkätresultat för elever i år 2 i Mega Musik gymnasium hösten Antal elever: 47 Antal svarande: 46 Svarsfrekvens: 98% Klasser: MM13

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

Sveriges Trafikskolors Riksförbund Film om körkort för nysvenskar Speakertext - Svensk

Föreläsning 5: Rekursion

Utveckla arbetsmiljö och verksamhet genom samverkan

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Vet du vilka rättigheter du har?

SOLCELLSBELYSNING. En praktisk guide. Råd & Tips SOLENERGI LADDA MED. Praktiska SÅ TAR DU BÄST HAND OM DIN SOLCELLSPRODUKT

När du som vårdpersonal vill ta del av information som finns hos en annan vårdgivare krävs det att:

Omvandla Vinklar. 1 Mattematiskt Tankesätt

MANUAL TILL AVTALSMALL FÖR KIST- OCH URNTRANSPORTER

Tankar om elevtankar. HÖJMA-projektet

Statsbidrag för läxhjälp till huvudmän 2016

Har vi lösningen för en bättre hemtjänst? Självklart.

Presentationsövningar

FRÅN A TILL Ö LäraMera Ab / och Allemansdata Ab / FRÅN A TILL Ö

ANVÄNDARHANDLEDNING FÖR

Jämförelse länder - Seminarium

1. Frekvensfunktionen nedan är given. (3p)

Snabbslumpade uppgifter från flera moment.

NATIONELLA MATEMATIKTÄVLING

Arbetsgång och arbetsfördelning för uppsatser på termin 6 ht11. Framtaget av Sanna Tielman Lindberg. Ändringar sedan vt11 är understrukna

DEMOKRATI 3 DEMOKRATINS VILLKOR

Gruppenkät. Lycka till! Kommun: Stadsdel: (Gäller endast Göteborg)

Virkade tofflor. Storlek & By: Pratamedrut. pratamedrut.se/blog/virkade tofflor 1

Sammanfattning på lättläst svenska

Uppdrag: Huset. Fundera på: Vilka delar i ditt hus samverkar för att elen ska fungera?

10 tips. - till dig som tar emot praktikanter

Här kan du läsa om vilka funktioner som finns tillgängliga i Switch King samt vilka möjligheter som finns för att sätta upp systemet (skalbarhet).

Tänkte att det borde ju räcka med 5g2,5 eftersom det är centralt system för värme och varmvatten.

Anva ndarhja lp IMYR -Myndighetsrapportering

Administration Excelimport

Denna talesmannapolicy gäller tillsammans med AcadeMedias kommunikationspolicy. I kommuniaktionspolicyn finns följande formulering:

UPPGIFT: SKRIV EN DEBATTARTIKEL

Sammanfatta era aktiviteter och effekten av dem i rutorna under punkt 1 på arbetsbladet.

Flera nyanser av diskriminering

Koll på cashen - agera ekonomicoach!

Om erbjudandet för din pensionsförsäkring med traditionell förvaltning.

Lathund för överföring av rapporter och ljudfiler

Riktlinjer - Rekryteringsprocesser inom Föreningen Ekonomerna skall vara genomtänkta och välplanerade i syfte att säkerhetsställa professionalism.

729G04 - Hemuppgift, Diskret matematik

Särskilt stöd i grundskolan

FACITSKISSER version (från och med sidan 5)

Detta dokument beskriver vilka regler som gäller för lagspecifika hemsidor använda av Ackers lag.

Matematikboken. alfa. Lennart Undvall Christina Melin Jenny Ollén

Manual för Min sida 1/ rev

Lathund för pedagoger Grundskola med:

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Så kan du arbeta med medarbetarenkäten. Guide för chefer i Göteborgs Stad

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Svenska Du kan med flyt läsa texter som handlar om saker du känner till. Du använder metoder som fungerar. Du kan förstå vad du läser.

Arbetsbeskrivning, att förbereda för studenternas registrering kommande termin. 1. Studenter antagna på fristående kurs 2

Gemensam problemlösning. Per Berggren och Maria Lindroth

Visma Proceedo. Att attestera - Manual. Version 1.4. Version 1.4 /

Kampanj kommer från det franska ordet campagne och innebär att man under en tidsbegränsad period bedriver en viss verksamhet.

Vägledning inför ansökan om statsbidrag för verksamhetsåret 2013

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University Datum för tentamen Date of exam Sal Room Tid Time Kurskod Course code Provkod LADOK code Kursnamn/benämning Course name Institution Department Antal uppgifter som ingår i tentamen Number of assignments Antal sidor på tentamen (inkl. denna) Number of pages including cover Jour/Kursansvarig Responsible/Examiner Telefon till examinator Phone to examiner Besöker salen ca kl. Time of exam visit Kursadministratör Course administrator Tillåtna hjälpmedel Allowed aids 2012-06-01 TER1, TER2 14:00-18:00 TDDI04 TEN1 Operativsystem, realtids- och processprogrammering Concurrent programming, Operating systems and real-time operating systems IDA 8 uppgifter med totalt 45p (90 halvpoäng) 8 assignments for a total of 45 points 7 Klas Arvidsson klas.arvidsson@liu.se 013-28 24 90 Examinator besöker salen efter ca en timme After about one hour Madeleine Häger Dahlqvist 013-28 23 60, madeleine.hager.dahlqvist@liu.se Ordbok, enkel miniräknare (+,-,*,/) Dictionary, pocket calculator. Övrigt Other information Typ av papper Paper to use Antal anmälda Number of students signed up För betyg 3 krävs minst 11p på varje del. Resultat från duggan 2012-03-13 ersätter resultatet på Del VT1 om detta är fördelaktigt. Betygsgränser: U < 50% < 3 < 67% < 4 < 84% < 5 Gränserna är ungefärliga och kan komma justeras. Gränserna är endast stark vägledning till betyget. Det faktiska betyget sätts baserat på helhetsintryck (speciellt för gränsfall). Resultatet tillkännages efter (inom) 10 arbetsdagar. För full poäng krävs tydliga och motiverade svar om inget annan anges. Råder oklarhet om frågans formulering skall examinator tillfrågas vid besök i salen. Är detta inte möjligt skall oklarheten beskrivas i ditt svar, och du svarar så som du tror frågan är menad. Orimliga antaganden eller förenklingar av frågan ger poängavdrag. Rutigt, linjerat eller blankt No preference 114 1 (7)

TIPS: Byt uppgift minst var 30:e minut (eller varför inte använda round-robin med 10 minuters quanta?) Del VT1 (22.5p) 1. Operativsystemets grundstenar (6.5p) a) Vilka data lagras om en process? Vilka data lagras om en tråd? Hur förhåller sig kerneltrådar, processer och usertrådar till varandra? Var ligger ansvaret att schemalägga kerneltrådar, processer och usertrådar? (2.5p) b) Varför behövs trådar i operativsystemet? Varför kan man inte bara göra en sak i taget tills det är klart? Motivera. (1p) Kalle beskriver hur ett systemanrop för att läsa en fil går till. Så här beskriver han: 1) Processen kör i user-mode och behöver läsa en fil. 2) Processen sparar uppdraget (läsa fil) tillsammans med information om hur mycket som skall läsas, vilken fil det gäller och var den lästa informationen skall lagras på operativsystemets kernelstack. 3) Processen frågar OS om lov genom ett avbrott (interrupt). 4) OS kontrollerar att parametrarna på stacken är korrekta och rimliga. 5) OS ger processen tillstånd att utföra systemanropet. 6) Processen får svaret från OS i registret EAX och säger nu till CPU att byta till kernel mode (om svaret var positivt). 7) Processen kör i kernel mode och kan nu läsa filen. 8) Processen säger till CPU att byta tillbaka till user-mode. c) Du har fått uppgiften att bedöma Kalles svar och rätta honom där han gjort fel. Det är mycket viktigt att motivera alla rättelser tydligt. Både varför det är fel, och varför systemanropet måste gå till på det sätt du beskriver istället. (3p) 2. Filsystem (4.5p) Operativsystemet håller reda på en filkatalog, en free-map, en inode-tabell och för varje process dessutom en filtabell. a) Vilka data lagras om en fil i katalogen på disk? Tre viktiga data förväntas. (1.5p) b) Motivera kort varför operativsystemet är designat så att filer måste öppnas innan användning och sedan stängas. (1p) c) Beskriv noga hur linked allocation fungerar, inklusive en fördel och en nackdel. Rita en figur som du förklarar. (2p) 2 (7)

3. Minneshantering (5.5p) Ett mycket litet system med 8-bitars adress använder paging i en nivå (en sidtabell). Varje frame i systemet är 16 byte. Virtuellt minne används. a) Förklara generellt hur en logisk adress delas upp i sidnummer och offset. Motivera.Omdu vill kan du istället förklara för den specifika adressen 0x23 hexadecimalt (35 decimalt). Det ingår att ange hur många bitar varje del får. (1p) b) Sidtabellen (pagetable) innehåller viktig extra information utöver framenummer. Denna lagras typiskt som olika bitar. Två av dessa är valid bit och modified bit. Beskriv en av dessa två bitar och förklara när, hur och varför den används och uppdateras. (1.5p) c) Förklara hur varje del av adressen i uppgift a) används tillsammans med sidtabellen (pagetable) för att få fram den fysiska adressen. (1.5p) d) En process har hög pagefault rate. Vad bör operativsystemet göra? (0.5) Ett större system med 16-bitars adressering använder 256 byte per sida. Med 256 sidor i systemet och varje framepekare i pagetable 16-bit blir varje pagetable 512 byte stor. Det gör att en pagetable inte ryms i en frame, den behöver 2 frames. e) Förklara varför en pagetable som är större än en frame är ett problem. Namnge alternativt beskriv en lösning. (1p) 4. Schemaläggning (6p) process start length prioritet P1 4 3 1 (högst prioritet) P2 3 4 2 P3 6 3 3 P4 1 4 4 (lägst prioritet) Tabellen visar data för vid vilken tidpunkt ett antal processer startar, hur mycket exekveringstid var och en behöver samt vilken prioritet var och en har i systemet. a) Använd priority scheduling (med preemption) för att schemalägga processerna. (2p) b) Beräkna med förklaring turnaround time för process P1 i ditt schema i a) (0.5p) c) Som tillägg till ovan information får du veta att process P4 tar lås A när den exekverat i en tidsenhet och behöver exekvera med låset under 2 tidsenheter. Även process P1 försöker ta lås A när den exekverat en tidsenhet. Lås A är ledigt från start. Gör om ditt schema (rita ett nytt) i a) med hänsyn till denna information. Du måste tänka på i vilken kö en process placeras medan den väntar på ett lås, och vilken kö schemaläggningen använder. (2p) d) Jämför din lösning i a) och c). Beräkna turnaround time för P1 igen. Namnge eller förklara kort det problem som uppstått. Tips: fundera på vilka processer som borde ha prioritet över andra processer. (1p) e) Definiera vad som menas med ett realtidssystem. (0.5p) 3 (7)

Del VT2 (22.5p) 5. Lås och semaforer (5p) Kalle skriver ett flertrådat program i ett system som bara har tillgång till räknande semaforer (fungerar som semaforerna i Pintos). a) Förklara hur en räknande semafor fungerar. Vad är det som räknas? Under vilken situation kommer anropande tråd att placeras på en väntekö? Under vilken situation flyttas en väntande tråd tillbaka till readykön? (1.5p) b) Nu behöver kalle ett vanligt lås. Förklara hur han skall gå tillväga för att kunna använda en semafor istället för ett lås. Hur skall han låsa? Hur skall han låsa upp? Vilka nackdelar har en sådan lösning (konkret exempel)? (2p) c) Tråd P beräknar en produkt och lagrar resultatet i den delade variabeln R. Tråd Q behöver resultatet från P och har direkt tillgång att läsa R. Problemet är att Q inte vet om P är klar med uträkningen. Använd antingen en semafor eller ett condition och ge exempel på en lösning där uträkningen alltid är klar innan Q läser R. (1.5p) 6. Synkronisering (8p) Kalle har implementerat en associativ container (map) där man kan stoppa in en pekare till en processinformationsstruktur och få tillbaka en nyckel (hitta_ledig_plats). Man kan även fråga efter vilken struktur som är kopplad till en viss nyckel (hämta_pekare) och ta bort pekaren som hör till en viss nyckel (frigör_plats). Implementationen av detta hittar du på tentans sista sida. Operativsystemet använder datastrukturen när processer skapas (ett processid genereras genom att sätta in en pekare till processinformation i containern) och avslutas (processionformation tas bort), samt när information om en process behövs. Alla funktioner anropas alltså med en pekare till samma container. Det är givet att alla processer kan skapa nya processer, och att processer bara kan hämta information om eller ta bort sig själva. OBS! Sista sidan finns i två kopior. Renskriv på sida 7 och ta loss och lämna in den. a) Stryk under alla ställen i koden där en resurs gemensam för mer än en tråd används. (0.5p) b) Rita en ruta runt alla kritiska sektioner och förklara varför all kod inuti rutan är kritisk, samt varför koden utanför rutan inte är kritisk. (2p) (Utgå t.ex. från den sista raden i kritiska sektionen och förklara varför den beror av att något från sektionens första rad, eller demonstrera en exekveringssekvens som ger fel resultat.) c) Förklara hur du använder ett globalt lås för att synkronisera dina kritiska sektioner. (0.5p) d) Förklara en stor nackdel med lösningen i c). Motivera varför. (1p) e) Föreslå en lösning som tillåter flera trådar att samtidigt exekvera i for-loopen. (2p) f) Kalle funderar på om inte hårdvaruinstruktionerna test_and_set eller atomic_swap skulle gå att använda och kontrollerar om några sådana hårdvaruinstruktioner finns att tillgå. Tyvärr hittar han ingen av dem, men istället hittar han compare_and_swap. Även den finns på sista sidan. Visa hur han kan använda den istället för lås. (1p) g) Förklara vilka fördelar en hårdvaruinstruktion som compare_and_swap har gentemot motsvarande lösning med vanliga lås. (1p) 4 (7)

7. Deadlocks (5.5p) a) Det finns tre nödvändiga villkor och ett tillräckligt villkor för deadlock. Namnge och beskriv dessa villkor. (2p) b) I Kalles system inträffar följande 6 händelser. Rita en resursallokeringsgraf med processer (cirklar) och lås (rutor) samt pilar som beskriver de olika händelserna. Förklara vad olika pilar betyder. (2p) 1) Process 3 tar Lås C (lyckas) 2) Process 1 tar Lås A (lyckas) 3) Process 1 tar Lås B (lyckas) 4) Process 1 försöker ta Lås C (måste vänta) 5) Process 3 försöker ta Lås A (måste vänta) 6) Process 2 försöker ta Lås B (måste vänta) c) Vi har inte kännedom om vad som hänt före händelse 1. Ange med motivering vilka tre villkor som garanterat är uppfyllda vid händelse 6. Dvs. vilket villkor är kanske inte uppfyllt? (0.5p) d) Om deadlock inträffar, ange med motivering vid vilken händelse. Annars motiverar du varför deadlock inte inträffat. (1p) 8. Tillgänglighet och säkerhet (4p) Kalles brorson Bertram har satt upp en egen webserver för sin internetshop. Han använder en open-source webshop-portal med PHP. Databasen är MySQL, och servern kör Apache under Linux. Systemet har en användare (root) som har tillgång till allt och kör alla processer (speciellt webservern Apache och dess webapplikationer i PHP samt databasen MySQL). Eftersom upptid är viktigt och Bertram lagt mycket tid på uppbyggnaden av webshopen, och kunddatabasen samt all försäljningsinformation är mycket viktigt (behövs till företagets årsredovisning) så har Bertram investerat i en extra disk så han kan köra RAID. Han har valt RAID-nivå 0 för att inte slösa på diskutrymme. Det finns ingen backup, utan Bertram tycker att RAID-0 räcker. Tillgången till sidan är begränsad till Bertrams kunder genom ett PHP-script Bertram gjort själv. Lösenorden är lagrade i klartext i en fil passwords.txt. Filen ligger tillsammans med PHP-scriptet på webben. Bertram tittar ibland i filen via webben när användare ringer och har glömt sitt lösenord. Kunderna är viktiga och därför behövs snabb support. Nu kommer Bertram åt lösenorden från vilken dator som helst, till och med i sin smartphone, och det tycker han är praktiskt. Det som hindrar att andra tittar i filen är tre saker enligt Bertram: 1) Det går inte att lista filerna i mappen, man kommer automatiskt till inloggningssidan, så inga människor kan råka hitta lösenordsfilen. 2) Inga websidor länkar till filen, så inga robotar kan råka hitta lösenordsfilen. 3) Bara Bertram vet filens namn ( passwords.txt ) så inga andra vet vad de skall skriva för att visa filen. Bertram vet namnet, så för honom räcker det skriva in rätt URL. Eftersom Bertram är mycket seriös och vet att han inte alltid har så bra koll på det datatekniska har han anlitat dig som konsult. Han vill försäkra sig om att systemet är säkert och tillförlitligt. a) Förklara hur Bertram kan använda operativsystemets skyddsmekanismer för att bättre skydda systemet mot effekterna av ett intrång via t.ex. webbservern. Tänk på principle of least privilege. Motivera. (1p) b) Förklara hur Bertram skall skydda sig mot dataförlust och nertid. Motivera. (1p) c) Beskriv kort fyra åtgärder Bertram kan ta för att skydda sin lösenordslista på bästa sätt. (2p) 5 (7)

typedef container void* plats[size]; // alla index initieras till NULL void* hämta_pekare(container* k, int nyckel) return k->plats[nyckel]; else void* frigör_plats(container* k, int nyckel) void* info; info = k->plats[nyckel]; k->plats[nyckel] = NULL; return info; // returnera gamla värdet på platsen int hitta_ledig_plats(container* k, void* info) int i; for (i = 0; i < SIZE; ++i) if ( k->plats[i] == NULL ) // är det ledigt? k->plats[i] = info; return i; // indexet blir nyckel return -1; // koden motvarande detta körs i en hårdvaruinstruktion int compare_and_swap (int* reg, int oldval, int newval) int old_reg_val = *reg; if (old_reg_val == oldval) *reg = newval; return old_reg_val; 6 (7)

typedef container void* plats[size]; // alla index initieras till NULL void* hämta_pekare(container* k, int nyckel) return k->plats[nyckel]; else void* frigör_plats(container* k, int nyckel) void* info; info = k->plats[nyckel]; k->plats[nyckel] = NULL; return info; // returnera gamla värdet på platsen int hitta_ledig_plats(container* k, void* info) int i; for (i = 0; i < SIZE; ++i) if ( k->plats[i] == NULL ) // är det ledigt? k->plats[i] = info; return i; // indexet blir nyckel return -1; // koden motvarande detta körs i en hårdvaruinstruktion int compare_and_swap (int* reg, int oldval, int newval) int old_reg_val = *reg; if (old_reg_val == oldval) *reg = newval; return old_reg_val; 7 (7)