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.
Dokumentation (original)
- Stanford's documentation (Projekten är inte relevanta för kursen.)
- A local copy.
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.
- X1. Grunder i C
- X2. Processhantering i UNIX
- X3. Den dubbellänkade listan i Pintos
- X4. Felsökning med debugger
- X5. Skapa stack till main
- X6. Argument till main
Vecka 13
- 01. Installera Pintos
- 02. Argumenthantering i C-program
- 03. Associativ Container
- Laborationerna 2 och 3 demonstreras lämpligtvis i början av det första labpasset (30/3)
- 04. Systemanropen halt och exit
Vecka 14
- 05. Systemanrop för tangentbord och skärm
- 06. Systemanrop för filhantering
- Nedastående laborationer är inte en del av deadline 1, men påbörjas lämpligtvis innan 12/4
- 07. Övning på semaforer
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
- 10. Processhantering: wait
- Nedastående laborationer är inte en del av deadline 2, men påbörjas lämpligtvis innan 2/5
- 11. Övning på synkronisering
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