TDIU16 Process- och operativsystemprogrammering
Laborationer
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 veckoplanering över kursen. Den är tänkt att användas som stöd för att avgöra om man är i fas eller inte. Deadlines ger bonus på tentan, och alla laborationer ska vara redovisade 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
Labbuppgifterna är i allmänhet korta och beskriver målet med uppgiften och ger tips på hur problemet kan angripas. Resterande information finns i Pintos-Wikin i vänstermenyn, eller här nedanför. Där finns information om hur Pintos fungerar, tips för felsökning, och annan bra information.
Innan ni börjar är det en bra idé att läsa igenom introduktionskapitlet i Wiki:n.
Dokumentation (original)
- Stanford's documentation (Projekten är inte relevanta för kursen.)
Fristående uppgifter att göra när man sitter fast
Nedan finns en lista över uppgifter i den ordinarie labbserien som inte beror på några andra labbar. De kan därmed vara lämpliga att göra ifall man sitter fast med en annan labb och inte har möjlighet att fråga en assistent omgående.
- Lab 1: Alla deluppgifter är oberoende av varandra
- Lab 3: Del A är fristående
- Lab 4: Del A är fristående
- Lab 5: Del A är fristående
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.
- X0. Argumenthantering i C
- 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 14
- 1. Introduktion till Pintos och C-programmering
- Del A och B görs lämpligtvis under "eget arbete" innan första labpasset, och redovisas under första labpasset
- 2. Grundläggande systemanrop (Del A)
Vecka 15
- 2. Grundläggande systemanrop (alla delar)
Deadline 1
Du ska kunna köra examples/file_syscall_tests.c
felfritt.
Deadline för bonus 2025-04-17 (räkna med att vara klar senast 2025-04-15 - det passet har annat upplägg)
Vecka 16
- 3. Processhantering (Del A och B)
Vecka 17
- 3. Processhantering (Del C och D)
Vecka 18
Notera: Valborg och första maj i denna vecka
- 4. Synkronisering av filsystemet (Del A)
Deadline 2
Programmen examples/longrun_*
fungerar (notera: longrun_nowait
kommer
alltid få utskriften ERROR
(varför?))
Deadline för bonus 2025-05-05
Vecka 19
- 4. Synkronisering av filsystemet (alla delar)
Vecka 20
- 4. Synkronisering av filsystemet (Del C)
- 5. Säkra systemanrop (Del A)
Vecka 21
- 5. Säkra systemanrop (Del A och B)
Deadline 3
Deadline för bonus 2025-05-23
Vecka 23
- Tenta (2025-06-02 kl 08-12)
Deadline för kursen
Deadline för eventuella rester/kompletteringar: 2025-06-06
Allt som händer efter detta datum hanteras nästa gång kursen går.
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.
Studenter från tidigare år
Här är saker att göra om du har påbörjat kursen tidigare år men inte blivit klar:
- Skicka e-post till kursledare och meddela att du har resultat sedan tidigare
För att du dels ska kunna tillgodoräkna avklarade delar av labbserien från tidigare år, och dels så att du hamnar i en lämplig grupp i år.
-
Hämta hem senaste versionen av labbskelettet från Git. Har du varit duktig och
versionshanterat räcker det sannolikt att göra
git pull https://gitlab.liu.se/tdiu16-material/pintos.git
. - Kontrollera ifall några laborationer har ändrats eller tillkommit. Dessa måste du eventuellt redovisa/göra på nytt i år.
- Inför redovisning: se till så att du är väl insatt i din kod. Även kod från tidigare år. Vid redovisningen vill vi se att du har förstått vad du har gjort. Vikten är inte att koden är helt korrekt.
Sidansvarig: Filip Strömbäck
Senast uppdaterad: 2025-04-16