Hoppa till huvudinnehållet
Till KTH:s startsida Till KTH:s startsida

ID1200 Operativsystem 6.0 hp

Kurs-PM HT 2021-50807

Version 1 – 2021-06-07 12:46:10

Kursomgång

HT 2021-1 (Startdatum 2021-08-30, Svenska)

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kurs-PM HT 2021

Presentation av kursen

Kursen avser ge dig kunskap om hur operativsystem implementeras och hur man praktiskt skriver program som utnyttjar operativsystem, sk. systemprogrammering. 

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,

Programmeringkunskaper

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.

Ytterligare Information

Ingen information tillagd

Fakta om kursomgång

Startdatum

2021-08-30

Kursomgång

  • HT 2021-50807

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kontakter

Kursansvarig

Lärare

Examinator