KDP/Štafetna palica

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Tehnika štafetne palice je koncept konkuretnog programiranja iz prvog bloka nastave i dolazi na prvom kolokvijumu za SI i kolokvijumu za RTI.

Januar 2021, 1. zadatak

Debug: KDP/Januar 2021 1. zadatak
Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

Potrebno je realizovati tajmer koristeći privatne semafore i tehniku predaje štafetne palice. Tajmer ima dve metode, prva je metoda wakeme koja omogućava da se data nit blokirana n jedinica vremena (ovo je argument), a druga je metoda tick koja označava da je istekla jedna jedinica vremena.

Rešenje

Januar 2022, 1. zadatak

Debug: KDP/Januar 2022 1. zadatak

Postavka

Razmatra se problem sinhronizacije na barijeri (Barrier Synchronization). Sinhronizaciona barijera omogućava nitima da na njoj sačekaju dok tačno N niti ne dostigne određenu tačku u izvršavanju pre nego što bilo koja od tih niti ne nastavi sa svojim izvršavanjem. Koristeći raspodeljene binarne semafore i tehniku predaje štafetne palice rešiti ovaj problem. Omogućiti da se ista barijera može koristiti veći broj puta.

Rešenje

sem arrived = 1;
sem continued = 0;
int blocked = 0;

const int N = 100;
void work1();
void work2();

void worker() {
    while (true) {
        work1();
        arrived.wait();
        blocked++;
        if (blocked != N) {
            arrived.signal();
            continued.wait();
        }
        blocked--;
        if (blocked > 0) {
            continued.signal();
        } else {
            arrived.signal();
        }
        work2();
    }
}

Jul 2020, 1. zadatak

Debug: KDP/Jul 2020 1. zadatak
Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

Koristeći raspodeljene binarne semafore i tehniku predaje štafetne palice rešiti problem čitalaca i pisaca (Readers - Writers Problem).

Rešenje

Februar 2021, 2. zadatak

Debug: KDP/Februar 2021 2. zadatak
Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

Posmatra se semafor za regulaciju saobraćaja na ulici sa jednim pešačkim prelazom. Kada pešak stigne do pešačkog prelaza, ukoliko je svetlo za pešake zeleno, on prelazi ulicu. Ukoliko je u momentu njegovog dolaska svetlo za pešake crveno, on čeka da se uključi zeleno svetlo. Zeleno svetlo za pešake se uključuje ili nakon K sekundi od pojave prvog pešaka koji je zatekao crveno svetlo, ili nakon prolaska C automobila od poslednjeg aktivnog zelenog svetla za pešake. Zeleno svetlo za pešake trajanja G sekundi se pali samo ukoliko je ispunjen neki od navedenih uslova i barem jedan pešak čeka. Koristeći raspodeljene binarne semafore i tehniku predaje štafetne palice napisati programe za pešake, automobile i semafor za regulaciju saobraćaja. Dostupna je funkcija system_time() koja vraća trenutno vreme sistema. Učesnicima treba neko vreme da pređu ulicu.

Rešenje