Göm menyn
Detta är en gammal version av kurshemsidan och kan innehålla inaktuell information. Klicka här för att komma till årets upplaga av kursen.

TDIU16 Process- och operativsystemprogrammering

Laborationer


Labanmälan

Se länken i vänstermenyn.

Arbete med laborationerna

Laborationerna görs i par. All mjukvara som krävs för laborationerna finns installerad på datorerna i SU-salarna på IDA. Det går även att arbeta med laborationerna hemifrån eller på egen dator då SU-salarna är upptagna.

Versionshantering med git

Koden för Pintos hämtar du genom att klona ett git-repository. När du väl klonat Pintos från kurs-repositoryt finns inget krav att fortsätta utnyttja fördelarna med att ha koden i git annat än att ladda upp koden där så att assistenterna i kursen kan komma åt den. Dock kan du enkelt välja att utnyttja styrkorna med Git under kursen och få värdefull kunskap på köpet.

Det finns många tutorials om git på webben. En som är både "hands-on" och visuell är http://learngitbranching.js.org/.

Om du väljer att använda git rekommenderar vi:

  • Använd branching! Lös varje delproblem i en egen branch. Gör experiment i en egen branch. Ni kan till och med jobba parallellt på var sin branch om det fungerar för er. Då kan ni ha "master" funktionell och ändå committa ofta.
  • Checka in koden frekvent! Gör en commit så fort ni har löst ett litet problem som för er framåt. Så fort det går beskriva vad ni gjort med en kort mening, kör git commit -m "den korta meningen". Då blir det lätt följa vad som hänt i historiken, vilket kan underlätta vid felsökning, eller om man behöver gå tillbaka till en tidigare version.

Git blir mycket enklare om du vet vad du gör, eller omvänt: om du provar ett kommando och det visar sig fel är det mycket jobbigt att få det rätt igen (men det går!). När du gjort alla fel och till slut lärt dig använda git rätt kanske du uppskattar lite träffsäker git-komik:

Labba hemifrån (valfritt)

Om du vill kunna arbeta med laborationerna hemifrån går även det. I detta fall är det extra viktigt att vara noggran med att versionshantera koden med Git och göra commits ofta för att inte riskera att den senaste versionen finns på fel dator.

Pintos-kodbasen går att kompilera och köra under de flesta Linux-system. Vi har dock bara möjlighet att garantera att allt fungerar som det ska på Ubuntu 20.04 (vi har sett att saker fungerar på andra system, men vi kan inte ge garantier). Följande alternativ finns för att få tillgång till ett Ubuntu-system:

  • På din Linux-maskin - Om du redan kör Linux (gärna Ubuntu) så kan du helt enkelt följa instruktionerna för att installera Pintos i lab 3.
  • Virtuell maskin - Oavsett vilket operativsystem du kör så kan du installera Ubuntu i en virtuell maskin, exempelvis med hjälp av VirtualBox. Instruktioner för detta finns här. Efter att du har installerat Linux i din virtuella maskin kan du följa instruktionerna för att installera Pintos i lab 3.
  • WSL - Om du kör Windows så kan du också installera Ubuntu i WSL. Vi vet i kursen att studenter har gjort labbserien på detta sätt. Vi har tyvärr inte möjlighet att hjälpa till att felsöka detta sätt att göra labbarna på (du kan behöva konfigurera ytterligare saker för att grafiska applikationer ska fungera korrekt, exempelvis). Vill du testa så kan du köra instruktionerna för att installera Pintos i lab 3 i en WSL-terminal.
  • ThinLinc - Du kan även köra ThinLinc för att komma åt skolans system och filsystem. ThinLinc fungerar bra för att labba hemma någon gång ibland, men om alla använder ThinLinc som huvudsätt att arbeta med labbarna finns risk för att systemet inte orkar med. Föredra därför att göra labbarna på din egen dator om du regelbundet labbar hemifrån.

Regler för examinering av datorlaborationer vid IDA

Datorlaborationer görs i grupp eller individuellt, enligt de instruktioner som ges för en kurs. Examinationen är dock alltid individuell.

Det är inte tillåtet att lämna in lösningar som har kopierats från andra studenter, eller från annat håll, även om modifieringar har gjorts. Om otillåten kopiering eller annan form av fusk misstänks, är läraren skyldig att göra en anmälan till universitetets disciplinnämnd.

Du ska kunna redogöra för detaljer i koden för ett program. Det kan också tänkas att du får förklara varför du har valt en viss lösning. Detta gäller alla i en grupp.

Om du förutser att du inte hinner redovisa i tid, ska du kontakta din lärare. Då kan du få stöd och hjälp och eventuellt kan tidpunkten för redovisningen senareläggas. Det är alltid bättre att diskutera problem än att, t.ex., fuska.

Om du inte följer universitetets och en kurs' examinationsregler, utan försöker fuska (t.ex. plagiera, använda otillåtna hjälpmedel eller ej godkända AI-baserade assistenter) kan detta resultera i en anmälan till universitetets disciplinnämnd. Konsekvenserna av ett beslut om fusk kan bli varning eller avstängning från studierna.

