Fuchsia to pierwszy system XXI wieku: Google ujawnia tajniki dla programistów

W ostatnich tygodniach pojawiało się sporo informacji o Fuchsii,nowym systemie operacyjnym Google’a. Były to jednak raczejogólniki, a zainteresowanie mediów skupiło się na demonstracjidomyślnego interfejsuużytkownika. Interfejs jak interfejs, nic szczególnego. Gdybydo niego sprowadzić Fuchsię, nie byłoby czym się ekscytować.Jednak udostępniona właśnie przez Google dokumentacja technicznasystemu dla programistów pokazuje, że to znacznie więcej niżtylko zamiennik Androida i Chrome OS-a. Google zbudowało systemoperacyjny XXI wieku.

Fuchsia to pierwszy system XXI wieku: Google ujawnia tajniki dla programistów

12.04.2018 16:03

The Book: a programmer-oriented guide to interacting withFuchsia to przystępnie napisana dokumentacjasystemu operacyjnego, którego rozwój zaczął się raptem dwa latatemu, od prostych makiet interfejsu użytkownika, a który dziśdziała już na realnym sprzęcie, Google Pixelbooku. Do tej poryjednak trudno było z fragmentów kodu udostępnianego na GitHubieuzyskać jakiś szerszy ogląd architektury systemu, tworzonego wdziwnej manierze: wszystko otwarcie, ale zarazem bez słowakomentarza. Wyglądało to tak, jakby Google po prostu nie chciałodotąd zbyt wiele mówić o Fuchsii, w obawie, że odstraszy to odAndroida i Chrome OS-a.

Google Fuchsia on Pixelbook review

Fuchsia to nie Linux

Z tą nową dokumentacją możemy już powiedzieć znaczniewięcej. Fuchsia to modularny, bazujący na możliwościach systemoperacyjny – który nie jest Linuksem. Tak w skrócie określaGoogle swoje dzieło, przedstawiając architekturę kernela,interfejsy programowania, usługi pomocnicze, biblioteki, mechanizmyprzechowywania danych i sieci oraz komponenty odpowiedzialne zainterfejs. Z dokumentacji wyraźnie wynika, że Google przygotowujesię do odcięcia od wszystkich historycznych zaszłości: jeśliFuchsia zastąpi Androida i Chrome OS-a, to będzie to zmianarewolucyjna. Spróbujmy w skrócie zreferować to, co znalazło sięw The Book.

Fundamentem systemu jest oczywiście jego kernel, o nazwie Zircon.Napisany jest on w C++ i powstał na bazie lk (Little Kernel),mikrokernela stworzonego przez Travisa Geiselbrechta, który pracujew Google od 2012 roku i od samego początku jest jednym z głównycharchitektów Fuchsii. Dostarcza on wywołania systemowe dozarządzania procesami, wątkami, pamięcią wirtualną, komunikacjąmiędzy procesami, czekaniem na zmiany stanu obiektów i blokowaniem.W założeniu tych wywołań ma być nie więcej niż sto, cooznacza, że zdecydowana większość operacji będzie odbywała sięw przestrzeni użytkownika, poprzez tzw. uchwyty – aktywne sesje wokreślonym podsystemie zawężonym do określonego zasobu. Oznaczato też, że Zircon nie dostarcza typowego dla systemów Posixinterfejsu wywołań systemowych.

Warstwa po warstwie – zrywając z przeszłością

Nad Zirconem spoczywa coś o nazwie Zircon Core (noszące też wkodzie źródłowym nazwę Garnet?). Można powiedzieć, że tutajzaczyna się właściwa Fuchsia, ponieważ mikrojądro Zircon mogłobybyć od niej niezależne i używane w innych projektach. Tutajobsługiwane są sterowniki sprzętowe, wejścia i wyjścia zgodne zestandardem Posix, środowisko uruchomieniowe dla C oraz loader ilauncher plików binarnych w formacie ELF. Do tej warstwy należy teżsystem aktualizacji o nazwe Amber, jak również framework graficznyo nazwie Magma (ściśle związany z API Vulkan), fizyczny renderergrafiki Escher (zapewniający takie atrakcje jak cienie, rozpraszanieświateł, efekty soczewek itp.). Widać, że efektowna grafika 3Dbędzie w samym sercu systemu.

Dalej dokumentacja opisuje Fuchsia Framework – zbiór biblioteksystemowych, model aplikacji i towarzyszący mu nowy językkomunikacji międzyprocesowej FIDL. Tu też opisana jest sekwencjastartową, obsługa przestrzeni nazw (w stylu podobnym do Plan9) orazpiaskownice dla procesów. Tutaj też ujęto kolejną warstwęsystemu o nazwie Peridot, gdzie zarządza się modularnymiaplikacjami i synchronizacją ich danych poprzez specyficzne dlaFuchsii abstrakcje: Story (logiczne kontenery aplikacji i jej danych,kontrolowane przez system w odpowiedzi na działania użytkownika),Module (powiązane ze Story aplikacje implementujące specjalnyinterfejs użytkownika) i Agent (aplikacje, które nie są powiązaneze Story, działające niezależnie).

Nieopisany bliżej w dokumentacji pozostaje Topaz, interfejsużytkownika Fuchsii, dostosowany do widoków desktopowych (Capybara)i mobilnych (Armadillo). To na tym poziomie najwyraźniej działaFlutter,framework obecnie służący do tworzenia aplikacji mobilnych naAndroida i iOS-a. Dostajemy za to bliższy opis stosu sieciowego ipamięci masowej, w tym systemu plików (nie mającego, co ciekawe,nic wspólnego z kernelem) oraz ogromnie interesującegorozproszonego magazynu danych o nazwie Ledger, za sprawą któregoaplikacje będą mogły swobodnie synchronizować dane między swoimiinstancjami na różnych urządzeniach.

Do czego to podobne?

Reasumując, Fuchsia to nie Linux. Fuchsii nie można nawet nazwaćsystemem uniksopodobnym. Jak wspomnieliśmy, Zircon nie dostarczanormalnego interfejsu Posix, zaimplementowane są jedynie niektórejego części. Z tego co widać, programy wcale nie muszą korzystaćz systemowej biblioteki standardowej, jest to możliwe, aleniekonieczne.

Na wyższych poziomach też można znależć wiele osobliwości.Fuchsia w praktyce kończy z koncepcją plików z perspektywyużytkownika. Podstawą wykorzystania i wymiany danych międzyaplikacjami w tym systemie jest coś o nazwie Entities (encje),ustrukturyzowane obiekty w formacie JSON, które można wymieniaćmiędzy Stories i Modules różnego rodzaju.

The Book nie jest jeszcze skończona. Zapewne więcej informacjiujawnione zostanie dopiero na Google I/O. Kierunek jednak jest chybajuż jasny, szczególnie po tym, gdy Google przegrało z Oraclesprawę o wykorzystanie interfejsów Javy w Androidzie. Korzystającz Fluttera twórcy aplikacji mobilnych niech sobie robią swojąrobotę, a za kilka lat odkryją, że ich oprogramowanie bezboleśniemoże zostać przeniesione na nowy system Google’a, całkowicie sięodcinający od Linuksa, Javy i innych reliktów poprzedniegostulecia.

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (459)