Jądro systemu Linux

background image

Jądro systemu
Linux

background image

Wprowadzenie

System operacyjny jest ważną częścią prawie każdego systemu

komputerowego.

System komputerowy można podzielić na cztery części

składowe: sprzęt, system operacyjny, programy użytkowy i

użytkowników.

Sprzęt (procesor, czyli jednostka centralna, pamięć i urządzenia

wejście - wyjście) stanowi podstawowe zasoby systemu

komputerowego.

Programy użytkowe (kompilatory, systemy baz danych,...)

określają sposoby użycia tych zasobów do rozwiązania zadań

stawianych przez użytkowników.

System operacyjny jest programem, który działa jako pośrednik

miedzy użytkownikiem komputera a sprzętem komputerowym.

System operacyjny nadzoruje i koordynuje posługiwanie się

sprzętem przez różne programy użytkowe ,które pracują na

zlecenie różnych użytkowników.

System operacyjny wykonuje różne operacje podstawowe w

imieniu procesów użytkownika.

background image

Czym jest jądro systemu?

Jądro systemu operacyjnego stanowi jego podstawę.

Znajdują się tam główne sterowniki i programy odpowiadające

za działanie systemu.

Każdy system komputerowy posiada zbiór programów, który

nazywany jest systemem operacyjnym. Najważniejszym z tych

programów jest jądro (kernel).

Jądro jest ładowane do pamięci RAM w czasie uruchamiania

systemu, zawiera ono wiele niezbędnych dla systemu procedur.

Kształt i możliwości komputera opierają się na jego jądrze.

Często słowa "system operacyjny" używa się w odniesieniu do

jądra systemu.

Jądro współdziała ze sprzętem poprzez programy niskiego

poziomu.

Dostarcza też środowisko dla aplikacji działających w systemie.

Kiedy program chce wykorzystać zasoby sprzętowe, musi

wystosować odpowiednie zapytanie.

Jądro rozważa to zapytanie i wybiera czy, jak i kiedy użyczyć

programowi potrzebnych mu zasobów.

background image

Budowa jądra

Wyróżniamy kilka podstawowych

metod konstrukcji jąder:

jądro monolityczne

mikrojądro

nanokernel.

exokernel

cachekernel

jądro hybrydowe

background image

Jądro monolityczne

Często stosowane w systemach typu Unix.

Wszystkie zadania są wykonywane przez jądro, będące jednym, dużym

programem działającym w trybie jądra.

Przykładami takiego jądra mogą być: Linux, OpenBSD, FreeBSD, chociaż

większość posiada umiejętność dołączania i odłączania modułów (najczęściej

zawierających kod sterownika urządzenia lub obsługi potrzebnego w danej

chwili systemu plików).

Zaletą tej techniki jest prostota, stabilność, łatwość komunikacji pomiędzy

różnymi członami jądra (to przecież w tym wypadku jeden program!).

Wadą jest, w późniejszym stadium rozwoju projektu, uciążliwość w rozwijaniu

programu oraz w znajdywaniu błędów.

background image

Mikrojądro

Rodzaj jądra systemu operacyjnego, które zawiera tylko

najbardziej niezbędne elementy, takie jak funkcje zarządzania

wątkami, komunikacją międzyprocesową, oraz obsługą

przerwań i wyjątków.

Wszelkie inne zadania, takie jak np. obsługa systemów plików,

sieci, sprzętu realizowane są w przestrzeni użytkownika przez

osobne serwery.

Dobrymi przykładami systemów operacyjnych opartych na

mikrojądrze są Amoeba, QNX, BeOS , Haiku czy Hurd,

mikrojądrami są także (używane w Hurdzie) Mach i L4.

Firma Microsoft pracuje nad własnym rozwiązaniem tego typu w

projekcie Singularity.

background image

Jądro hybrydowe

Jest jądrem opartym o zmodyfikowane architektury jądra monolitycznego oraz

mikrojądra używanych w systemach operacyjnych.

Ten rodzaj jądra budzi kontrowersję w porównaniu do podobnego jądra monolitycznego,

pojęcie to, przez niektórych specjalistów zostało odebrane jako marketing.

Najczęściej akceptowalnymi rodzajami jąder są: jądro monolityczne oraz mikrojądro

(włącznie z nanojądrem i pikojądrem które są jego mniejszymi wersjami).

Pomysł stojący za tym nowym pseudo-rodzajem jądra jest struktura podobna do

mikrojądra, ale zaimplementowana jak jądro monolityczne.