Policy för redovisning av datorlaborationer vid IDA

För alla IDA-kurser som har datorlaborationer gäller generellt att det finns en bestämd sista tidpunkt, deadline, för inlämning av laborationer. Denna deadline kan vara under kursens gång eller vid dess slut. Om redovisning inte sker i tid måste, den eventuellt nya, laborationsserien göras om nästa gång kursen ges.

Om en kurs avviker från denna policy, ska information om detta ges på kursens webbsidor.

Assistenthjälp under laborationspass

Under laborationerna kommer assistenterna att gå runt i salarna. Assistenterna börjar i ena änden av salen (eller salarna) och ser till att gå förbi alla grupper. Om ni behöver hjälp, påkalla assistentens uppmärksamhet när denne passerar er.

Den typen av problem som uppkommer i den här kursen (framför allt på de senare labbarna) tar ofta relativt lång tid för assistenten att hjälpa till med. Ni kan därmed inte räkna med att få hjälp av assistenten mer än en eller två gånger under ett labbpass. Det är därför en bra idé att förbereda sig inför labbpasset genom att åtminstone läsa igenom labbinstruktionerna, och gärna börja skriva lite kod innan. På det viset kan ni utnyttja den tid ni har med assistenten så bra som möjligt. Utöver detta är det bra att ha en "backupplan" att arbeta med medan man väntar på assistenten. Detta kan exempelvis vara att läsa kommande labbar, eller att läsa in sig mer på koden i Pintos. Det finns också ett par uppgifter som är märkta som "Fristående uppgifter" som kan påbörjas lite när som.

Redovisningar

Laborationerna redovisas muntligen under labbpassen. Du behöver inte skicka in något efter den muntliga redovisningen. Det är dock en bra idé att versionshantera din kod och se till att kurspersonalen är inbjuden till ert Git-repository (vissa problem kräver att vi i lugn och ro tittar närmare på er kod).

Labuppgifter

Nedan finns en planering över kursen. Det viktigaste att fokusera på är att bli klar med labbarna till var och en av de tre deadlines som finns nedan. Det finns också en veckoplanering som är tänkt att hjälpa er att komma i mål med de deadlines som finns. Det är dock inte ett problem ifall någon del av någon labb flyttas framåt eller bakåt någon vecka. Notera att deadlines är mjuka och ger bonus om de möts. Missar ni en deadline går det att redovisa även senare. Dock är en missad deadline en indikation på att ni riskerar att inte bli klara med labbserien innan hård deadline.

Utöver veckoplanen finns en lista av fristående övningar som kan lösas lite när som. Dessa fungerar bra att arbeta med när man har kört fast med någon annan labb. Det finns också några frivilliga övningar som ger extra övning i C eller som visar på hur olika koncept i Pintos fungerar i Linux (eller andra UNIX-system).

Pintos-Wiki

PDF:erna med labbuppgifter är i allmänhet korta, och beskriver vad som är målet med uppgiften samt visar var man kan börja nysta i problemet. Ofta behövs ytterligare information för att lösa laborationen, vilken återfinns i Pintos-Wikin som är länkad nedan. Där finns mycket generell information som kan vara relevant i flera laborationer, exempelvis tips för felsökning, hur olika saker i Pintos är uppbyggda och dylikt.

Här nedan finns Pintos-Wikin med övergripande information som är relevant för laborationerna. Innan ni börjar med laborationerna är det en bra idé att läsa igenom introduktionskapitlet i Wikin som går igenom saker att tänka på när man skriver C-kod i en kernel.

Pintos-Wiki

Dokumentation (original)

Fristående uppgifter att göra när man sitter fast

Dessa uppgifter kommer användas senare i kursen, och kan vara bra att titta på ifall man har fastnat med en ordinarie laboration. Dessa implementeras alla utanför Pintos, så de går att göra även om allt annat i Pintos är trasigt.

Fristående frivilliga uppgifter

Dessa uppgifter behöver inte göras för att klara labbserien (därav numreringen X=eXtra). Däremot ger de en djupare förståelse för hur vissa av de systemanrop som implementeras i Pintos fungerar.

Vecka 13

Vecka 14

Deadline 1

Du ska kunna köra examples/file_syscall_tests.c felfritt.

Deadline för bonus 12/4

Vecka 15

Notera: Påskhelgen ligger i slutet av denna vecka

Vecka 16

Vecka 17

Deadline 2

Programmen examples/longrun_* fungerar.

Deadline för bonus 2/5

Vecka 18

Vecka 19

Vecka 20

Deadline 3

Alla Pintos testprogram fungerar konsekvent över många testkörningar.

Deadline för bonus 20/5

Vecka 21

Kristi himmelsfärd denna vecka (mycket helgdagar)

Vecka 22

  • Tenta (2022-06-01 kl 08-12)

Sidansvarig: Filip Strömbäck
Senast uppdaterad: 2022-03-14