21
Wprowadzenie Linux Kernel

Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

  • Upload
    others

  • View
    33

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

Wprowadzenie

Linux Kernel

Page 2: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

page 8

Kernel, moduły i aplikacje

Linux Kernel – Wprowadzenie

Page 9: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

page 10

Kernel space i User space (2)

Linux Kernel – Wprowadzenie

Kernel space

User space

Page 11: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

page 12

Pogawędka z Kernelem (2)

Linux Kernel – Wprowadzenie

/proc interface

(dostępny poprzez

konsolę systemową)

Page 13: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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ć:

Page 15: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

Linux Kernel – Wprowadzenie

Koniec

Page 16: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

page 18

Slajdy dodatkowe: Życie modułu

Linux Kernel – Wprowadzenie

Insert module Init function

Wait for event

CleanupRemove module

Page 19: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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: Linux Kernel - ADB · 2016-12-14 · Slajdy dodatkowe: Linux Kernel Mailing List Linux Kernel – Wprowadzenie • W skrócie LKML, • Otwarta, darmowa i jawna lista mailingowa społeczności

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 :)

[email protected]