KDP/Januar 2022

Izvor: SI Wiki
< КДП
Datum izmene: 23. mart 2022. u 23:00; autor: KockaAdmiralac (razgovor | doprinosi) (Rešenje prvog zadatka)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu

Postavka ovog roka može se naći sa stranice predmeta.

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();
    }
}

2. zadatak

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

U berbernici rade dva berberina, Aca i Braca, postoji 10 stolica za čekanje i dve stolice za kojima berberini rade. Mušterije koje dolaze se izjašnjavaju da li čekaju kod Ace ili Brace ili im je svejedno ko će da ih usluži. Nakon završenog brijanja, mušterija plaća i odlazi. Ako mušterija vidi da nema mesta u berbernici i ne može biti uslužena, odlazi. Kada je berberin slobodan, mušterija koja je najduže čekala će prva biti uslužena (osim ako čeka na drugog berberina i tada tražimo sledeću mušteriju u nizu). Ukoliko je neki od berberina besposlen, on spava, i prva mušterija koja kod njega dođe na red treba da ga probudi i bude uslužena. Koristeći monitore sa signal and continue disciplinom rešiti ovaj problem.

Rešenje

3. zadatak

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

Rešiti problem filozofa koji ručavaju koristeći C-Lindu. Filozof koji je ranije izrazio želju za hranom treba ranije da budu opslužen.

Rešenje

4. zadatak

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

Deda Mraz koji živi na severnom polu veći deo svog vremena provodi spavajući (The Santa Claus Problem). Mogu ga probuditi ili ukoliko se ispred vrata pojave svih 9 njegovih irvasa ili 3 od ukupno 10 patuljaka. Kada se Deda Mraz probudi on radi jednu od sledećih stvari: Ukoliko ga je probudila grupa irvasa odmah se sprema i kreće na put da podeli deci igračke. Kada se vrati sa puta svim irvasima daje nagradu. Ukoliko ga je probudila grupa patuljaka onda ih on uvodi u svoju kuću, razgovara sa njima i na kraju ih isprati do izlaznih vrata. Grupa irvasa treba da bude opslužena pre grupe patuljaka. Koristeći CSP napisati programe za Deda Mraza, irvase i patuljke.

Rešenje