Autor: Robert Love
ISBN: 978-83-246-8285-0
Ilość stron: 448
Data wydania: 03/2014
Oprawa: Miękka
Format: 168x237
Wydawnictwo: HELION
Przewodnik po jądrze sytemu Linux!
Jądro systemu Linux to jeden z największych projektów rozwijanych przez ogromną społeczność. Setki wolontariuszy dniami i nocami rozwijają najważniejszy element tego systemu operacyjnego. I robią to naprawdę skutecznie! Każde kolejne wydanie Linuksa zawiera dziesiątki nowinek oraz ulepszeń - jest coraz szybsze, bezpieczniejsze i po prostu lepsze. Jednak początkujący programiści mogą mieć problemy z wykorzystaniem usług dostarczanych przez kernel. Masz obawy, że nie odnajdziesz się w gąszczu możliwości współczesnego jądra systemu Linux?
Ta książka rozwieje je w mig. Jest to wyjątkowa pozycja na rynku wydawniczym, zgłębiająca właśnie te tajemnice. W trakcie lektury nauczysz się tworzyć niskopoziomowe oprogramowanie, które będzie się komunikowało bezpośrednio z jądrem systemu. Operacje wejścia i wyjścia, strumienie, zdarzenia, procesy to tylko część elementów, które błyskawicznie opanujesz. Ponadto nauczysz się zarządzać katalogami i plikami oraz poznasz koncepcję sygnałów. Książka ta jest niezastąpionym źródłem informacji dla wszystkich programistów pracujących z jądrem Linuksa. Docenisz tę lekturę!
Poznaj:
- metody zarządzania procesami
- zastosowanie sygnałów
- zaawansowane interfejsy wejścia i wyjścia
- jądro systemu od podszewki
Poznaj jądro systemu od podszewki! Robert Love - od wielu lat jest użytkownikiem i współtwórcą systemu Linux. Rozwija środowisko graficzne GNOME oraz jądro systemu. Pracuje jako projektant oprogramowania w firmie Google, był też członkiem zespołu projektującego system operacyjny Android. Jest autorem licznych książek poświęconych programowaniu w systemie Linux.
Spis treści:
1. Wprowadzenie - podstawowe pojęcia (15)
- Programowanie systemowe (15)
- API i ABI (18)
- Standardy (20)
- Pojęcia dotyczące programowania w Linuksie (23)
- Początek programowania systemowego (36)
2. Plikowe operacje wejścia i wyjścia (37)
- Otwieranie plików (38)
- Czytanie z pliku przy użyciu funkcji read() (43)
- Pisanie za pomocą funkcji write() (47)
- Zsynchronizowane operacje wejścia i wyjścia (51)
- Bezpośrednie operacje wejścia i wyjścia (55)
- Zamykanie plików (56)
- Szukanie za pomocą funkcji lseek() (57)
- Odczyty i zapisy pozycyjne (59)
- Obcinanie plików (60)
- Zwielokrotnione operacje wejścia i wyjścia (61)
- Organizacja wewnętrzna jądra (72)
- Zakończenie (76)
3. Buforowane operacje wejścia i wyjścia (77)
- Operacje wejścia i wyjścia, buforowane w przestrzeni użytkownika (77)
- Typowe operacje wejścia i wyjścia (79)
- Otwieranie plików (80)
- Otwieranie strumienia poprzez deskryptor pliku (81)
- Zamykanie strumieni (82)
- Czytanie ze strumienia (83)
- Pisanie do strumienia (86)
- Przykładowy program używający buforowanych operacji wejścia i wyjścia (88)
- Szukanie w strumieniu (89)
- Opróżnianie strumienia (91)
- Błędy i koniec pliku (92)
- Otrzymywanie skojarzonego deskryptora pliku (93)
- Parametry buforowania (93)
- Bezpieczeństwo wątków (95)
- Krytyczna analiza biblioteki typowych operacji wejścia i wyjścia (97)
- Zakończenie (98)
4. Zaawansowane operacje plikowe wejścia i wyjścia (99)
- Rozproszone operacje wejścia i wyjścia (100)
- Interfejs odpytywania zdarzeń (105)
- Odwzorowywanie plików w pamięci (110)
- Porady dla standardowych operacji plikowych wejścia i wyjścia (123)
- Operacje zsynchronizowane, synchroniczne i asynchroniczne (126)
- Zarządcy operacji wejścia i wyjścia oraz wydajność operacji wejścia i wyjścia (129)
- Zakończenie (141)
5. Zarządzanie procesami (143)
- Identyfikator procesu (143)
- Uruchamianie nowego procesu (146)
- Zakończenie procesu (153)
- Oczekiwanie na zakończone procesy potomka (156)
- Użytkownicy i grupy (166)
- Grupy sesji i procesów (171)
- Demony (176)
- Zakończenie (178)
6. Zaawansowane zarządzanie procesami (179)
- Szeregowanie procesów (179)
- Udostępnianie czasu procesora (183)
- Priorytety procesu (186)
- Wiązanie procesów do konkretnego procesora (189)
- Systemy czasu rzeczywistego (192)
- Ograniczenia zasobów systemowych (206)
7. Zarządzanie plikami i katalogami (213)
Katalogi (228)
Dowiązania (240)
Kopiowanie i przenoszenie plików (245)
Węzły urządzeń (248)
Komunikacja poza kolejką (249)
Śledzenie zdarzeń związanych z plikami (251)
8. Zarządzanie pamięcią (261)
- Przestrzeń adresowa procesu (261)
- Przydzielanie pamięci dynamicznej (263)
- Zarządzanie segmentem danych (273)
- Anonimowe odwzorowania w pamięci (274)
- Zaawansowane operacje przydziału pamięci (278)
- Uruchamianie programów, używających systemu przydzielania pamięci (281)
- Przydziały pamięci wykorzystujące stos (282)
- Wybór mechanizmu przydzielania pamięci (286)
- Operacje na pamięci (287)
- Blokowanie pamięci (291)
- Przydział oportunistyczny (295)
9. Sygnały (297)
- Koncepcja sygnałów (298)
- Podstawowe zarządzanie sygnałami (304)
- Wysyłanie sygnału (309)
- Współużywalność (311)
- Zbiory sygnałów (314)
- Blokowanie sygnałów (315)
- Zaawansowane zarządzanie sygnałami (316)
- Wysyłanie sygnału z wykorzystaniem pola użytkowego (324)
- Zakończenie (325)
10. Czas (327)
- Struktury danych reprezentujące czas (329)
- Zegary POSIX (332)
- Pobieranie aktualnego czasu (334)
- Ustawianie aktualnego czasu (337)
- Konwersje czasu (338)
- Dostrajanie zegara systemowego (340)
- Stan uśpienia i oczekiwania (343)
- Liczniki (349)
A: Rozszerzenia kompilatora GCC dla języka C (357)
B: Bibliografia (369)