Linux Kernel Przewodnik programisty.pdf
(
650 KB
)
Pobierz
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
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
Plik z chomika:
michael1307
Inne pliki z tego folderu:
100 rzeczy ktore kazdy projektant powinien wiedziec o potencjalnych klientach.pdf
(1608 KB)
10 projektow w cyfrowej ciemni fotograficznej.pdf
(773 KB)
100 sposobow na cyfrowe wideo.pdf
(1337 KB)
100 sposobow na Excel 2007 PL Tworzenie funkcjonalnych arkuszy.pdf
(1134 KB)
100 sposobow na Flash.pdf
(2199 KB)
Inne foldery tego chomika:
Dla bystrzaków
Dokumenty
Ebook-point
editio
Escape Magazine
Zgłoś jeśli
naruszono regulamin