oryginal-linux-kernel-przewodnik-programisty_lkerpp.pdf

(13321 KB) Pobierz
656556611 UNPDF
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Linux Kernel.
Przewodnik programisty
SPIS TRECI
KATALOG KSI¥¯EK
Autor: Robert Lowe
T³umaczenie: Przemys³aw Szeremiota
ISBN: 83-7361-439-7
Format: B5, stron: 400
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
Do³¹cz do grona twórców popularnoci Linuksa
Fenomen Linuksa polega na tym, ¿e jest on dzie³em programistów z ca³ego wiata.
Ka¿dy mo¿e dopisaæ do niego now¹ funkcjê lub udoskonaliæ istniej¹ce.
Jeli Linux nie obs³uguje urz¹dzenia zainstalowanego w Twoim komputerze —
mo¿esz zaimplementowaæ jego obs³ugê, pisz¹c w³asny modu³ j¹dra.
Programowanie j¹dra systemu Linux nie wymaga ¿adnych niezwyk³ych zdolnoci.
Choæ jest ono rozleg³ym projektem informatycznym, w ¿adnej sposób nie ró¿ni siê od
innych projektów tego typu. Oczywicie, samodzielne napisanie choæby kawa³ka kodu
j¹dra wymaga nauki, ale napisany dotychczas kod nie jest w ¿aden sposób wyj¹tkowy
ani niezrozumia³y. Podstawowym materia³em pomocniczym, niezwykle przydatnym
przy opanowywaniu tajników programowania j¹dra, jest istniej¹cy ju¿ kod ród³owy,
dostêpny dla wszystkich. Jednak¿e samo poznawanie kodu nie wystarczy — nale¿y
równie¿ zdobyæ wiedzê dotycz¹c¹ zasad funkcjonowania systemu operacyjnego
i pe³nionych przez niego funkcji.
Ksi¹¿ka „Linux Kernel. Przewodnik programisty” zosta³a napisana po to, aby pomóc
programistom w poznaniu zasad tworzenia kodu modu³ów j¹dra. Szczegó³owo omawia
podsystemy i funkcje j¹dra Linuksa, ich projekt i implementacjê. Autor ksi¹¿ki porusza
równie¿ zagadnienia zwi¹zane z projektowaniem systemów operacyjnych.
Ksi¹¿ka opiera siê na wersji 2.6 j¹dra systemu Linux i zawiera informacje dotycz¹ce
nastêpuj¹cych tematów:
• Podstawowe zasady programowania j¹dra
• Zarz¹dzanie procesami
• Algorytmy szeregowania zadañ
• Wywo³ania systemowe
• Przerwania
• Metody synchronizacji j¹dra
• Zarz¹dzanie czasem i pamiêci¹
• Operacje wejcia-wyjcia
• Diagnostyka kodu j¹dra
• Przenonoæ kod
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
656556611.001.png 656556611.002.png 656556611.003.png
Spis treci
O Autorze ........................................................................................13
Przedmowa......................................................................................15
Wstp .............................................................................................17
Słowo od Autora ..............................................................................19
Rozdział 1. Jdro systemu Linux — wprowadzenie..............................................23
Wprowadzenie do systemu Linux.....................................................................................25
Przegld systemów operacyjnych .....................................................................................26
Jdro Linuksa a jdro klasycznego systemu uniksowego .................................................28
Oznaczenia wersji jdra Linuksa.......................................................................................29
Społeczno'( programistów jdra systemu Linux..............................................................31
Odmienno'( jdra..............................................................................................................31
Brak biblioteki libc .....................................................................................................32
GNU C ........................................................................................................................32
Brak mechanizmu ochrony pami1ci............................................................................34
Niemo3no'( (łatwego) korzystania z operacji zmiennoprzecinkowych.....................35
Ograniczony co do rozmiaru i stały stos.....................................................................35
Synchronizacja i współbie3no'( .................................................................................35
Znaczenie przeno'no'ci ..............................................................................................36
Kompilowanie jdra ..........................................................................................................36
Zanim zaczniemy ..............................................................................................................38
Rozdział 2. Zarzdzanie procesami.....................................................................39
Deskryptor procesu i struktura zadania.............................................................................40
Alokacja deskryptora procesu.....................................................................................41
Przechowywanie deskryptora procesu........................................................................42
Stan procesu................................................................................................................43
Manipulowanie bie3cym stanem procesu .................................................................44
Kontekst procesu.........................................................................................................45
Tworzenie procesu ............................................................................................................46
Kopiowanie przy zapisie.............................................................................................47
Wywołanie fork()........................................................................................................47
Wywołanie vfork()......................................................................................................49
6
Linux Kernel. Przewodnik programisty
Wtki w systemie Linux....................................................................................................49
Wtki jdra..................................................................................................................51
Zako@czenie procesu.........................................................................................................52
Usuwanie deskryptora procesu ...................................................................................53
Problem zada@ osieroconych ......................................................................................54
Rozdział 3. Szeregowanie zada(.........................................................................57
Strategia post1powania......................................................................................................58
Procesy ograniczone wej'ciem-wyj'ciem a procesy ograniczone procesorem ..........58
Priorytet procesu .........................................................................................................59
Kwant czasu................................................................................................................60
Wywłaszczanie procesu..............................................................................................61
Strategia szeregowania w działaniu............................................................................61
Algorytm szeregujcy .......................................................................................................62
Kolejka procesów gotowych do uruchomienia...........................................................62
Tablice priorytetów.....................................................................................................65
Przeliczanie kwantów czasu .......................................................................................66
Wywołanie schedule() ................................................................................................67
Wyznaczanie nowego priorytetu i kwantu czasu........................................................68
Zawieszanie i pobudzanie procesów...........................................................................71
Równowa3enie obci3enia..........................................................................................73
Wywłaszczanie i przełczanie kontekstu ..........................................................................75
Wywłaszczanie procesu u3ytkownika ........................................................................76
Wywłaszczenie jdra ..................................................................................................76
Czas rzeczywisty...............................................................................................................77
Wywołania systemowe zwizane z szeregowaniem .........................................................78
Wywołania wpływajce na strategi1 szeregowania i warto'ci priorytetów................79
Wywołania systemowe sterujce kojarzeniem procesów z procesorami ...................80
Odstpienie procesora.................................................................................................80
Rozdział 4. Wywołania systemowe.....................................................................81
API, POSIX i biblioteka C ................................................................................................82
Wywołania systemowe......................................................................................................83
Numery wywoła@ systemowych.................................................................................84
Wydajno'( wywołania systemowego .........................................................................85
Procedura obsługi wywoła@ systemowych .......................................................................85
Oznaczanie wła'ciwego wywołania systemowego.....................................................86
Przekazywanie argumentów .......................................................................................86
Implementacja wywołania systemowego..........................................................................87
Weryfikacja argumentów............................................................................................87
Kontekst wywołania systemowego ...................................................................................89
Wizanie wywołania systemowego ............................................................................90
Inicjowanie wywołania systemowego z przestrzeni u3ytkownika .............................92
Cztery powody, aby nie implementowa( wywoła@ systemowych .............................93
Rozdział 5. Przerwania i procedury obsługi przerwa(...........................................95
Przerwania.........................................................................................................................95
Procedury obsługi przerwa@..............................................................................................96
Połówki górne i dolne .................................................................................................97
Rejestrowanie procedury obsługi przerwania ...................................................................98
Zwalnianie procedury obsługi przerwania................................................................100
Tworzenie procedury obsługi przerwa@..........................................................................100
Procedury obsługi przerwa@ współu3ytkowanych....................................................102
Prawdziwa procedura obsługi przerwania ................................................................103
Kontekst przerwania .................................................................................................104
Spis treci
7
Implementacja obsługi przerwa@ ....................................................................................105
/proc/interrupts ................................................................................................................108
Kontrola przerwa@...........................................................................................................109
Wyłczanie i włczanie przerwa@.............................................................................110
Blokowanie konkretnej linii przerwania...................................................................111
Stan systemu przerwa@ .............................................................................................112
Rozdział 6. Dolne połówki i czynno1ci odroczone ..............................................115
Połówki dolne..................................................................................................................116
Po co dolne połówki?................................................................................................117
Hwiat dolnych połówek.............................................................................................117
Przerwania programowe..................................................................................................120
Implementacja przerwa@ programowych..................................................................120
Korzystanie z przerwa@ programowych ...................................................................123
Tasklety ...........................................................................................................................125
Implementacja taskletów ..........................................................................................125
Korzystanie z taskletów ............................................................................................128
Wtek jdra ksoftirqd................................................................................................130
Dawny mechanizm BH.............................................................................................132
Kolejki robót ...................................................................................................................133
Implementacja kolejek robót.....................................................................................133
Korzystanie z kolejek robót ......................................................................................137
Dawny mechanizm kolejkowania zada@...................................................................140
Jak wybra( implementacj1 dolnej połówki? ...................................................................140
Blokowanie pomi1dzy dolnymi połówkami ...................................................................142
Wyłczanie dolnych połówek...................................................................................142
Rozdział 7. Wprowadzenie do synchronizacji jdra ............................................145
Sekcje krytyczne i przeplot operacji ...............................................................................146
Po co ta ochrona?......................................................................................................146
Blokowanie......................................................................................................................147
Skd si1 bierze współbie3no'(?................................................................................149
Co wymaga zabezpieczania? ....................................................................................150
Zakleszczenia ..................................................................................................................151
Rywalizacja a skalowalno'(............................................................................................154
Blokowanie we własnym kodzie.....................................................................................155
Rozdział 8. Metody synchronizacji jdra ...........................................................157
Operacje niepodzielne.....................................................................................................157
Niepodzielne operacje na liczbach całkowitych.......................................................158
Niepodzielne operacje bitowe...................................................................................160
Rygle p1tlowe..................................................................................................................162
Inne metody blokowania ryglami p1tlowymi ...........................................................165
Rygle p1tlowe a dolne połówki.................................................................................166
Rygle p1tlowe R-W.........................................................................................................166
Semafory .........................................................................................................................168
Tworzenie i inicjalizowanie semaforów ...................................................................170
Korzystanie z semaforów..........................................................................................171
Semafory R-W.................................................................................................................172
Zmienne sygnałowe.........................................................................................................174
Blokada BKL (Big Kernel Lock)....................................................................................174
Blokady sekwencyjne......................................................................................................176
Blokowanie wywłaszczania ............................................................................................177
Bariery.............................................................................................................................178
8
Linux Kernel. Przewodnik programisty
Rozdział 9. Liczniki i zarzdzanie czasem .........................................................183
Czas z punktu widzenia jdra..........................................................................................184
Cz1stotliwo'( taktowania — HZ.....................................................................................185
Optymalna warto'( HZ.............................................................................................186
Chwilki............................................................................................................................188
Wewn1trzna reprezentacja zmiennej jiffies..............................................................190
Zawijanie zmiennej jiffies.........................................................................................191
HZ a przestrze@ u3ytkownika ...................................................................................192
Zegary i liczniki sprz1towe .............................................................................................193
Zegar czasu rzeczywistego .......................................................................................193
Zegar systemowy ......................................................................................................193
Procedura obsługi przerwania zegarowego.....................................................................194
Data i godzina..................................................................................................................196
Liczniki............................................................................................................................198
Korzystanie z liczników............................................................................................199
Liczniki i sytuacje hazardowe...................................................................................201
Implementacja licznika .............................................................................................201
OpóLnianie wykonania....................................................................................................202
Oczekiwanie w p1tli aktywnej..................................................................................202
Krótkie opóLnienia....................................................................................................204
Funkcja schedule_timeout()......................................................................................205
Rozdział 10. Zarzdzanie pamici ....................................................................209
Strony ..............................................................................................................................209
Strefy ...............................................................................................................................211
Pozyskiwanie stron pami1ci............................................................................................213
Pozyskiwanie czystych stron pami1ci.......................................................................214
Zwalnianie stron........................................................................................................215
Funkcja kmalloc () ..........................................................................................................216
Znaczniki gfp_mask..................................................................................................217
Funkcja kfree() ................................................................................................................221
Funkcja vmalloc () ..........................................................................................................222
Alokator plastrowy..........................................................................................................223
Zadania alokatora plastrowego .................................................................................224
Interfejs alokatora plastrowego .......................................................................................227
Statyczne przydziały na stosie.........................................................................................230
Odwzorowanie pami1ci wysokiej ...................................................................................231
Odwzorowanie trwałe ...............................................................................................231
Odwzorowania czasowe............................................................................................232
Jak metod1 przydziału wybra(? ......................................................................................233
Rozdział 11. Wirtualny system plików ................................................................235
Wspólny interfejs systemu plików ..................................................................................235
Warstwa abstrakcji systemu plików................................................................................236
Uniksowy system plików ................................................................................................237
Obiekty VFS i ich struktury danych................................................................................238
Inne obiekty warstwy VFS........................................................................................239
Obiekt bloku głównego ...................................................................................................240
Operacje bloku głównego .........................................................................................241
Obiekt i-w1zła .................................................................................................................243
Operacje i-w1zła .......................................................................................................245
Obiekt wpisu katalogowego............................................................................................247
Stan wpisu katalogowego .........................................................................................249
Bufor wpisów katalogowych ....................................................................................249
Operacje na wpisach katalogowych..........................................................................251
Zgłoś jeśli naruszono regulamin