W przeciwieństwie do mikrojądra, wszystkie (lub prawie wszystkie) usługi wykonywane

są w przestrzeni jądra.

Podobnie jak w jądrze monolitycznym, nie ma strat w wydajności wywołanych

przepływem komunikatów mikrojądra i przełączaniem kontekstu między przestrzenią

użytkownika a jądra.

Jednakże, podobnie jak w jądrach monolitycznych, nie ma korzyści wynikających z

umieszczenia usług w przestrzeni użytkownika.

background image

Inne rodzaje jąder systemu

Nanokernel:

Technika zbliżona do techniki mikrojądra, różnica w wielkości -

nanokernel jest jeszcze mniejszy.

Exokernel:

Architektura będąca odmianą nanojądra.

Cechą wyróżniającą jest możliwość zarządzania zasobami systemu

przez nieuprzywilejowanego użytkownika, a rola jądra sprowadza

się do zabezpieczania zasobów.

Przykładem systemu korzystającego z tego typu jądra jest system

XOK, zbudowany w MIT Laboratory for Computer Science,

pracujący na komputerach PC. Wyposażony on został w bibliotekę

ExOS, która implementuje system UNIX i umożliwia uruchamianie

większości aplikacji tego systemu.

Cachekernel:

W tej technice jądro systemu buforuje obiekty systemowe takie jak

wątki czy przestrzenie adresowe tak jak sprzęt komputerowy

buforuje pamięć.

Jądra aplikacji trybu użytkownika są odpowiedzialne za ładowanie

tych danych i ponowne ich zapisanie stosując specyficzne dla

danej aplikacji mechanizmy.

background image

Jądro Linuxa

To najważniejsza, wolna część uniksopodobnego

systemu operacyjnego Linux napisana przez

Linusa Torvaldsa w 1991 roku, a obecnie

rozwijana przez licznych programistów z całego

świata.

Początkowo działało na platformie Intel 80386,

lecz później zostało przeniesione na wiele innych

platform. Największa część kodu napisana jest w

języku C, z pewnymi rozszerzeniami GCC a

pozostała część to wstawki w asemblerze.

Kod jądra Linuksa jest objęty licencją GNU

General Public License, jest zatem

oprogramowaniem FLOSS.

background image

Rodzaje wersji jądra

Istnieją dwa rodzaje dostępnych wersji jądra:

stabilna (stable)

rozwojowa (development).

Stabilna przeznaczone jest dla ludzi ceniących sobie

niezawodność i stabilność systemu jak również jego

bezproblemową obsługę.

Natomiast wersje rozwojowe (developerskie) przeznaczone są

dla ludzi zajmujących się rozwojem jądra, zawierają one często

wiele nowych sterowników dla najnowszych urządzeń i wiele

funkcji eksperymentalnych, które mogą zniknąć w następnym

jądrze. Jądra te mogą także być niestabilne i powodować liczne

problemy.

Pierwsza liczba oznaczenia jądra przedstawia numer wersji,

następna czy jądro jest stabilne (liczba parzysta) czy rozwojowe

(liczba nieparzysta), ostatnia liczba określa natomiast numer

wydania.

Wynika z tego, że wersje stabilne to np. 2.2.40, 2.4.27, 2.6.9.

Jądrami deweloperskimi będą np. 2.3.24, 2.5.75 i w przyszłości

2.7.1.

background image

Różnice pomiędzy jądrami
Linuxa w wersji 2.4 a 2.6

Funkcja

2.4.X

2.6.X

Maksymalna liczba

obsługiwanych procesorów

16

255, NUMA (Non-Uniform Memory

Access)

Maksymalny rozmiar RAM-u

16 GB

64 GB

Maksymalny rozmiar

systemu plików

2 TB

16 TB

Obsługiwane systemy plików

(odczyt i zapis)

Ext2, Ext3, ReiserFS,

JFS, HPFS, FFS,

HFS+, MS DOS, FAT,

VFAT, ISO9660

Ext2, Ext3, ReiserFS, Reiser4, JFS,

HPFS, FFS, HFS, HFS+, MS DOS,

FAT, VFAT, ISO9660, NTFS, XFS

Sieciowe systemy plików

NFSv3, SMB, NCP,

InterMezzo, Coda

NFSv4, SMB, NCP, Intermezzo,

Coda, AFS, CIFS

Rodzaje wątków

LinuxThreads

NPTL (wątki POSIX)

Obsługiwany format dźwięku OSS

ALSA

Obsługa Hyper-threading

Nie

