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.
- 
		Verktyg för Linux (Bör fungera i Debian-baserade system med x86-baserad CPU)
		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-filen>. Kör sedanstart.shgenom att antingen 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./start.shi terminalen.
- 
		Verktyg för Windows
		På Windows kommer du antagligen 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
	Här finns en uppsättning exempel som är anpassade för att köra i verktyget. Uppgifterna kan
	ibland även kompileras och köras utanför verktyget (dock endast på Linux i dagsläget). Om det
	finns en fil som heter Makefile kan du kompilera koden med
	kommandot make: skriv make x för att kompilera
	filen x.c. Detta går dock inte med alla exempel, eftersom vissa av dem är gjorda
	specifikt för visualiseringsverktyget.
- Diverse pekarövningar från föreläsning 0
- Version av koden från föreläsning 0 lämplig för verktyget
- Uppgifter från studien
- Bankexempel från föreläsning 3 (uppdaterad med exempel från föreläsning 5)
- Bounded buffer från föreläsning 2 och 3
- Låsimplementationer från föreläsning 4
- Filosofer från föreläsning 5
- Tenta 2018-05-30 anpassad för visualiseringen (tyvärr inte uppgift 7)
Online-tävling
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: 2025-03-21
	  
 English web site
English web site 
          
           
           
        