Linux_Programowanie_systemowe_linups.pdf

(498 KB) Pobierz
Linux. Programowanie
systemowe
Autor: Robert Love
T³umaczenie: Jacek Janusz
ISBN: 978-83-246-1497-4
Tytu³ orygina³u:
Linux System
Programming: Talking Directly
to the Kernel and C Library
Format: 168x237, stron: 400
Wykorzystaj moc Linuksa i twórz funkcjonalne oprogramowanie systemowe!
Jak zarz¹dzaæ plikowymi operacjami wejœcia i wyjœcia?
Jak zablokowaæ fragmenty przestrzeni adresowej?
Jak sterowaæ dzia³aniem interfejsu odpytywania zdarzeñ?
Dzisiaj systemu Linux nie musimy ju¿ nikomu przedstawiaæ, dziêki swojej
funkcjonalnoœci i uniwersalnoœci sta³ siê niezwykle popularny i szeroko
wykorzystywany. Dzia³a wszêdzie ? poczynaj¹c od najmniejszych telefonów
komórkowych, a na potê¿nych superkomputerach koñcz¹c. Z Linuksa korzystaj¹
agencje wywiadowcze i wojsko, jego niezawodnoœæ doceni³y równie¿ banki i instytucje
finansowe. Oprogramowanie z przestrzeni u¿ytkownika w systemie Linux mo¿e byæ
uruchamiane na wszystkich platformach, na których poprawnie dzia³a kod j¹dra.
Czytaj¹c ksi¹¿kê „Linux. Programowanie systemowe”, dowiesz siê, jak utworzyæ
oprogramowanie, które jest niskopoziomowym kodem, komunikuj¹cym siê
bezpoœrednio z j¹drem oraz g³ównymi bibliotekami systemowymi. Opisany zosta³ tu
sposób dzia³ania standardowych i zaawansowanych interfejsów zdefiniowanych
w Linuksie. Po lekturze napiszesz inteligentniejszy i szybszy kod, który dzia³a
we wszystkich dystrybucjach Linuksa oraz na wszystkich rodzajach sprzêtu.
Nauczysz siê budowaæ poprawne oprogramowanie i maksymalnie je wykorzystywaæ.
Programowanie systemowe
Biblioteka jêzyka C
Kompilator jêzyka C
Interfejs odpytywania zdarzeñ
Zarz¹dzanie procesami i pamiêci¹
U¿ytkownicy i grupy
Ograniczenia zasobów systemowych
Zarz¹dzanie plikami i katalogami
Identyfikatory sygna³ów
Struktury danych reprezentuj¹ce czas
Konwersje czasu
Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Poznaj i ujarzmij potêgê Linuksa!
Spis treści
Przedmowa ............................................................................................................................... 7
Wstęp ........................................................................................................................................9
1. Wprowadzenie — podstawowe pojęcia .................................................................... 15
Programowanie systemowe
API i ABI
Standardy
Pojęcia dotyczące programowania w Linuksie
Początek programowania systemowego
15
18
20
23
36
2. Plikowe operacje wejścia i wyjścia ............................................................................. 37
Otwieranie plików
Czytanie z pliku przy użyciu funkcji read()
Pisanie za pomocą funkcji write()
Zsynchronizowane operacje wejścia i wyjścia
Bezpośrednie operacje wejścia i wyjścia
Zamykanie plików
Szukanie za pomocą funkcji lseek()
Odczyty i zapisy pozycyjne
Obcinanie plików
Zwielokrotnione operacje wejścia i wyjścia
Organizacja wewnętrzna jądra
Zakończenie
38
43
47
51
55
56
57
59
60
61
72
76
3. Buforowane operacje wejścia i wyjścia ...................................................................... 77
Operacje wejścia i wyjścia, buforowane w przestrzeni użytkownika
Typowe operacje wejścia i wyjścia
Otwieranie plików
77
79
80
3
Otwieranie strumienia poprzez deskryptor pliku
Zamykanie strumieni
Czytanie ze strumienia
Pisanie do strumienia
Przykładowy program używający buforowanych operacji wejścia i wyjścia
Szukanie w strumieniu
Opróżnianie strumienia
Błędy i koniec pliku
Otrzymywanie skojarzonego deskryptora pliku
Parametry buforowania
Bezpieczeństwo wątków
Krytyczna analiza biblioteki typowych operacji wejścia i wyjścia
Zakończenie
81
82
83
86
88
89
91
92
93
93
95
97
98
4. Zaawansowane operacje plikowe wejścia i wyjścia ..................................................99
Rozproszone operacje wejścia i wyjścia
Interfejs odpytywania zdarzeń
Odwzorowywanie plików w pamięci
Porady dla standardowych operacji plikowych wejścia i wyjścia
Operacje zsynchronizowane, synchroniczne i asynchroniczne
Zarządcy operacji wejścia i wyjścia oraz wydajność operacji wejścia i wyjścia
Zakończenie
100
105
110
123
126
129
141
5. Zarządzanie procesami ............................................................................................. 143
Identyfikator procesu
Uruchamianie nowego procesu
Zakończenie procesu
Oczekiwanie na zakończone procesy potomka
Użytkownicy i grupy
Grupy sesji i procesów
Demony
Zakończenie
143
146
153
156
166
171
176
178
6. Zaawansowane zarządzanie procesami .................................................................. 179
Szeregowanie procesów
Udostępnianie czasu procesora
Priorytety procesu
Wiązanie procesów do konkretnego procesora
Systemy czasu rzeczywistego
Ograniczenia zasobów systemowych
179
183
186
189
192
206
4
|
Spis treści
7. Zarządzanie plikami i katalogami ............................................................................ 213
Pliki i ich metadane
Katalogi
Dowiązania
Kopiowanie i przenoszenie plików
Węzły urządzeń
Komunikacja poza kolejką
Śledzenie
zdarzeń związanych z plikami
213
228
240
245
248
249
251
8. Zarządzanie pamięcią ............................................................................................... 261
Przestrzeń adresowa procesu
Przydzielanie pamięci dynamicznej
Zarządzanie segmentem danych
Anonimowe odwzorowania w pamięci
Zaawansowane operacje przydziału pamięci
Uruchamianie programów, używających systemu przydzielania pamięci
Przydziały pamięci wykorzystujące stos
Wybór mechanizmu przydzielania pamięci
Operacje na pamięci
Blokowanie pamięci
Przydział oportunistyczny
261
263
273
274
278
281
282
286
287
291
295
9. Sygnały ....................................................................................................................... 297
Koncepcja sygnałów
Podstawowe zarządzanie sygnałami
Wysyłanie sygnału
Współużywalność
Zbiory sygnałów
Blokowanie sygnałów
Zaawansowane zarządzanie sygnałami
Wysyłanie sygnału z wykorzystaniem pola użytkowego
Zakończenie
298
304
309
311
314
315
316
324
325
10. Czas ............................................................................................................................ 327
Struktury danych reprezentujące czas
Zegary POSIX
Pobieranie aktualnego czasu
Ustawianie aktualnego czasu
Konwersje czasu
329
332
334
337
338
Spis treści
|
5
Dostrajanie zegara systemowego
Stan uśpienia i oczekiwania
Liczniki
340
343
349
A Rozszerzenia kompilatora GCC dla języka C ............................................................ 357
B Bibliografia ................................................................................................................369
Skorowidz .................................................................................................................. 373
6
|
Spis treści
Zgłoś jeśli naruszono regulamin