Rubriker markerade med en asterisk ( * ) kommer från kursplan version HT 2021
Innehåll och lärandemål
Kursinnehåll
Kursen ger kunskaper om principerna för och hur man kan implementera
abstraktioner av hårdvara
virtualisering av resurser och schemaläggning av uppgifter; främst vad avser exekvering, minne och persistent lagring.
Ett operativsystems uppbyggnad studeras för att öka kunskapen om dessa begrepp och även ge färdighet i att på ett effektivt sätt använda den abstraktionsnivå som ett operativsystem erbjuder.
Lärandemål
Efter godkänd kurs ska studenten kunna
förklara hur flertrådade processer är strukturerade,
förklara hur ett operativsystem kan hantera flera processer samtidigt.
För högre betyg skall studenten dessutom kunna
förklara hur virtualisering av minne implementeras,
förklara hur minneshantering implementeras,
förklara egenskaper för olika schemaläggningsalgoritmer,
förklara egenskaper för olika typer av processkommunikation,
förklara implementering av mer avancerade filsystem.
Läraktiviteter
Under kursens gång kommer vi ha ett antal schemalagda föreläsningstillfällen. Vid dessa tillfällen kommer vi ta upp frågor och diskutera vidare om de ämnen som tas upp i kursliteraturen och de förinspelade videoföreläsningarna.
Det finns även övningstimmar schemalagda där ni får hjälp med de programmeringsuppgifter som finns i kursen. Uppgifterna är inte obligatoriska och skall inte redovisas men frågor på tentamen kommer ha dessa uppgifter som utgångspunk.
Förberedelser inför kursstart
Rekommenderade förkunskaper
För att kunna tillgodoräkna dig kursen skall du ha grundläggande kunskaper om hur datorer är uppbyggda och fungerar, motsvarande grundkursen i datorteknik, samt god programmeringsvana.
Kurslitteratur
Kursen kommer att vara baserad på:
Remzi H. Arpaci-Dusseau och Andrea C. Arpaci-Dusseau, "Operating Systems: Three Easy Pieces", Arpaci-Dusseau Books.
Boken finns i sin helhet nedladdningsbar från OSTEP. Det är dock en mycket läsvärd och rolig bok och den kostar desutom inte särskilt mycket. Om ni skall beställa böcker så gå förslagsvis ihop några stycken så blir fraktkostnaden lägre per bok (annars kostar frakten nästan lika mycket som boken).
Referenslitteratur:
Andrew S. Tanenbaum, "Modern Operating Systems", Prentice-Hall.
Boken finns i ett antal upplagor och har funnits med ett tag (min är från 1986 :-) . Den är ingen spännade läsning men är utmärkt som referensliterator.
Utrustning
Kursen är upplagd så att du skall kunna använda din egen dator för att göra de uppgifter ni får. Har du ingen egen dator så kan du använda datorerna i datorsalarna som har Ubuntu installerat.. Alla övningar utom en går att köra där; en uppgift kräver att man har s.k. root-behörighet vilket ni inte har på dessa maskiner.
Vi kommer under kursen göra många referenser till CPU-arkitekturen x86 vilket de allra flesta har. Har du den senaste Mac-datorn så har du dock en M1 vilket är en annan typ av processor. Det är dock inga uppgifter i kursen som är beroende av att man har en x86-cpu.
Programvara
Vi kommer under kursen använda operativsystemet Linux som referens och det är mycket bra om du har tillgång till detta. Det kan du lösa genom att: använda en egen laptop med:
Ubuntu eller någon annan Linuxdistribution installerat,
macOS installerat då detta system också är inom Unix-familjen, eller
Windows installerat och då använda det som kallas Windows Subsystem for Linux (WSL).
Har du macOS eller Windows och vill prova på att arbeta i en Linux-miljö kan du t.e.x använda en virtualiserad miljö t.ex. VirtualBox. Även om du redan har Ubuntu installerat är det lärorikt att lära sig använda virtualiserade miljöer.
Alla programmeringsuppgifter är i C så du måste ha en programmeringsmiljö där du kan skriva, kompilera och köra program skrivna i C. Det står dig fritt att använda vilken miljö som helst. men i de uppgifter som finns så har gcc använts. Använder du en annan kompilator, t.ex. Clang eller Visula C++ så kommer allt att fungera men det kan vara flaggor och inställningar som skiljer sig,
Stöd för studenter med funktionsnedsättning
Om du har en funktionsnedsättning kan du få stöd via Funka:
Kursen kommer använda sig av C-program för att förstå hur ett operativsystem fungerar. Kursen är dock inte en kurs i C-prgrammering. Det förutsätts att du antingen har grundläggande kunskaper i C-programmering sedan tidigare eller att du kan plocka upp dessa färdigheter själv. De övningshandledare som kommer finnas vid övningstillfällena kommer kunna hjälpa dig om du har problem.
Examination och slutförande
Betygsskala
A, B, C, D, E, FX, F
Examination
TENA - Tentamen, 6,0 hp, Betygsskala: A, B, C, D, E, FX, F
Examinator beslutar, baserat på rekommendation från KTH:s samordnare för funktionsnedsättning, om eventuell anpassad examination för studenter med dokumenterad, varaktig funktionsnedsättning.
Examinator får medge annan examinationsform vid omexamination av enstaka studenter.
Avsnittet nedan kommer inte från kursplanen:
Tentamen ( TENA )
Tentamen kommer (om inget annat bestäms) ges online i Canvas.
Målrelaterade betygskriterier/bedömningskriterier
Tentamen kommer vara uppdelad i flera delar där varje del tar upp ett område som anges i de lärandemål som finns.
Den första delen, som är kravet för E, handlar om hur processer är strukturerade och hur operativsystemet kan hantera flera processer samtidigt. Detta inkluderar inte hur det faktikst är implementerat men de synliga effekterna man ser och konsekvenserna det har för en programmerare.
Övriga delar är för högre betyg och går in på hur saker och ting faktikst är implementerat under ytan. Det kommer finnas en del för varje område:
virtualisering av minne,
minneshantering i en process (malloc/free)
schemaläggningsalgoritmer,
processkommunikation (pipes/socket/signaler/...)
filsystem.
Dessa delar ger angtingen godkänt eller underkänt och betygsättningen är som följer: 2 av 5 ger D, 3 ger C, 4 ger B och 5 av 5 ger A.
Möjlighet till komplettering
En gräns på den första del kommer finnas för FX.
Möjlighet till plussning
Plussning uppmuntras.
Ta kontakt med studievägledningen och be om att bli registrerad på omtentamen.
Resultatrapportering
Resultat rapporteras i LADOK.
Etiskt förhållningssätt
Vid grupparbete har alla i gruppen ansvar för gruppens arbete.
Vid examination ska varje student ärligt redovisa hjälp som erhållits och källor som använts.
Vid muntlig examination ska varje student kunna redogöra för hela uppgiften och hela lösningen.