Główna » jak » Co to jest jądro Linux i co robi?

    Co to jest jądro Linux i co robi?


    Z ponad 13 milionami linii kodu, jądro Linux jest jednym z największych projektów open source na świecie, ale czym jest jądro i do czego służy?

    Więc czym jest jądro?

    Jądro to najniższy poziom łatwo wymienialnego oprogramowania, które łączy się ze sprzętem komputera. Jest odpowiedzialny za połączenie wszystkich aplikacji działających w "trybie użytkownika" do fizycznego sprzętu i umożliwienie procesom znanym jako serwery uzyskanie informacji od siebie nawzajem za pomocą komunikacji między procesami (IPC).

    Różne typy jąder

    Istnieją oczywiście różne sposoby budowania rozważań dotyczących jądra i architektury podczas budowania jednego od zera. Ogólnie rzecz biorąc, większość z nich może należeć do jednego z trzech typów: monolitycznego, mikrojądra i hybrydy. Linux jest monolitycznym jądrem, podczas gdy OS X (XNU) i Windows 7 używają hybrydowych jąder. Zróbmy krótką wycieczkę po trzech kategoriach, abyśmy mogli przejść do bardziej szczegółowych informacji później.


    Obraz wg uptown popcorn

    Mikrokernel
    Mikrokernel przyjmuje podejście tylko do zarządzania tym, co musi: procesorem, pamięcią i IPC. Niemal wszystko inne w komputerze może być postrzegane jako akcesorium i może być obsługiwane w trybie użytkownika. Mikrokernele mają przewagę przenośności, ponieważ nie muszą się martwić, jeśli zmienisz kartę graficzną, a nawet system operacyjny, o ile system operacyjny nadal będzie próbował uzyskać dostęp do sprzętu w ten sam sposób. Mikrokernele mają również bardzo mały ślad, zarówno dla pamięci, jak i przestrzeni instalacyjnej, i wydają się być bardziej bezpieczne, ponieważ tylko określone procesy są uruchamiane w trybie użytkownika, który nie ma wysokich uprawnień jako tryb administratora.

    Plusy

    • Ruchliwość
    • Mały ślad instalacji
    • Mały ślad pamięci
    • Bezpieczeństwo

    Cons

    • Sprzęt jest bardziej abstrakcyjny dzięki sterownikom
    • Sprzęt może reagować wolniej, ponieważ sterowniki są w trybie użytkownika
    • Procesy muszą czekać w kolejce, aby uzyskać informacje
    • Procesy nie mogą uzyskać dostępu do innych procesów bez oczekiwania

    Monolityczne jądro
    Jądra monolityczne są przeciwieństwem mikrojądeł, ponieważ obejmują nie tylko procesor, pamięć i IPC, ale obejmują również sterowniki urządzeń, zarządzanie systemem plików i wywołania serwera systemowego. Jądra monolityczne mają tendencję do lepszego dostępu do sprzętu i wielozadaniowości, ponieważ jeśli program potrzebuje uzyskać informacje z pamięci lub innego uruchomionego procesu, ma bardziej bezpośrednią linię dostępu do niego i nie musi czekać w kolejce, aby załatwiać sprawy. Może to jednak powodować problemy, ponieważ im więcej rzeczy jest uruchamianych w trybie administratora, tym więcej rzeczy może obniżyć twój system, jeśli nie zachowujesz się poprawnie..

    Plusy

    • Bardziej bezpośredni dostęp do sprzętu dla programów
    • Łatwiejszy w procesach komunikacji między sobą
    • Jeśli twoje urządzenie jest obsługiwane, powinno działać bez dodatkowych instalacji
    • Procesy reagują szybciej, ponieważ nie ma kolejki na czas procesora

    Cons

    • Duży ślad instalacji
    • Duży ślad pamięci
    • Mniej bezpieczne, ponieważ wszystko działa w trybie administratora


    Zdjęcie za pośrednictwem schoschie na Flickr

    Hybrid Kernel
    Jądra hybrydowe mają możliwość wybierania tego, co chcą uruchomić w trybie użytkownika i tego, co chcą uruchomić w trybie administratora. Często takie rzeczy, jak sterowniki urządzeń i systemy plików I / O będą uruchamiane w trybie użytkownika, podczas gdy IPC i połączenia z serwerem będą utrzymywane w trybie nadzoru. Daje to najlepsze z obu światów, ale często będzie wymagało więcej pracy producenta sprzętu, ponieważ cała odpowiedzialność kierowcy spoczywa na nich. Może również mieć pewne problemy z latencją, które są nieodłączne od mikrojądrów.

    Plusy

    • Programista może wybrać i wybrać, co działa w trybie użytkownika, a co działa w trybie administratora
    • Mniejsze miejsce instalacji instalacji niż monolityczne jądro
    • Bardziej elastyczny niż inne modele

    Cons

    • Może cierpieć z powodu tego samego opóźnienia procesu co mikrojądro
    • Sterowniki urządzeń muszą być zarządzane przez użytkownika (zwykle)

    Gdzie znajdują się pliki jądra systemu Linux?

    Plik jądra, w systemie Ubuntu, jest przechowywany w folderze / boot i nosi nazwę vmlinuz-wersja. Nazwa vmlinuz pochodzi ze świata unixów, gdzie zwykli nazywać swoje jądra po prostu "unix" w latach 60-tych, więc Linux zaczął nazywać swoje jądro "linux", gdy został opracowany po raz pierwszy w latach 90..

    Gdy pamięć wirtualna została opracowana dla łatwiejszych zadań wielozadaniowych, "vm" umieszczono na początku pliku, aby pokazać, że jądro obsługuje pamięć wirtualną. Przez pewien czas jądro Linuksa nazywało się vmlinux, ale jądro rosło zbyt duże, aby zmieściło się w dostępnej pamięci rozruchowej, więc obraz jądra został skompresowany, a zakończenie x zmieniono na z, aby pokazać, że kompresja została skompresowana przy użyciu kompresji zlib. Ta sama kompresja nie zawsze jest używana, często zastępowana przez LZMA lub BZIP2, a niektóre jądra są nazywane po prostu zImage.

    Numeracja wersji będzie miała format A.B.C.D, gdzie A.B będzie prawdopodobnie 2.6, C będzie twoją wersją, a D wskaże twoje poprawki lub poprawki.

    W folderze / boot znajdą się również inne bardzo ważne pliki o nazwie initrd.img-version, system.map-version i config-version. Plik initrd jest używany jako mały dysk RAM, który wyodrębnia i wykonuje właściwy plik jądra. Plik system.map służy do zarządzania pamięcią przed pełnym załadowaniem jądra, a plik konfiguracyjny informuje jądro, jakie opcje i moduły załadować do obrazu jądra podczas kompilacji.

    Architektura jądra Linuksa

    Ponieważ jądro Linuksa jest monolityczne, ma ono największy zasięg i największą złożoność w porównaniu z innymi typami jądra. Była to cecha projektowa, która była przedmiotem debaty we wczesnych latach istnienia Linuksa i nadal nosi niektóre z tych samych wad konstrukcyjnych, które są nierozerwalnie związane z monolitycznymi jądrami..

    Jedną z rzeczy, które programiści jądra Linuksa zrobili, aby ominąć te wady, było stworzenie modułów jądra, które mogły być ładowane i rozładowywane w środowisku wykonawczym, co oznacza, że ​​można dodawać lub usuwać funkcje jądra w locie. Może to wykraczać poza samo dodawanie funkcji sprzętowej do jądra, włączając moduły uruchamiające procesy serwera, takie jak wirtualizacja niskiego poziomu, ale może również umożliwić zastąpienie całego jądra bez konieczności ponownego uruchamiania komputera w niektórych przypadkach.

    Wyobraź sobie, że możesz uaktualnić do pakietu serwisowego Windows bez konieczności ponownego uruchamiania ...

    Moduły jądra

    Co się stanie, jeśli system Windows ma już zainstalowany każdy dostępny sterownik i wystarczy włączyć odpowiednie sterowniki? Zasadniczo to właśnie moduły jądra robią dla Linuksa. Moduły jądra, znane również jako ładowalny moduł jądra (LKM), są niezbędne, aby jądro działało z całym sprzętem bez zużywania całej dostępnej pamięci.

    Moduł zazwyczaj dodaje funkcjonalność jądra podstawowego do rzeczy takich jak urządzenia, systemy plików i wywołania systemowe. Pliki LKM mają rozszerzenie .ko i zwykle są przechowywane w katalogu / lib / modules. Ze względu na ich modułowy charakter można łatwo dostosować jądro, ustawiając moduły do ​​załadowania lub niezainstalowania, podczas uruchamiania za pomocą komendy menuconfig lub edytując plik / boot / config, lub można załadować i rozładować moduły w locie za pomocą modprobe dowództwo.

    Moduły stron trzecich i modułów zamkniętych są dostępne w niektórych dystrybucjach, takich jak Ubuntu, i mogą nie być instalowane domyślnie, ponieważ kod źródłowy dla modułów nie jest dostępny. Twórca oprogramowania (np. NVidia, ATI, między innymi) nie dostarcza kodu źródłowego, ale raczej buduje własne moduły i kompiluje potrzebne pliki .ko do dystrybucji. Podczas gdy te moduły są darmowe jak w piwie, nie są one wolne jak w mowie i dlatego nie są uwzględniane przez niektóre dystrybucje, ponieważ opiekunowie czują, że "koryguje" jądro, dostarczając niewolne oprogramowanie.

    Jądro nie jest magiczne, ale jest niezbędne dla prawidłowego działania komputera. Jądro Linuksa jest inne niż OS X i Windows, ponieważ zawiera sterowniki na poziomie jądra i sprawia, że ​​wiele rzeczy jest obsługiwanych "od razu po wyjęciu z pudełka". Mamy nadzieję, że dowiesz się nieco więcej o tym, jak działa twoje oprogramowanie i sprzęt oraz jakie pliki potrzebujesz do uruchomienia komputera.

    Kernel.org
    Obraz wg ingridtaylar