Systemy operacyjne
Transkrypt
Systemy operacyjne
Systemy operacyjne Pracownia 1 Z poniższej listy proszę wybrać co najwyżej trzy zadania, rozwiązać je używając semaforów, spisać rozwiązanie w postaci krótkiego raportu wraz z dowodem poprawności ( rozwiązanie powinno spełniać warunki: wzajemnego wykluczania, postępu i ograniczonego czekania) i zaimplementować w dowolnym, wspierającym wątki i synchronizację, imperatywnym języku programowania ( np. w C + biblioteka Pthread ). Każde zadanie zostanie ocenione w skali 0-10 punktów. Zadania te należy zaliczyć osobiście, np. w czasie konsultacji, w nieprzekraczalnym terminie 22.12.2008. 1. (problem spiskowców) Grupę wątków tworzy dowolna liczba wątków-spiskowców i co najwyżej jeden wątek-milicjant. Zasobu zwanego lokalem konspiracyjnym może używać jednocześnie dowolnie wielu spiskowców. Milicjant może „wejść” do lokalu, jeśli nie ma w nim spiskowców (przeprowadza wtedy przeszukanie) lub gdy jest w nim ich przynajmniej 44 (rozpędza ich). Gdy milicjant jest w środku to żaden spiskowiec już nie wejdzie ( w oknie znajduje się doniczka sygnalizująca wsypę). 2. (problem stołówki studenckiej) Student przebywając w stołówce wywołuje kolejno dwie procedury: 'jedz' i 'wyjdź' (zjada obiad i wychodzi). Po wywołaniu 'jedz' a przed wywołaniem 'wyjdź' student jest w stanie gotowym do wyjścia. By zapewnić studentowi komfort psychiczny nie może on obiadować w samotności. Taki stan ma miejsce, gdy każdy inny student, który wywołał 'jedz', wywołał też 'wyjdź' zanim rozważany student zakończył procedurę 'jedz'. 3. (problem orangutanów) Nad głębokim kanionem, gdzieś w Ameryce Południowej, rozpięta jest lina. Używają jej orangutany by przekroczyć kanion. Lina wytrzymuje ciężar pięciu małp a dwa orangutany nie mogą jednocześnie przechodzić po niej z przeciwnych stron kanionu. Po wejściu na linę nie można zawrócić z drogi. Każda małpa oczekująca na przejście musi kiedyś zostać obsłużona. 4. (problem miejsca w barze) Dany jest pięciomiejscowy bar. Jeśli jest jakieś wolne miejsce to klient może je zająć, lecz jeśli wszystkie są zajęte to znaczy, że ci goście obiadują wspólnie i klient musi zaczekać, aż ostatni z nich opuści bar. 5. (problem przedszkola) W przedszkolu na każdą trójkę dzieci musi przypadać jeden dorosły opiekun. Dzieci i opiekunowie to dwa rodzaje wątków. Dzieci chcą wejść do przedszkola, lecz mogą to uczynić jeśli nie naruszają powyższego warunku. Po pewnym czasie zarówno dzieci jak i dorośli opuszczają przedszkole, znów w taki sposób, by nie naruszyć warunku. 6. (problem łazienki) W pewnym budynku jest toaleta użytkowana wspólnie przez panie i panów. Toaleta ta mieści trzy osoby, z oczywistych względów mogą być to albo same panie albo sami panowie. Proszę zamodelować ten problem w postaci programu wspóbieżnego. 7. (problem obiadujących kanibali) Plemię kanibali spożywa wspólny posiłek z kotła mieszczącego M misjonarzy. Kanibal ustala liczbę m niewiększą niż M misjonarzy, których chce zjeść i jeśli jest ich tylu w kotle to przystępuje do konsumpcji. W przeciwnym wypadku budzi wioskowego kucharza, który napełnia kocioł kolejnymi misjonarzami. Piotr Witkowski