Göm menyn

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:

  1. 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.
  2. 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/start i 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.gz till bara .tar och 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.sh i 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

Materialet som tillhör boken innehåller många exempel som går att köra i Progvis. Utöver det kan du välja File -> Open example... i menyn i Progvis, och sedan välja katalogen concurrency. Exemplen där kommer huvudsakligen från föreläsningsserien i den här kursen.

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