5Aug
Jądro Linuksa z ponad 13 milionami linii kodu 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 łączenie wszystkich aplikacji działających w "trybie użytkownika" z fizycznym sprzętem i umożliwianie procesom znanym jako serwery uzyskiwania informacji od siebie nawzajem za pomocą komunikacji między procesami( IPC).
Różne typy jądra
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ść ziaren 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.
Zdjęcie: uptown popcorn
Microkernel
Mikrokernel przyjmuje podejście polegające na zarządzaniu tylko 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 miejsca instalacji, i są bardziej bezpieczne, ponieważ tylko określone procesy są uruchamiane w trybie użytkownika, który nie ma wysokich uprawnień jako tryb administratora.
Plusy
- Przenośność
- Mały instalacyjny ślad
- Mały ślad pamięci
- Bezpieczeństwo
Przeciw
- 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ąUzyskaj dostęp 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ę właściwie.
Plusy
- Bardziej bezpośredni dostęp do sprzętu dla programów
- Łatwiejszy proces dla procesów do 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
Przeciw
- DużaZainstaluj ślad
- Duży rozmiar pamięci
- Mniej bezpieczny, ponieważ wszystko działa w trybie administratora
Obraz przez schoschie na Flickr
Hybrydowe jądro
Hybrydowe jądra mogą wybrać i wybrać, co chcą uruchomić w trybie użytkownika i co chcą uruchomić w superwizorzetryb. Często czasy takie 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łącznie związane z mikrojądkami.
Pros
- Developer może wybrać i wybrać, co działa w trybie użytkownika, a co działa w trybie administratora
- Mniejsze miejsce instalacji niż monolityczne jądro
- Bardziej elastyczne niż inne modele
Przeciw
- Może cierpieć z powodu tego samego opóźnienia procesu, co mikrojądro
- Sterowniki urządzeń muszą być zarządzane przez użytkownika( zazwyczaj)
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 w latach 60-tych nazywali swoje jądra po prostu "unixem", więc Linux zaczął nazywać swoje jądro "linux", kiedy został opracowany po raz pierwszy w latach 90-tych.
Gdy stworzono pamięć wirtualną dla łatwiejszych zadań wielozadaniowych, umieszczano "vm" 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 był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 łatki 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 Linux jest monolityczne, ma 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 czasach Linuksa i wciąż nosi w sobie te same wady konstrukcyjne, jakie są nierozerwalnie związane z monolitycznymi jądrami.
Jedną rzeczą, którą programiści jądra Linuksa zrobili, aby obejść te wady, było stworzenie modułów jądra, które mogły być ładowane i rozładowywane w czasie wykonywania, co oznacza, że możesz dodawać lub usuwać funkcje jądra w locie. Może to wykraczać poza samo dodawanie funkcji sprzętowych 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. ..
Kernel Modules
Co, jeśli system Windows miałby już zainstalowany każdy dostępny sterownik i wystarczył włączyć potrzebne sterowniki? Zasadniczo to właśnie robią moduły jądra 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 modułów /lib/.Ze względu na ich modułowy charakter możesz łatwo dostosować swoje jądro, ustawiając moduły do załadowania lub załadowania, podczas uruchamiania za pomocą komendy menuconfig lub edytując plik konfiguracyjny /boot/, lub możesz załadować i zwolnić moduły w locie za pomocą polecenia modprobe.
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. Chociaż moduły te 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
Zdjęcie: ingridtaylar