Koniec z zawieszającym się oprogramowaniem?

Naukowcy z Uniwersytetu Michigan sądzą, że udało im się rozwiązać problem z zawieszającym się oprogramowaniem.

Najczęstszą przyczyną zawieszania się aplikacji jest próba uzyskania dostępu przez różne części programu do tych samych danych (wątki w oczekiwaniu na siebie blokują się wzajemnie). Problem zakleszczania oczekujących na siebie wątków staje się bardziej istotny, jeśli weźmiemy pod uwagę coraz bardziej złożoną architekturę nowoczesnych procesorów i oprogramowania. CPU zawierają coraz większą liczbę rdzeni, a oprogramowanie może wykonywać określoną liczbę zadań w tym samym czasie.

Kontroler o nazwie Gadara opracowany przez amerykańskich naukowców wykorzystuje technikę sprzężenia zwrotnego, na wzór samochodowych systemów kontroli trakcji lub termostatów w systemach grzewczych. Zadaniem Gadary jest zlokalizowanie potencjalnych blokad a następnie zastosowanie logiki sterującej, uniemożliwiającej zakleszczenie wątków.

Stéphane Lafortune, jeden z profesorów uczelni biorących udział w projekcie przekonuje, że opracowanie rozwiązania zdolnego przewidzieć ewentualne zamrożenie funkcjonowania programu to całkowicie nowe podejście do problemu. Dotychczas bowiem programiści próbowali usuwać potencjalne przyczyny zawieszeń w drodze testowania aplikacji lub analizy kodu, skutkujących koniecznością jego przepisania. "Błędy korygowano ręcznie, a nie automatycznie. Gadara automatyzuje ten proces" - twierdzi naukowiec.

Szczegółowe omówienie działania kontrolera znaleźć można na stronie Usenix.org w dokumencie pt. "Gadara: Dynamic Deadlock Avoidance for Multithreaded Programs" (w j. angielskim).