Hide menu

TDDE47 Concurrent programming and Operating Systems

Bankproblem Visualiseringsverktyg


Använd visualiseringsverktyget nedan för att närmare undersöka de olika lösningarna och se hur de beter sig då transfer-funktionen körs från flera trådar samtidigt. Verktyget finns installerat på ThinLinc och i SU-salarna, men går även att köra på egen dator ifall det behövs (instruktioner finns i botten av sidan). Gör följande för att komma igång:

  1. Logga in på ThinLinc, eller på en av datorerna i SU-salarna.
  2. Öppna en terminal och kör kommandot /courses/TDDE47/progvis.sh. Efter några sekunder ser du ett fönster med rubriken Progvis.
  3. Välj menyalternativet File -> Open example.... Välj sedan den fil du vill undersöka (bank.c är originalversionen av problemet, bank_a.c är lösning A, och bank_b.c är lösning B).
  4. Du ser nu en ruta som representerar tråden som kör funktionen main. Du kan styra programmet likt i en debugger (eller i Deadlock Empire) med hjälp av pilarna i botten av rutan. Den orange pilen längst till vänster hoppar till nästa steg och de gröna pilarna stegar programmet automatiskt i olika hastighet.
  5. Stega den första tråden ett par steg med den orange pilen längst till vänster. Efter ett par steg startas flera trådar som du kan styra individuellt för att simulera att trådarna körs i en viss ordning.
  6. Utforska olika alternativ för att se hur programmen beter sig. Verktyget rapporterar olika typer av trådningsfel om de inträffar.
  7. Använd Run -> Restart program (eller tryck Ctrl+R) för att gå tillbaka till början och testa andra sätt som trådarna kan köras på.

Tips:

  • Du kan flytta runt de flesta rutor genom att klicka på titeln och dra. Du kan även dra i bakgrunden för att flytta all data samtidigt.
  • Om du vill se hela källkoden, välj File -> Open in editor. Då öppnas filen i en texteditor.
  • Testa även att redigera koden (antingen vilka överföringar som görs, eller om du vill testa andra lösningar). Du måste i så fall först skapa en kopia av källkoden. Antingen kan du ladda ner en kopia från länkarna nedan, eller så kan du öppna problemen i en editor och välja Spara som. Oavsett hur du väljer att göra kan du sedan öppna din kopia med hjälp av File -> Open... i Progvis. Gör du ytterligare ändringar så kan du snabbt ladda den nya versionen av filen med hjälp av File -> Reload program (eller trycka Ctrl+Shift+R).
  • Om du vill att programmet inte ska rapportera vissa typer av fel, klicka på Run -> Report data races -> None.

Källkod

Här finns källkoden till de olika programmen ifall du vill ladda ner och modifiera den:

Kör verktyget på egen dator (valfritt)

Om du av någon anledning vill köra verktyget på din egen dator finns instruktioner här. Notera att verktyget finns på ThinLinc, så detta är inte ett krav.

  • Verktyg för Linux (Bör fungera i Debian-baserade system, exempelvis Ubuntu och Linux Mint)

    På Linux öppnas troligtvis en grafisk arkivhanterare som standard. Markera i så fall alla filer (Ctrl+A), och välj Packa upp eller motsvarande, och 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 sedan Progvis.sh genom 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 ./Progvis.sh i terminalen.

  • Verktyg för Windows

    Ladda ner filen ovan, och extrahera den någonstans på ditt system (som standard öppnas filen i utforskaren, och då kan du helt enkelt kopiera alla filer till en mapp någonstans). Kör sedan Progvis.sh genom att dubbelklicka på den. Första gången du kör filen 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.


Page responsible: M. Asplund and K. Arvidsson
Last updated: 2024-03-07