Przedmiot porownania |
Amoeba |
Mach (obecnie RIG) |
Chorus |
---|---|---|---|
Zaprojektowany dla | Systemu rozproszonego - od poczatku dla zbioru (puli) CPU polaczonych siecia. Pozniej zostaly dodane wieloprocesory oraz WAN | Poczatkowo konstruowany na pojedynczy procesor. Wieloprocesory oraz WAN - pozniej | Poczatkowo badania nad systemami rozproszonymi, odlegle od swiata Unixa. Jednak z kazda wersja zbliza sie do Unixa coraz bardziej |
Model pracy (miejsce wykonywania programow) | Zbior (pula) procesorow - przezroczystosc maszyn wzgledem uzytkownika | Stacja robocza (ang. workstation) jako domyslne miejsce wykonywania polecen | |
Mikrojadro | Tak | ||
Ilosc funkcji systemowych jadra | 30 "perfekcja jest osiagnieta nie wtedy, gdy nie ma juz nic do dodania, ale wtedy gdy nie ma nic do odjecia" |
153 wieksza funkcjonalnosc dla wiekszej liczby aplikacji |
112 wieksza funkcjonalnosc dla wiekszej liczby aplikacji |
Automatyczne rownowazenie obciazenia ? | Tak - wysylane zapytanie do "RUN SERVERa", rozlozenie zadania na tyle tylko na ile sie da | Nie - uruchamiane na lokalnej maszynie z mozliwoscia uruchomienia na zdalnej maszynie | Nie - mozna uruchomic proces na jakiejkolwiek maszynie, a emulacja Unix-a umozliwia ustawienie "domowej maszyny" |
Obiekty | Sa glownym zalozeniem. Posiada kilka wbudowanych (np: watki, procesy), reszta definiowana przez uzytkownika. Mozna wykonywac na nich dowolne operacje | Tylko kilka obiektow, staly zbior operacji, kiepski mechanizm definiowania obiektow (zla wydajnosc) | Udostepnia wbudowane obiekty (jak Mach), ale takze stosuje identyfikatory (jak Amoeba) do definiowania nowych zabezpieczonych obiektow. Moga tez przekazywac je w komunikatach lub zapisujac do dzielonego pliku |
Dojscia (ang. capabilities) | Ogolne | Tylko porty | Ogolne |
Umieszczenie dojsc | Przestrzen uzytkownika | Jadro | Przestrzen uzytkownika |
Watki zarzadzane przez | Jadro | ||
System przezroczysty ? | Tak | Nie | |
Mozliwosc ustawienia procesom priorytetow przez uzytkownika ? | Nie - nie umozliwia kontroli nad szeregowaniem procesow | Tak, umozliwiaja procesom nadawanie priorytetow i ustalanie polityki szeregowania watkow (dzieki temu bardzo dobrze moga dzialac systemy czasu rzeczywistego) | |
Wspomaganie wieloprocesorow | Minimalne - wszystkie watki dzialaja na tym samym procesorze (pseudorownolegle, czas dzielony) | Bardzo duze - mozna kierowac watki na rozne procesory | Srednie - system rozmieszcza watki na roznych procesorach. Jak na razie (jest w planach) nie mozna "recznie" umiescic konkretnego watku na konkretnym procesorze |
Synchronizacja | Semafory ogolne, mutex | Mutex, zmienne warunkowe | uzywa rejestrow programowych do definiowania prywatnego kontekstu dla kazdego watku |
Obiekt odwzorowywan | Segment | Obiekt pamieci | Segment |
Model rozproszonej pamieci dzielonej | Oparty na obiektach, segmenty zmiennej dlugosci. Odwzorowywanie na zadanie. Segmenty identyfikowane przez specjalny identyfikator. Nie wspiera wymiany stron pomiedzy pamiecia a dyskiem | Oparty na stronach stalej dlugosci. Odwzorowywanie na zadanie (jak w Amoebie). Wspiera stronicowana pamiec wirtualna. Strony mozna dzielic na wiele sposobow (np: "copy-on-write" - efektywne na pojedynczym komputerze, w rozproszeniu - zly) | Oparty na stronach - bardzo podobnie do Mach-a. Strony sa pod kontrola zewnetrznego procesu odwzorowujacego |
RPC ? | Tak - prosty (zabezpieczone kryptograficznie) | Tak | |
Komunikacja grupowa | Uporzadkowana i pewne rozglaszanie, FLIP | Brak komunikacji grupowej i pewnego rozglaszania. Sieciowy Serwer Komunikatow | Kierowanie komunikatow przez port (asynchronicznie oraz RPC), obslugiwane przez jadro. Rozglaszanie na poziomie jadra. Mozliwosc grupowania portow. Nie ma gwarancji, ze komunikaty przyjda w tej kolejnosci co wyszly |
Komunikacja asynchroniczna ? | Nie | Tak | |
Komunikaty pomiedzy maszynami zarzadzane przez | Jadro | Jadro / przestrzen uzytkownika | Jadro |
Komunikaty adresowane do | Procesu | Portu | Portu |
Emulacja Unixa | Emulacja Unixa na poziomie kodu zrodlowego, ale nie w 100% zgodna | Pojedynczy serwer, na ktorym jest uruchomiony BSD Unix - dzieki temu 100% emulacja na poziomie kodu binarnego | 100% emulacja System V Unix na poziomie kodu binarnego. Zaimplementowana przy uzyciu kolekcji procesow |
Rozmieszczenie Unixa | Na wielu maszynach | Pojedynczy serwer | Na wielu maszynach |
Kompatybilnosc z Unixem | POSIX (czesciowa) | BSD | System V |
Zoptymalizowany na potrzeby | Komunikacji przez siec (bardzo szybkie RPC) | Zastosowan lokalnych (np: komunikacja poprzez pamiec - copy-on-write) | Zastosowan lokalnych - na pierwszym planie jest pojedynczy procesor (i systemy wieloprocesorowe), ale po umieszczeniu komunikacji w jadrze (jak w Amoebie) wydajnosc RPC tez jest niezla |
Automatyczna replikacja plikow ? | Tak | Nie |