TDIU16 Process- och operativsystemprogrammering
Visualiseringsverktyg
Här finns visualiseringsverktyget som nämns i labhandledningen. Verktyget är byggt för att visa hur trådning interagerar med datamodellen i C (inklusive pekare och referenser). Verktyget kan köra enkel C-kod och visa vad som händer. I multitrådade program har du möjlighet att köra trådarna i olika ordning för att se vilka problem som kan uppstå. Verktyget säger också till när så kallade data races uppstår.
Verktyget kan användas på två sätt:
- Visualisera kod på din dator. Detta görs dels i labbarna, och dels finns en uppsättning gamla problem nedan som är bra övning inför tentan.
- Tävla med dina klasskompisar online. Här finns synkroniseringsuppgifter som ger poäng. Se denna sida för mer detaljer.
Hämta verktyget
Ladda ner verktyget från en av länkarna nedan, packa upp filen någonstans och
kör progvis.sh eller Progvis.bat.
-
SU-salar eller ThinLinc
Om du sitter vid en dator i en SU-sal, eller kör via ThinLinc kan du helt enkelt starta verktyget genom att köra kommandot
/courses/TDIU16/progvis/starti en terminal. -
Linux: x86_64 (amd64), arm64 (aarch64) (bör fungera i Debian-baserade system)
På Linux öppnas troligtvis en grafisk arkivhanterare som standard. Markera i så fall alla filer (Ctrl+A), och välj Packa upp eller motsvarande. Välj sedan en tom mapp att lägga dem i. Alternativt, öppna en terminal i den mapp där du vill packa upp verktyget och skriv
tar -xvf <sökväg till .tar.gz-filen>.Värt att notera är att Chrome har en ovana att ta bort komprimeringen, vilket förvirrar arkivhanterare. Om uppackningen inte fungerar, byt namn på filen från
.tar.gztill bara.taroch prova igen. Alternativt, ladda ner filen med Firefox.När du har packat upp arkivet, kör sedan
progvis.sh, antingen genom klicka på den i den grafiska miljön (du kan behöva välja Kör i terminal i meddelandet som visas), eller genom att skriva./progvis.shi terminalen. -
Verktyg för Windows
Ladda ner .zip-filen och packa upp den till en katalog. Det kan du exempelvis göra genom att öppna zip-filen i utforskaren och kopiera innehållet till en ny katalog någonstans. Kör sedan
Progvis.bat.Första gången kommer du antagligen att se meddelandet som visas nedan (Windows har skyddat datorn). Det är ett meddelande som visas för alla program som Windows inte känner igen sedan tidigare (dvs. program som inte många i världen laddar ner), och betyder inte nödvändigtvis att programmet är skadligt. Vill du köra programmet, klicka på Mer information och sedan Kör ändå (jag brukar ha för vana att skanna programmen med mitt virusprogram först). Du behöver bara godkänna detta första gången.
Notera: Verktyget innehåller allt som behövs. Du behöver alltså inte installera någon separat C-kompilator eller liknande.
Undersök kod på din dator
När du har laddat ner och startat verktyget kan du öppna egen kod med hjälp av File
-> Open.... Verktyget kompilerar sedan koden och visar den. Du kan sedan stega i ditt
program som du vill för att hitta synkroniseringsproblem. Verktyget förstår de
synkroniseringsprimitiver som finns i Pintos (de vi tar upp i kursen), samt
funktionen thread_new för att starta nya trådar.
Tyvärr klarar inte verktyget allt som går att göra i "vanlig" C. Detta för att verktyget behöver ha lite extra koll på vad koden försöker göra (det går inte alltid i vanlig C). Du märker när detta sker genom att verktyget ger ett kompileringsfel som en "vanlig" C-kompilator inte skulle ge. Det är också en bra idé att köra små exempel i visualiseringsverktyget för att det inte ska bli allt för svårt att se vad som händer.
Tips: Om du enkelt vill experimentera med olika lösningar är det en bra idé att öppna samma källkodsfil både i verktyget och i en texteditor. När du har ändrat i koden kan du sedan välja File -> Reload program... (Ctrl+Shift+R).
Uppgifter/exempel
Progvis har inte en helt komplett C-kompilator, så det går inte att köra vilken kod som helst i verktyget. Information om begränsningar, samt en förteckning av inbyggda synkroniseringsprimitiver finns i appendix A och B i boken Introduction to Concurrent Programming in C
Online-övningar
Det finns också ytterligare uppgifter som kan lösas för bonus på tentamen. Se här för mer information.
Sidansvarig: Filip Strömbäck
Senast uppdaterad: 2026-03-19
