Linux Kernel Przewodnik programisty.pdf
(
651 KB
)
Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Linux Kernel.
Przewodnik programisty
Autor: Robert Lowe
T³umaczenie: Przemys³aw Szeremiota
ISBN: 83-7361-439-7
Format: B5, stron: 400
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Do³¹cz do grona twórców popularno ci 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.
Je li 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 zdolno ci.
Choæ jest ono rozleg³ym projektem informatycznym, w ¿adnej sposób nie ró¿ni siê od
innych projektów tego typu. Oczywi cie, 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 wej cia-wyj cia
• Diagnostyka kodu j¹dra
• Przeno no æ kod
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
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
Spis treści
O Autorze ........................................................................................ 13
Przedmowa...................................................................................... 15
Wstęp ............................................................................................. 17
Słowo od Autora .............................................................................. 19
Rozdział 1. Jądro systemu Linux — wprowadzenie .............................................. 23
Wprowadzenie do systemu Linux .....................................................................................25
Przegląd systemów operacyjnych .....................................................................................26
Jądro Linuksa a jądro klasycznego systemu uniksowego .................................................28
Oznaczenia wersji jądra Linuksa.......................................................................................29
Społeczność programistów jądra systemu Linux ..............................................................31
Odmienność jądra..............................................................................................................31
Brak biblioteki libc .....................................................................................................32
GNU C ........................................................................................................................32
Brak mechanizmu ochrony pamięci............................................................................34
Niemo ność (łatwego) korzystania z operacji zmiennoprzecinkowych .....................35
Ograniczony co do rozmiaru i stały stos.....................................................................35
Synchronizacja i współbie ność .................................................................................35
Znaczenie przenośności ..............................................................................................36
Kompilowanie jądra ..........................................................................................................36
Zanim zaczniemy ..............................................................................................................38
Rozdział 2. Zarządzanie procesami..................................................................... 39
Deskryptor procesu i struktura zadania.............................................................................40
Alokacja deskryptora procesu.....................................................................................41
Przechowywanie deskryptora procesu........................................................................42
Stan procesu ................................................................................................................43
Manipulowanie bie ącym 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
Wątki w systemie Linux....................................................................................................49
Wątki jądra..................................................................................................................51
Zakończenie procesu .........................................................................................................52
Usuwanie deskryptora procesu ...................................................................................53
Problem zadań osieroconych ......................................................................................54
Rozdział 3. Szeregowanie zadań......................................................................... 57
Strategia postępowania......................................................................................................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 szeregujący .......................................................................................................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ównowa enie obcią enia..........................................................................................73
Wywłaszczanie i przełączanie kontekstu ..........................................................................75
Wywłaszczanie procesu u ytkownika ........................................................................76
Wywłaszczenie jądra ..................................................................................................76
Czas rzeczywisty ...............................................................................................................77
Wywołania systemowe związane z szeregowaniem .........................................................78
Wywołania wpływające na strategię szeregowania i wartości priorytetów................79
Wywołania systemowe sterujące kojarzeniem procesów z procesorami ...................80
Odstąpienie 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
Wiązanie wywołania systemowego ............................................................................90
Inicjowanie wywołania systemowego z przestrzeni u ytkownika .............................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ółu ytkowanych....................................................102
Prawdziwa procedura obsługi przerwania ................................................................103
Kontekst przerwania .................................................................................................104
Spis treści
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 czynności odroczone .............................................. 115
Połówki dolne..................................................................................................................116
Po co dolne połówki?................................................................................................117
Świat 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
Wątek jądra 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ć implementację dolnej połówki? ...................................................................140
Blokowanie pomiędzy dolnymi połówkami ...................................................................142
Wyłączanie dolnych połówek ...................................................................................142
Rozdział 7. Wprowadzenie do synchronizacji jądra ............................................ 145
Sekcje krytyczne i przeplot operacji ...............................................................................146
Po co ta ochrona? ......................................................................................................146
Blokowanie......................................................................................................................147
Skąd się bierze współbie ność? ................................................................................149
Co wymaga zabezpieczania? ....................................................................................150
Zakleszczenia ..................................................................................................................151
Rywalizacja a skalowalność............................................................................................154
Blokowanie we własnym kodzie.....................................................................................155
Rozdział 8. Metody synchronizacji jądra ........................................................... 157
Operacje niepodzielne .....................................................................................................157
Niepodzielne operacje na liczbach całkowitych .......................................................158
Niepodzielne operacje bitowe...................................................................................160
Rygle pętlowe..................................................................................................................162
Inne metody blokowania ryglami pętlowymi ...........................................................165
Rygle pętlowe a dolne połówki.................................................................................166
Rygle pętlowe 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 zarządzanie czasem ......................................................... 183
Czas z punktu widzenia jądra..........................................................................................184
Częstotliwość taktowania — HZ.....................................................................................185
Optymalna wartość HZ .............................................................................................186
Chwilki ............................................................................................................................188
Wewnętrzna reprezentacja zmiennej jiffies ..............................................................190
Zawijanie zmiennej jiffies.........................................................................................191
HZ a przestrzeń u ytkownika ...................................................................................192
Zegary i liczniki sprzętowe .............................................................................................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óźnianie wykonania....................................................................................................202
Oczekiwanie w pętli aktywnej ..................................................................................202
Krótkie opóźnienia....................................................................................................204
Funkcja schedule_timeout()......................................................................................205
Rozdział 10. Zarządzanie pamięcią .................................................................... 209
Strony ..............................................................................................................................209
Strefy ...............................................................................................................................211
Pozyskiwanie stron pamięci ............................................................................................213
Pozyskiwanie czystych stron pamięci.......................................................................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 pamięci wysokiej ...................................................................................231
Odwzorowanie trwałe ...............................................................................................231
Odwzorowania czasowe............................................................................................232
Jak metodę 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-węzła .................................................................................................................243
Operacje i-węzła .......................................................................................................245
Obiekt wpisu katalogowego ............................................................................................247
Stan wpisu katalogowego .........................................................................................249
Bufor wpisów katalogowych ....................................................................................249
Operacje na wpisach katalogowych..........................................................................251
Plik z chomika:
atomowy-maczo
Inne pliki z tego folderu:
100 rzeczy ktore kazdy projektant powinien wiedziec o potencjalnych klientach.pdf
(1609 KB)
10 projektow w cyfrowej ciemni fotograficznej.pdf
(773 KB)
100 sposobow na Flash.pdf
(2200 KB)
125_pytan_na_temat_e_biznesu_do_Piotra_Majewskiego_100ebi.pdf
(11275 KB)
100 sposobow na bezpieczenstwo Sieci.pdf
(894 KB)
Inne foldery tego chomika:
Bezdroża
Dla bystrzaków
Dokumenty
Ebookpoint
editio
Zgłoś jeśli
naruszono regulamin