Tilck Project, uproszczone jądro kompatybilne z Linuksem

kleszcz

Tilck to edukacyjne monolityczne jądro x86 zaprojektowane tak, aby było kompatybilne z Linuksem na poziomie binarnym.

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.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.