Opublikowano wiadomość o nowy projekt o nazwie „Projekt Tilck”, w którym rozwija się pracownik VMware monolityczne jądro, które zasadniczo różni się od Linuksa, ale zostało zaprojektowane tak, aby było kompatybilne binarny z Linuksem i zdolny do uruchamiania aplikacji zbudowanych dla Linuksa.
Rozwój ma na celu wdrożenie minimalnych wymaganych cech, uniknięcie przeciążenia funkcjonalnością, prosta i zrozumiała architektura, maksymalne uproszczenie kodu, mały rozmiar plików binarnych, przewidywalne (deterministyczne) zachowanie, zapewnienie minimalnych opóźnień, osiągnięcie wysokiej niezawodności oraz uproszczenie procesów deweloperskich i testowych.
Tilck zasadniczo różni się od Linuksa tym, że nie jest ukierunkowany na serwery z wieloma użytkownikami ani na komputery stacjonarne, wcale nie dlatego, że nie miałoby to sensu: Linux nie jest duży i złożony z powodu słabej implementacji, ale z powodu niewiarygodnej liczby posiadanych przez niego cech. ofert i wewnętrznej złożoności, której wymagają. Innymi słowy, Linux jest świetny, biorąc pod uwagę problem, który rozwiązuje. Tilck zaoferuje mniej funkcji w zamian za:
prostszy kod (zdecydowanie)
najmniejszy rozmiar binarny
skrajnie deterministyczne zachowanie
bardzo małe opóźnienie
łatwiejszy rozwój i testowanie
dodatkowa wytrzymałość
Projekt nie jest przeznaczony do użytku w środowiskach serwerów z wieloma użytkownikami lub systemy stacjonarne. Spośród systemów plików FAT16 i FAT32 są obsługiwane w trybie odczytu, podobnie jak ramfs, devfs i sysfs. Urządzenia blokowe nie zostały jeszcze wdrożone; wszystko jest w pamięci.
VFS służy do streszczania operacji FS. Wielowątkowość na obecnym etapie rozwoju jest dostępna tylko na poziomie jądra (jeszcze nie jest dostępna w przestrzeni użytkownika).
Jądro obsługuje wielozadaniowość z wywłaszczaniem i implementuje około 100 podstawowych wywołań. do systemu Linux, takie jak fork(), waitpid(), read(), write(), select() i poll(), które są wystarczające do uruchamiania aplikacji konsolowych, takich jak BusyBox, Vim, TinyCC, Micropython i Lua, a także aplikacje graficzne oparte na buforze ramki, takie jak gra fbDOOM. Do tworzenia programów dla Tilcka dostarczany jest zestaw narzędzi oparty na bibliotece Musl.
Wspomina się, że proponowany zestaw sterowników umożliwia uruchomienie Tilcka zarówno w środowisku QEMU jak w konwencjonalnych systemach uruchamiających się z dysku USB. Oprócz tego należy również zauważyć, że istnieje obsługa rozszerzonych zestawów instrukcji SSE, AVX i AVX2. Oferuje własny interaktywny program ładujący, który obsługuje systemy BIOS i UEFI, ale możliwe jest również korzystanie z programów ładujących innych firm, takich jak GRUB2. Po załadowaniu do QEMU jądro może działać w środowisku z 3 MB pamięci RAM.
Obecnie projekt jest pozycjonowany jako projekt edukacyjny, ale w dłuższej perspektywie możliwe jest, że Tilck rozwinie się do poziomu odpowiedniego do wykorzystania jako jądro dla systemów wbudowanych, które wymagają przewidywalnego zachowania i niskich opóźnień.
Podczas gdy Tilck wewnętrznie używa koncepcji wątku, wielowątkowość nie jest obecnie dostępna dla przestrzeni użytkownika (oczywiście istnieją wątki jądra). Zarówno fork(), jak i vfork() są zaimplementowane poprawnie, a kopiowanie przy zapisie jest używane w przypadku procesów rozwidlonych. Wywołanie systemowe waitpid() jest w pełni zaimplementowane (co implikuje grupy procesów itp.).
Na szczególną uwagę zasługuje jedna interesująca funkcja w tym obszarze: pomimo braku wielowątkowości przestrzeni użytkownika, Tilck ma pełne wsparcie dla TLS.
Oczekuje się, że Kleszcz wypełnić lukę między rozwiązaniami opartymi na jądrze Linuksa a dedykowanymi systemami operacyjnymi czasu rzeczywistego, jak FreeRTOS i Zephyr. Plany obejmują migrację Tilcka do ARM i procesorów innych niż MMU (Memory Management Unit), dodanie podsystemu sieciowego, obsługę urządzeń blokowych i dodatkowe systemy plików, takie jak ext2.
Kod jest napisany w C i jest rozpowszechniany na licencji BSD. Na obecnym etapie rozwoju jądro obsługuje tylko architekturę x86, ale kod został zaprojektowany z myślą o uniwersalności i implementacji dla przyszłej obsługi innych architektur.
w końcu jeśli jesteś chcesz dowiedzieć się więcej na ten tematmożesz sprawdzić szczegóły W poniższym linku.