Göm menyn

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 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.

Pintos-Wiki

Dokumentation (original)

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.

Vecka 13

Notera: Påsk i slutet av vecka 13.

Vecka 14

Deadline 1

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

Deadline för bonus 2024-04-09

Vecka 15

Vecka 16

Vecka 17

Deadline 2

Programmen examples/longrun_* fungerar (notera: longrun_nowait kommer alltid få utskriften ERROR (varför?))

Deadline för bonus 2024-04-25

Vecka 18

Vecka 19

Notera: Kristi himmelsfärd denna vecka (mycket helgdagar)

Vecka 20

Vecka 21

Deadline 3

Deadline för bonus 2024-05-21

Vecka 22

  • Tenta (2024-05-29 kl 08-12)

Deadline för kursen

Deadline för eventuella rester/kompletteringar: 2024-06-07

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: 2024-04-03