Seminarium: Systemy Rozproszone
13 maja 2010, godzina 12:15, sala
Singularity to prototypowy system operacyjny rozwijany przez dział badawczy firmy Microsoft. Celem projektu jest badanie możliwości tworzenia niezawodnych systemów operacyjnych poprzez rozwijanie inowacji w dziedzinie języków programowania, narzędzi oraz statycznej analizy kodu. System Singularity jest oparty o mikro-jądro, które jest w znacznej części napisane w obiektowym języku programowania z automatycznym zarządzaniem pamięcią.
W systemie Singularity również sterowniki urządzeń są implementowane w obiektowych językach wysokiego poziomu i nie mają one bezpośredniego dostępu do sprzętu, lecz komunikują się z nimi poprzez podsystem wejścia-wyjścia systemu Singularity. Zgodnie z koncepcją mikro-jądra, sterowniki te są uruchamiane w osobnych procesach poza jądrem systemu. Takie rozwiązanie ma wiele zalet, takich jak zwiększona stabilność systemu czy większa czytelność i weryfikowalność kodu sterowników, lecz potencjalnie może ono prowadzić do znacznego spadku wydajności systemu.
W swojej prezentacji przedstawię krótko podstawowe założenia systemu Singularity. Następnie opowiem o architekturze podsystemu wejścia-wyjścia systemu Singularity oraz przedstawie model działania sterowników urządzeń w tym systemie. Pod koniec prezentacji, jeśli wystarczy czasu, to przedstawię wyniki badań wydajności sterowników zaimplementowanych w systemie Singularity.
Zapraszam,
Marek Dzikiewicz
Gry sieciowe szybko rozrosły się z oferujących wspólną grę dla 4-8 graczy do takich które umożliwiają zabawę kilkudziesięciu (w przypadku gier FPS) a nawet ponad tysiąca graczy jednocześnie (w grach MMORPG). Współczesne gry sieciowe tak samo jak kiedyś, opierają się na scentralizowanej architekturze klient-serwer, w której serwer odbiera od wszystkich graczy informacje o podejmowanych przez nich akcjach, a potem rozsyła do wszystkich informacje o akcjach lub zmianach jakie one spowodowały w świecie gry. Takie podejście, jak każda architektura scentralizowana stawia duże wymagania wydajnościowe, jest słabo skalowalna i praktycznie nie odporna na awarie po stronie serwera. Najbardziej dotkliwym dla gracza chcącego uruchomić własny serwer jest zapotrzebowanie na wychodzącej przepustowości łącza sieciowego. Większość domowych użytkowników łączy sie z Internetem za pomocą łącza asymetrycznego, z małą prędkością transmisji wychodzącej, co w praktyce uniemożliwia obsługę większej liczby graczy.
W swojej prezentacji przedstawię architekturę Colyseus, rozproszonego serwera dla gier sieciowych. Który korzystając z technik takich jak: rozpraszanie informacji o stanie gry pomiędzy graczy, wyszukiwanie głównej kopii obiektu przy pomocy rozproszonych tablic haszujących czy przewidywanie jakie obiekty będą potrzebna w najbliższej przyszłości pozwala na zwiększenie liczby obsługiwanych graczy w stosunku do rozwiązania z centralnym serwerem przy takiej samej przepustowości połączenia sieciowego. Działanie architektury Colyseus zostało przetestowane na zmodyfikowanej wersji gry Quake II, dzięki czemu będę mógł też przedstawić wyniki testów porównujące ją z klasycznym podejściem.
Zapraszam,
Radosław Pudełkiewicz