From dc12edfa0700454ae51017385cfb8d898f4b744f Mon Sep 17 00:00:00 2001 From: NikolinaSim Date: Wed, 28 Jan 2015 20:00:53 +0100 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=BC=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=BE=D1=82=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../problems/childcare/ChildCareText.md | 51 +++++++++++-------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/src/mk/ukim/finki/os/synchronization/problems/childcare/ChildCareText.md b/src/mk/ukim/finki/os/synchronization/problems/childcare/ChildCareText.md index 69ab2fb..59bda72 100644 --- a/src/mk/ukim/finki/os/synchronization/problems/childcare/ChildCareText.md +++ b/src/mk/ukim/finki/os/synchronization/problems/childcare/ChildCareText.md @@ -1,33 +1,42 @@ -/** Семинарска по Оперативни Системи на Николина Симоноска со индекс 909/2010 **/ +Ве најмуваат од државната градинка „Весела Пролет“, да имплементирате софтвер кој автоматски ќе гo контролира присуството на воспитувачките во однос на децата во градинката и ќе го направи распределување на воспитувачи-деца. Во градинката има правило дека секогаш мора има еден присутен воспитувач за најмногу три деца. -Ве најмуваат од државната градинка „Весела Пролет“, да имплементирате софтвер кој автоматски ќе гo контролира присуството на воспитувачките во однос на децата во градинката и ќе направи распределување на воспитувачи-деца. -Во градинката има правило дека секогаш мора има еден присутен воспитувач за најмногу три деца. -Во почетниот код кој е даден, дефинирани се класите Adult и Child, кои ги симболизираат воспитувачките и децата од градинката. - -Во имплементацијата, можете да ги користите следните методи од веќе дефинираната променлива state: - -state.adultEntered() -- Го симболизира влегувањето на воспитувач во градинката. -state.adultLeft() -- Го симболизира излегувањето на воспитувач од градинката. +Потребно е да се напише решение за синхронизација кое ќе ги задоволи следниве услови: -state.adultLeaving() -- Симболизира состојба на чекање на воспитувачот за да излезе од градинката. + o Воспитувачот може да влезе во градинката било кога, но за да излезе од градинката мора да има доволен број на воспитувачи за да ги чуваат децата(најмногу три за секој воспитувач). + o Доколку двајца возрасни сакаат да заминат во исто време, можат да пробаат да си ги поделат децата и да настане блокада. + o Детето може да влезе во градинката доколку има доволен број на воспитувачи за децата кои се внатре и детето кое сака да влезе. + o Кога ќе си замине некое дете, ако има воспитувачи што чекаат да излезат и притоа има доволен број на воспитувачи во градинката, треба да му се дозволи на воспитувачот да излезе. -state.childrenEntered() -- Го симболизира влегувањето на дете во градинката. -state.childLeft() -- Го симболизира излегувањето на дете од градинката. - -state.childEntering() -- Симболизира состојба на чекање на дете за да влезе од градинката. +Во почетниот код кој е даден, дефинирани се класите Adult и Child, кои ги симболизираат воспитувачките и децата од градинката. +Во имплементацијата, можете да ги користите следните методи од веќе дефинираната променлива state: +• state.adultEntered() + o Го симболизира влегувањето на воспитувач во градинката. +• state.adultLeft() + o Го симболизира излегувањето на воспитувач од градинката. +• state.adultLeaving() + o Симболизира состојба на чекање на воспитувачот за да излезе од градинката. +• state.childrenEntered() + o Го симболизира влегувањето на дете во градинката. +• state.childLeft() + o Го симболизира излегувањето на дете од градинката. +• state.childEntering() + o Симболизира состојба на чекање на дете за да влезе во градинката. + +Исто така можете да ги користите следниве бројачи дефинирани во state: +• state.adults + o Го симболизира тековниот број на воспитувачи во градинката. +• state.adultLeaving + o Го симболизира бројот на воспитувачи кои чекаат за да излезат од градинката. +• state.children + o Го симболизира тековниот број на деца во градинката +• state.childEntering + o Го симболизира бројот на деца кои чекаат за да влезат во градинката. Се користат семафори и бројачи по желба. Тие треба да се дефинираат на почетокот од класата и треба да се static. Се иницијализираат во методот init(). Вашата задача е да ги имплементирате методите Child.execute(), Adult.execute() и init(). При имплементацијата, не смеете да додадете try-catch блок во нив. Потребните семафори, глобални променливи и променливи за состојбата треба да ги дефинирате самите. Доколку имате грешка, ќе ја добиете пораката: Procesot ne e sinhroniziran spored uslovite na zadacata. - По што ќе ви се прикаже логот на повикување на акциите и настанатите грешки. Овој лог треба да ви послужи за увидување на тоа каде имате грешка во извршувањето на вашата задача. Напомена: Поради конкурентниот пристап за логирањето, можно е некои од пораките да не се на позицијата каде што треба да се. Токму затоа, овие пораки користете ги само како информација, но не се ослонувајте на нив.