Tak

Liczba możliwych urządzeń

255

4095

background image

Co to są moduły?

Są to części jądra, które nie są zawarte bezpośrednio w nim.

Kompiluje się je osobno i można je umieścić a następnie usunąć z

uruchomionego jądra prawie zawsze.

Z powodu tej elastyczności jest to teraz preferowana metoda pisania

niektórych fragmentów jądra.

Wiele popularnych sterowników urządzeń to ładowalne moduły.

Są to sterowniki różnych urządzeń, które nie są wkompilowane bezpośrednio

w jądro.

Jednak gdy zajdzie potrzeba użycia takiego sterownika zostaje on wtedy

załadowany dynamicznie przez specjalny program ładujący bez przerywania

pracy naszego systemu.

Wszystkie moduły dostępne w naszym systemie znajdują się w katalogu

/lib/modules/numer_wersji_naszego_jądra.

Korzyść z użycia modułów jest taka, że przez ich zastosowanie otrzymujemy

mniejsze i szybsze jądro, dzięki czemu nie trwonimy bez potrzeby zasobów

naszego komputera, w razie gdy potrzebujemy raz na jakiś czas skorzystać z

sterownika a mamy go jako moduł, możemy załadować go na czas pracy, a

gdy już nie będzie nam potrzebny spokojnie możemy skasować go z pamięci.

Jednak nie wszystkie sterowniki możemy użyć jako moduły, Linux potrzebuje

część z nich jeszcze zanim zostaną one załadowane przez system, tak jest

np. z obsługą dysku twardego czy systemu plików, aby system mógł się

poprawnie uruchomić i obsłużyć posiadany przez nas sprzęt.

background image

Co to są łaty (patche)?

Są sposobem na dodawanie do jądra lub

uaktualnianie sterowników lub funkcji.

Nieraz po załataniu jądra, szczególnie

nieoficjalnymi łatami może nie działać ono

poprawnie, lub nawet może nie powieść się

jego kompilacja.

Łatać jądro powinniśmy jedynie wtedy, gdy

jesteśmy pewni jego działania i do tego

najlepiej na osobnej kopii źródeł jądra.

Istnieją łaty oficjalne i nieoficjalne.

background image

Co to są łaty (patche)?

Łaty oficjalne możemy znaleźć na stronie

www.kernel.org

.

Łaty te zostały zaakceptowane przez twórców jądra i

pozwalają one aktualizować starszą wersję jądra na nowszą.

Np. jądro 2.6.7 za pomocą łaty patch-2.6.8.bz2

zaktualizować jądro 2.6.7 do wersji 2.6.8.

Łaty te, jeśli nie użyjemy wersji testowej z dopiskiem -rc i

nakładamy na niezałatane wcześniej jądro działają

poprawnie.

Oprócz tego możemy także znaleźć codzienne zrzuty z

czasu rozwoju jądra. Posiadają one dopisek -bk.

Ostatnio pojawiły się także łaty poprawiające błędy w

stabilnej już wersji jądra. Posiadają one na końcu jeszcze

jedna cyfrę, np. 2.6.8.1.

Łaty nieoficjalne możemy znaleźć w różnych miejscach,

zazwyczaj poprawiają one działanie jądra, aczkolwiek nie

muszą zawsze działać poprawnie.

background image

Zadanie domowe

Przygotuj opis kompilacji jądra Linuxa.

Możesz korzystać z materiałów
zgromadzonych w Internecie.

Postaraj się opisać ten proces własnymi
słowami (plagiat obniży ocenę).

Limit stron: max. 6 (czcionka min. 12)

Format pliku: .doc lub .pdf

Gotowy opis proszę wysłać na adres:

d.furman@vp.pl

Termin oddania prac: 11.04.2008


Document Outline


Wyszukiwarka

Podobne podstrony:
jadro systemu linux
Jądro i system plików, Informatyka, Linux, Linux - Podręcznik
10 Linux Jądro systemu
Bootowalny pendrive z systemem Linux
Poczta w systemie Linux
Instalacja systemu Linux
Wielozadaniowość systemu Linux
Jądro systemu operacyjnego
administrowanie systemem linux, start systemu
administrowanie systemem linux, nfs oreilly
Podstawy administracji systemu Linux
Podstawowe komendy systemu Linux
Jądro Systemu
administrowanie systemem linux, xinetd schemat
administrowanie systemem linux, procfs
administrowanie systemem linux, rpm1
administrowanie systemem linux, syslog and firewall

więcej podobnych podstron