Upload
others
View
33
Download
0
Embed Size (px)
Citation preview
Wprowadzenie
Linux Kernel
page 2
Trochę historii (1)
Rozpoczęło się od “Bell Labolatories” we wczesnych latach 70-tych XX wieku, kiedy rozpoczęto prace nad systemem UNIX:
• UNIX był pierwszym systemem operacyjnym nadającym się do uruchomienia na wielu architekturach komputerowych,
• Przez całe lata 70-te UNIX rozwijał się w środowiskach akademickich i laboratoriach.
Linux Kernel – Wprowadzenie
page 3
Trochę historii (2)
● W latach 80- tych UNIX rozpowszechniał się w dalszym ciągu i zaczął przenikać również do biznesu,
● Powstały takie systemy operacyjne jak:● BSD,● Xenix,● Sun OS,● Minix,
● W roku 1991 Linus Torvalds, fiński programista, ujawnił swoją własną wersję systemu UNIX,
● Nazwał ją “Linux”, czyli UNIX Linusa.
Linux Kernel – Wprowadzenie
page 4
Trochę historii (3)
• Linux był pierwszym, otwartym i darmowym systemem operacyjnym,
• Linux był (i jest) w pełni zgodny z systemem UNIX dzięki standardom POSIX,
• Linux jest nadal w pełni darmowy i dostępny dla każdego,• Posiada wiele niezależnych od siebie dystrybucji, np. Arch linux,
Ubuntu, Mint, Suse i wiele, wiele wiele innych...• Jeśli jednak wszystkie te systemy są “Linuxami”, to muszą
posiadać część wspólną...
Linux Kernel – Wprowadzenie
...co to za część?
page 5
Kernel
● Słowo “kernel” w słowniku Cambridge Dictionary:“Kernel the most important part of something, although it might not always be easy to find:
There is often a kernel of truth in what they say.”
• Kernel jest główną częścią Linuxa,• Kernel jest w dalszym ciągu utrzymywany przez jego twórcę,
Linusa Torvaldsa,● Kernel to spory kawałek kodu źródłowego pozwalający
użytkownikowi na korzystanie z mocy obliczeniowej procesorów, pamięci operacyjnej, łączności z siecią oraz wielu innych zasobów.
• Kernel jest jedyną częścią Linuxa, którą należy “dopasować” do sprzętu komputerowego.
Linux Kernel – Wprowadzenie
page 6
Kernel i jego moduły
● Do Kernela można dodawać tzw. „moduły”, które rozszerzają jego podstawowe funkcje.
● Kernel wymienia informacje z modułami za pomocą zunifikowanego (identycznego dla wszystkich modułów) interfejsu,
● Interfejs ten pozwala modułom na korzystanie z zasobów komputera, np. z mocy obliczeniowej procesora,
● Niektóre moduły można nazwać „sterownikami”, bo pozwalają „sterować” sprzętem komputerowym...
Linux Kernel – Wprowadzenie
page 7
Moduł a aplikacja
Istnieje kilka istotnych różnic między modułem Kernela, a aplikacją:
● zazwyczaj moduły rozpoczynają swoje życie tuż po załadowaniu się Kernela i kończą je tuż przed zakończeniem pracy komputera,
● aplikacje włączamy i wyłączamy w zależności od chwilowej potrzeby,● moduły rejestrują się do Kernela i świadczą usługi dla wszystkich
procesów,● programy użytkownika realizują z reguły jedno, konkretne zadanie,● moduły korzystają jedynie z funkcji Kernelowych,● Aplikacje zazwyczaj korzystają z bibliotek funkcji (np. bibliotek
systemowych), choć nie muszą tego robić.
Linux Kernel – Wprowadzenie
page 8
Kernel, moduły i aplikacje
Linux Kernel – Wprowadzenie
page 9
Kernel space i User space (1)
Moduły działają w przestrzeni Kernela(Kernel space)
Linux Kernel – Wprowadzenie
Aplikacje działają w przestrzeni użytkownika (User space)
page 10
Kernel space i User space (2)
Linux Kernel – Wprowadzenie
Kernel space
User space
page 11
Pogawędka z Kernelem (1)
ioctl interface
(dostępny z poziomu języka C)
Linux Kernel – Wprowadzenie
#include <termios.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
Main() {
int fd, status;
fd = open("/dev/ttyS0", O_RDONLY);
if (ioctl(fd, TIOCMGET, &status) == -1) {
printf("TIOCMGET failed: %s\n",
strerror(errno));
} else {
if (status & TIOCM_DTR) {
puts("TIOCM_DTR is not set");
} else {
puts("TIOCM_DTR is set");
}
}
close(fd);
}
page 12
Pogawędka z Kernelem (2)
Linux Kernel – Wprowadzenie
/proc interface
(dostępny poprzez
konsolę systemową)
page 13
Zadania Kernela (1)
Linux Kernel – Wprowadzenie
Zarządzanie procesami
Zarządzanie pamięcią
Dostarczanie systemu plików
Kontrola urządzeń fizycznych
Dostarczanie usług sieciowych
KERNEL
• Przydzielanie pamięci dla procesów,
• Zwalnianie nieużywanej pamięci,
• Ochrona pamięci.
• Wsparcie dla wielu systemów plików,
• Porządkowanie danych,• Strukturyzacja danych.
• Tworzenie i niszczenie procesów,
• Komunikacja międzyprocesowa,
• Synchronizacja procesów.• Obsługa wielu protokołów sieciowych,
• Zarządzanie pakietami danych.
• Wsparcie dla urządzeń peryferyjnych,
• Ładowanie i usuwanie sterowników.
page 14
Posumowanie
● Kernel jest główną częścią Linuxa,● Kernel dostarcza wszystkich podstawowych zasobów dla innych
procesów w systemie Linux,● Moduły uruchamiamy w Kernel space,● Aplikacje uruchamiamy w User space,● Z Kernelem komunikujemy się za pomocą interfejsów /proc i ioctl
Linux Kernel – Wprowadzenie
Co warto zapamiętać:
Linux Kernel – Wprowadzenie
Koniec
page 16
Źródła ilustracji
• http://www.wired.com/images_blogs/photos/uncategorized/2008/08/27/transistor_inventors_hr.jpg
• https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/2000px-Tux.svg.png
Linux Kernel – Wprowadzenie
Kod źródłowy “ioctl”
• http://www.linuxjournal.com/article/6908
page 17
Slajdy dodatkowe: Kernel space i user space
• Aplikacje mają “początek” i “koniec”,• Moduły zaś rejestrują się w Kernelu i…
działają.
Linux Kernel – Wprowadzenie
psmouse
soundcore
usbhid
KERNEL
page 18
Slajdy dodatkowe: Życie modułu
Linux Kernel – Wprowadzenie
Insert module Init function
Wait for event
CleanupRemove module
page 19
Slajdy dodatkowe: Rodzaje urządzeń w Kernelu
Linux Kernel – Wprowadzenie
• Urządzenie udostępnia system plików,
• Dozwolone działania: operacje wejścia / wyścia.
• Obsługuje wszystkie rodzaje interfejsów sieciowych,
• Nie korzystamy z nich bezpośrednio.
• Do urządzenia piszemy jak do pliku,
• Dozwolone działania: open, close, read, write,
• Np. /dev/tty1.
Character device Block device Network device
Z punktu widzenia użytkownika (a nie programisty Kernela) “Character device” oraz “block device” są do siebie bardzo podobne i ciężko je odróżnić.
page 20
Slajdy dodatkowe: Linux Kernel Mailing List
Linux Kernel – Wprowadzenie
• W skrócie LKML,• Otwarta, darmowa i jawna lista mailingowa społeczności
deweloperów Kernela,• Możliwość darmowej subskrypcji do systemu GIT,• Swobodny przegląd aktualności, nowinek i trudności z jakimi
boryka się obecnie społeczność Kernela.
page 21
Slajdy dodatkowe: Kontakt
Linux Kernel – Wprowadzenie
W razie trudności w zrozumieniu jakiejkolwiek części wykładu bądź slajdów nie bójcie się zadawać pytań. Piszcie na mój adres mailowy. W najgorszym razie nie odpowiem :)