Inferno: jednolity system sieciowy

Jądro - podstawa systemu

Jądro to najniższa część systemu, zajmująca się obsługą sieci i aplikacji. Realizuje te funkcje przez zapewnienie połączenia między sprzętem a warstwami programowymi aplikacji leżącymi powyżej niego. Zajmuje się obsługą procesów, zarządzaniem pamięcią, operacjami wejścia/wyjścia i zarządzaniem przestrzenią nazw (namespace).

Pamięć jest reprezentowana w postaci niezrównoważonego B-drzewa, którego liście są posortowane według rozmiaru. Jeżeli aplikacja potrzebuje bloku pamięciowego, dostaje najbliższy blok nie większy niż 125% żądanego rozmiaru. Większe bloki są dzielone na dwa liście, z których jeden jest przydzielany aplikacji, a drugi wraca do puli wolnych zasobów.

Jądro tworzy osiem kolejek oczekiwania działających procesów w systemie, oddzielnie dla każdej kategorii procesów. Kolejki te są obsługiwane kolejno w ustalonych odcinkach czasowych.

Nazewnictwo systemu plików jest zbliżone do Unixa (korzeń systemu plików nosi oznaczenie "/"); odstępstwem jest stosowanie znaku "#" z literą dla oznaczenia urządzeń, np. #V może oznaczać kamerę wideo.

Przestrzeń nazw systemu plików tworzy się podobnie jak w Unixie: aby móc używać zasobu sieciowego, należy go najpierw zmontować (mount), potem zaś związać z konkretną gałęzią przestrzeni nazw (bind). Zasoby lokalne są dołączone do przestrzeni nazw w momencie startu systemu.

Dołączenie zasobu zdalnego wymaga jego weryfikacji pod względem bezpieczeństwa i jest wykonywane przez jądro systemu. Na przykład w celu oglądania filmu z serwera wideo użytkownik musi najpierw się zidentyfikować i dostać odpowiednie uprawnienia. Do tego celu stosuje się szyfrowanie z kluczem publicznym i prywatnym. System bezpieczeństwa jest zależny od aplikacji i bardziej wyrafinowany niż metoda "pudła z piachem" (sandbox), stosowana przez maszyny wirtualne Java, ale wymaga jeszcze przetestowania.

Protokół Styx

Służy do komunikacji w systemie oraz dzielenia się jego zasobami. Wszystkie urządzenia są częścią ogólnego systemu plików systemu. Zasoby i usługi serwera sieciowego stają się częścią systemu plików klienta w wyniku procesu montowania i dołączania, a hierarchiczna struktura plików pozwala oddzielić od siebie przestrzenie wielu klientów.

Protokół Styx posługuje się komunikatami służącymi do obsługi różnych czynności w systemie: nawigowanie w systemie plików, dostęp do danych, kontrola atrybutów plików oraz funkcje dodatkowe, takie jak obsługa błędów. Szczegóły związane z tworzeniem komunikatów są ukryte przed aplikacją, posługującą się poleceniami typowymi dla systemu plików.

Java nie ma takiej warstwy komunikacji, która odpowiada protokołowi Styx; posługuje się gniazdkami (sockets), zdalnymi wywołaniami metod (Remote Method Invocation - RMI) oraz protokołem HTTP.

Język Limbo

Obecnie tylko Limbo daje możliwość programowania dla systemu Inferno, choć przewiduje się, że w przyszłości dostępny będzie język Java. Struktura i definicja elementów języka są zbliżone do C. Na wspomnianej stronie WWW dostępna jest pełna specyfikacja tego języka oraz interesujące materiały na jego temat, opracowane przez twórcę języka C - Briana Kernighana.

Twórcy systemu Inferno gwarantują dostępność pewnego minimalnego zestawu funkcji API służących do współpracy z systemem, manipulowania danymi, zapewniania bezpieczeństwa i projektowania wyglądu graficznego aplikacji.


TOP 200