Elementy wewnętrzne Linuksa. Sterowniki urządzeń i zarządzanie

Książka Briana Warda, która stała się już bestsellerem na Zachodzie. Opisuje wszystkie zawiłości pracy z systemem operacyjnym Linux, administrację systemem i głębokie mechanizmy zapewniające funkcjonalność Linuksa na niskim poziomie. Na stronach podręcznika zdobędziesz podstawową wiedzę na temat pracy z jądrem Linuksa oraz zasad prawidłowego działania sieci komputerowych, nie tylko opartych na rozwiązaniach Open-source. Książka porusza także zagadnienia programowania skryptowego i obsługi języka C, porusza tematykę bezpieczeństwa informacji, wirtualizacji i innych rzeczy niezastąpionych.
Kto powinien przeczytać książkę:
Zainteresowanie projektowaniem systemu operacyjnego Linux może być spowodowane różnymi przyczynami. Specjaliści w dziedzinie technologii informatycznych i twórcy oprogramowania dla systemu Linux znajdą w tej książce praktycznie wszystko, co muszą wiedzieć, aby w pełni wykorzystać możliwości systemu operacyjnego. Naukowcy i studenci, którzy często muszą dostosowywać system do własnych potrzeb, znajdą tutaj praktyczne wyjaśnienia, dlaczego wszystko działa tak, a nie inaczej. Są też „artyści” – użytkownicy, którzy lubią spędzać czas przy komputerze dla zabawy, zysku lub obu. Chcesz wiedzieć, dlaczego niektóre rzeczy działają, a inne nie? Zastanawiasz się, co się stanie, jeśli coś zmienisz? W takim razie jesteś jednym z „artystów”.
Niezbędne warunki:
Nie musisz być programistą, aby przeczytać tę książkę. Wymagane są jedynie podstawowe umiejętności użytkownika komputera PC: należy poruszać się po interfejsie graficznym (podczas instalacji i konfiguracji interfejsu systemu), a także rozumieć pliki i katalogi (foldery). Powinieneś być także przygotowany na przeszukanie Internetu w celu uzyskania dodatkowej dokumentacji. Najważniejsze jest chęć i chęć poznania swojego komputera.

Tytuł: Elementy wewnętrzne Linuksa
Autor: Brian Ward
Wydawca: Piotr
Rok: 2016
Format: PDF, FB2, EPUB
Język rosyjski
Strony: 384
Rozmiar: 12,9 MB

Linux Internals / Brian Ward / 2016. Pobierz za darmo bez rejestracji

2016-07-24T17:16:55+00:00 AdminAdministracja Przewodniki literackie Linux, Administracja, Bezpieczeństwo, Brian Ward, Książki, Literatura, Podręczniki, Administracja systemem, skrypty, Referencje dotyczące poleceń

Książka Briana Warda, która stała się już bestsellerem na Zachodzie. Opisuje wszystkie zawiłości pracy z systemem operacyjnym Linux, administrację systemem i głębokie mechanizmy zapewniające funkcjonalność Linuksa na niskim poziomie. Na stronach podręcznika zdobędziesz podstawową wiedzę na temat pracy z jądrem Linuksa oraz zasad prawidłowego działania sieci komputerowych, nie tylko opartych na rozwiązaniach Open-source. W...

[e-mail chroniony] Samouczek administratora systemu LINUX

Wydaliśmy książkę Briana Warda, która stała się już bestsellerem na Zachodzie. Opisuje wszystkie zawiłości pracy z systemem operacyjnym Linux, administrację systemem i głębokie mechanizmy zapewniające funkcjonalność Linuksa na niskim poziomie. Na stronach tej publikacji zdobędziesz podstawową wiedzę dotyczącą pracy z jądrem Linuksa oraz zasad prawidłowego działania sieci komputerowych. Książka porusza także zagadnienia programowania skryptów powłoki i obsługi języka C, porusza tematykę bezpieczeństwa informacji, wirtualizacji i innych rzeczy niezastąpionych.

Kto powinien przeczytać książkę

Zainteresowanie projektowaniem systemu operacyjnego Linux może być spowodowane różnymi przyczynami. Specjaliści w dziedzinie technologii informatycznych i twórcy oprogramowania dla systemu Linux znajdą w tej książce praktycznie wszystko, co muszą wiedzieć, aby w pełni wykorzystać możliwości systemu operacyjnego. Naukowcy i studenci, którzy często muszą dostosowywać system do własnych potrzeb, znajdą tutaj praktyczne wyjaśnienia, dlaczego wszystko działa tak, a nie inaczej. Są też „artyści” – użytkownicy, którzy lubią spędzać czas przy komputerze dla zabawy, zysku lub obu. Chcesz wiedzieć, dlaczego niektóre rzeczy działają, a inne nie? Zastanawiasz się, co się stanie, jeśli coś zmienisz? W takim razie jesteś jednym z „artystów”.

Niezbędne warunki

Nie musisz być programistą, aby przeczytać tę książkę. Będziesz potrzebować jedynie podstawowych umiejętności obsługi komputera: musisz poruszać się po interfejsie graficznym (podczas instalacji i konfiguracji interfejsu systemu), a także rozumieć pliki i katalogi (foldery). Należy także przygotować się na przeszukanie systemu i Internetu w celu uzyskania dodatkowej dokumentacji. Jak wspomniano powyżej, najważniejsza jest chęć i chęć eksploracji komputera.

Jak czytać książkę

Jeśli chodzi o tematy techniczne, przekazanie całej niezbędnej wiedzy nie jest zadaniem łatwym. Z jednej strony czytelnik grzęźnie w niepotrzebnych szczegółach i ma trudności z uchwyceniem sedna, gdyż ludzki umysł po prostu nie jest w stanie przetworzyć dużej liczby nowych pojęć jednocześnie. Z drugiej strony brak szczegółów powoduje, że czytelnik otrzymuje jedynie mgliste pojęcie o temacie i nie jest gotowy na przyswojenie dalszego materiału.

W tej książce autor uprościł prezentację i uporządkował materiał. W większości rozdziałów w pierwszej kolejności prezentowane są ważne informacje potrzebne do dalszej pracy. Czytając rozdział, natkniesz się na dodatkowy materiał. Czy musisz natychmiast uchwycić te szczegóły? W większości przypadków autor uważa, że ​​nie. Jeżeli ilość szczegółów związanych z materiałem, którego się właśnie nauczyłeś, zaczyna Ci się szklić, nie wahaj się przejść do następnego rozdziału lub zrób sobie przerwę. Czekają Cię inne ważne rzeczy.

Jak zorganizowana jest ta książka?

Książka zaczyna się od przeglądu systemu Linux, a następnie zawiera serię praktycznych ćwiczeń z narzędziami potrzebnymi do rozpoczęcia pracy z systemem. Następnie szczegółowo zapoznasz się z każdą częścią systemu, od zarządzania sprzętem po konfigurację sieci, zachowując normalną kolejność uruchamiania systemu. Wreszcie zrozumiesz niektóre szczegóły działającego systemu, nauczysz się kilku ważnych umiejętności i zaznajomisz się z narzędziami używanymi przez programistów.

Większość wczesnych rozdziałów (z wyjątkiem rozdziału 2) koncentruje się głównie na jądrze Linuksa, ale w miarę przeglądania książki będziesz także pracować w swojej przestrzeni użytkownika. Jeśli nie rozumiesz, o czym teraz mówi autor, nie martw się, wyjaśnienia zostaną podane w rozdziale 1. Materiał jest prezentowany, jeśli to możliwe, bez odniesienia do jakiejkolwiek dystrybucji systemu. Nudno byłoby opisywać wszystkie warianty systemu, więc Ward próbował porozmawiać o dwóch głównych rodzinach dystrybucji: Debianie (w tym Ubuntu) i RHEL/Fedora/CentOS. Nacisk położony jest na wersje serwerowe i stacje robocze. Reprezentowane są także systemy wbudowane, takie jak Android i OpenWRT, ale poznanie różnic między tymi platformami zależy od Ciebie.

Co nowego w drugiej edycji

Pierwsze wydanie tej książki dotyczyło głównie strony użytkownika podczas pracy w systemie Linux. Skupiono się głównie na projektowaniu jego części i zapewnieniu ich funkcjonalności. W tamtych czasach wiele elementów systemu było trudnych do prawidłowego zainstalowania i skonfigurowania.

Dzięki ciężkiej pracy programistów i twórców dystrybucji Linuksa to się zmieniło. Ward dokonał przeglądu materiałów pierwszego wydania pod kątem aktualizacji, zwracając szczególną uwagę na proces uruchamiania systemu i sposobu, w jaki zarządza on sprzętem, a także usuwając nieaktualne materiały (takie jak szczegółowe wyjaśnienie procesu drukowania), aby poszerzyć dyskusję na temat roli jądra Linuksa w każdą dystrybucję. Prawdopodobnie wchodzisz w interakcję z jądrem znacznie częściej, niż zdajesz sobie sprawę, a autor szczegółowo zauważył, kiedy to się dzieje.

Ward przeorganizował także prezentację książki, tak aby odpowiadała zainteresowaniom i potrzebom współczesnych czytelników. Jedyne, co się nie zmieniło, to długość książki.

Autor chciał dostarczyć Ci informacji potrzebnych do szybkiego rozpoczęcia pracy. Ich opanowanie będzie wymagało pewnego wysiłku, ale Ward nie ma zamiaru robić z ciebie „ciężarowca”, abyś mógł pokonać tę książkę. Gdy zrozumiesz ważne punkty tu opisane, łatwo będzie ci znaleźć szczegóły i je zrozumieć.

Autor usunął niektóre szczegóły historyczne, które znajdowały się w pierwszym wydaniu, głównie po to, aby zwrócić uwagę. Jeśli interesuje Cię system Linux i jego związek z historią systemu Unix, zapoznaj się z książką Petera H. Salusa The Daemon, the Gnu, and the Penguin (Reed Media Services, 2008) - opisuje ona, w jaki sposób wykorzystywane było przez nas oprogramowanie.

Więcej szczegółów na temat książki można znaleźć na stronie

Bieżąca strona: 1 (książka ma łącznie 30 stron) [dostępny fragment do czytania: 17 stron]

Briana Warda

Elementy wewnętrzne Linuksa

Tłumacz S. Czernikow

Redaktor techniczny N. Grinchik

Redaktor literacki O. Andriewicz

Artyści A. Barcewicz, W. Szymkiewicz

Korektorzy T. Kurianowicz, E. Pawłowicz

Układ A. Barcewicz

Briana Warda

Elementy wewnętrzne Linuksa. – Petersburg: Piotr, 2015.

ISBN 978-5-496-01952-1

© Sp. z oo Wydawnictwo „Piter”, 2015

Wszelkie prawa zastrzeżone. Żadna część tej książki nie może być powielana w jakiejkolwiek formie bez pisemnej zgody właścicieli praw autorskich.

Przedmowa

Napisałem tę książkę z przekonaniem, że aby odnieść sukces i być wydajnym, musisz zrozumieć, jak działa i jak działa oprogramowanie komputerowe.

System operacyjny Linux świetnie nadaje się do nauki, ponieważ większość konfiguracji systemu jest przechowywana w prostych plikach, które są dość łatwe do odczytania. Trzeba tylko dowiedzieć się, za co odpowiedzialna jest każda część, a następnie złożyć wszystko w całość. Temu poświęcona jest ta książka.

Zainteresowanie projektowaniem systemu operacyjnego Linux może być spowodowane różnymi przyczynami. Specjaliści w dziedzinie technologii informatycznych i twórcy oprogramowania dla systemu Linux znajdą w tej książce praktycznie wszystko, co muszą wiedzieć, aby w pełni wykorzystać możliwości systemu operacyjnego. Naukowcy i studenci, którzy często muszą dostosowywać systemy do swoich potrzeb, znajdą tutaj praktyczne wyjaśnienia, dlaczego wszystko działa tak, a nie inaczej. Są też „artyści” – użytkownicy, którzy lubią spędzać czas przy komputerze dla zabawy, zysku lub obu.

Chcesz wiedzieć, dlaczego niektóre rzeczy działają, a inne nie? Zastanawiasz się, co się stanie, jeśli coś zmienisz? W takim razie jesteś jednym z „artystów”.

Niezbędne warunki

Nie musisz być programistą, aby przeczytać tę książkę. Będziesz potrzebować jedynie podstawowych umiejętności obsługi komputera: musisz poruszać się po interfejsie graficznym (podczas instalacji i konfiguracji interfejsu systemu), a także rozumieć pliki i katalogi (foldery). Należy także przygotować się na przeszukanie systemu i Internetu w celu uzyskania dodatkowej dokumentacji. Jak wspomniano powyżej, najważniejsza jest chęć i chęć eksploracji komputera.

Jeśli chodzi o przedmioty techniczne, przekazanie całej niezbędnej wiedzy nie jest zadaniem łatwym. Z jednej strony czytelnik grzęźnie w niepotrzebnych szczegółach i ma trudności z uchwyceniem sedna, gdyż ludzki umysł po prostu nie jest w stanie przetworzyć dużej liczby nowych pojęć jednocześnie. Z drugiej strony brak szczegółów powoduje, że czytelnik otrzymuje jedynie mgliste pojęcie o temacie i nie jest gotowy na przyswojenie dalszego materiału.

W tej książce uprościłem prezentację i uporządkowałem materiał. W większości rozdziałów w pierwszej kolejności prezentowane są ważne informacje potrzebne do dalszej pracy. Czytając rozdział, natkniesz się na dodatkowy materiał. Czy musisz od razu zrozumieć te szczegóły? W większości przypadków myślę, że nie. Jeżeli ilość szczegółów związanych z materiałem, którego się właśnie nauczyłeś, zaczyna Ci się szklić, nie wahaj się przejść do następnego rozdziału lub zrobić sobie przerwę. Czekają Cię inne ważne rzeczy.

Praktyczne podejście

Do pracy niezbędny będzie komputer z systemem operacyjnym Linux. Być może wolisz instalację wirtualną — do przetestowania większości materiałów zawartych w tej książce użyłem VirtualBox. Musisz mieć dostęp superużytkownika (root), chociaż przez większość czasu powinieneś używać standardowego konta użytkownika. Będziesz pracować głównie w wierszu poleceń, oknie terminala lub sesji zdalnej. Jeśli nie pracowałeś często w tym środowisku, nie ma problemu; dowiesz się więcej na ten temat w rozdziale 2.

Zazwyczaj polecenia będą wyglądać następująco:

Wprowadź tekst zaznaczony pogrubioną czcionką; Tekst odpowiedzi wygenerowany przez urządzenie jest wyświetlany zwykłą czcionką. Symbol $ oznacza zachętę dla użytkownika posiadającego zwykłe konto. Jeśli w wierszu polecenia zobaczysz symbol #, powinieneś używać konta superużytkownika (więcej na ten temat w rozdziale 2).

Jak zorganizowana jest ta książka?

Książka zaczyna się od przeglądu systemu Linux, a następnie zawiera serię praktycznych ćwiczeń z narzędziami potrzebnymi do rozpoczęcia pracy z systemem. Następnie szczegółowo zapoznasz się z każdą częścią systemu, od zarządzania sprzętem po konfigurację sieci, zachowując normalną kolejność uruchamiania systemu. Wreszcie zrozumiesz niektóre szczegóły działającego systemu, nauczysz się kilku ważnych umiejętności i zaznajomisz się z narzędziami używanymi przez programistów.

Większość wczesnych rozdziałów (z wyjątkiem rozdziału 2) koncentruje się głównie na jądrze Linuksa, ale w miarę czytania książki będziesz także pracować w swojej przestrzeni użytkownika. Jeśli nie rozumiesz, o czym teraz mówię, nie martw się, wyjaśnienia zostaną podane w Rozdziale 1.

Materiał jest prezentowany, gdy tylko jest to możliwe, bez odniesienia do jakiejkolwiek dystrybucji systemu. Nudno byłoby opisywać wszystkie warianty systemu, dlatego spróbowałem porozmawiać o dwóch głównych rodzinach dystrybucji: Debianie (w tym Ubuntu) i RHEL/Fedora/CentOS. Nacisk położony jest na wersje serwerowe i stacje robocze. Reprezentowane są także systemy wbudowane, takie jak Android i OpenWRT, ale poznanie różnic między tymi platformami zależy od Ciebie.

Co nowego w drugiej edycji

Pierwsze wydanie tej książki dotyczyło głównie strony użytkownika podczas pracy w systemie Linux. Skupiono się głównie na projektowaniu jego części i zapewnieniu ich funkcjonalności. W tamtych czasach wiele elementów systemu było trudnych do prawidłowego zainstalowania i skonfigurowania.

Dzięki ciężkiej pracy programistów i twórców dystrybucji Linuksa to się zmieniło. Przejrzałem materiały pierwszego wydania pod kątem aktualizacji, zwracając szczególną uwagę na proces uruchamiania systemu i sposobu, w jaki zarządza on sprzętem, oraz usuwając nieaktualne materiały (takie jak szczegółowe wyjaśnienie procesu drukowania), aby poszerzyć dyskusję na temat roli systemu Linux jądro w każdej dystrybucji. Prawdopodobnie wchodzisz w interakcję z jądrem częściej, niż zdajesz sobie sprawę, i specjalnie zanotowałem momenty, w których to się dzieje.

Zmieniłem także kolejność prezentacji książki, aby dostosować ją do zainteresowań i potrzeb współczesnych czytelników. Jedyne, co się nie zmieniło, to długość książki.

Chciałem przekazać Ci informacje potrzebne do szybkiego rozpoczęcia pracy. Opanowanie ich będzie wymagało pewnego wysiłku, ale nie mam zamiaru robić z ciebie „ciężarowca”, abyś mógł pokonać tę książkę. Gdy zrozumiesz ważne punkty tu opisane, łatwo będzie ci znaleźć szczegóły i je zrozumieć.

Usunąłem niektóre szczegóły historyczne, które były w pierwszym wydaniu, głównie po to, aby zwrócić Twoją uwagę. Jeśli interesuje Cię system Linux i jego związek z historią systemu Unix, zapoznaj się z książką Petera H. Salusa Demon, Gnu i Pingwin(Reed Media Services, 2008) – mówi o ewolucji oprogramowania, którego używamy.

Uwaga dotycząca terminologii

Obecnie toczy się dyskusja na temat nazw niektórych elementów systemów operacyjnych. W grę wchodzi nawet nazwa systemu Linux – czy powinien on nazywać się Linux czy GNU/Linux (aby odzwierciedlić użycie niektórych elementów projektu GNU)? W książce starałem się używać możliwie najpowszechniejszych i najmniej uciążliwych nazw.

Podziękowanie

Dziękuję wszystkim, którzy pomogli mi w pracy nad pierwszym wydaniem. Są to James Duncan, Douglas N. Arnold, Bill Fenner, Ken Hornstein, Scott Dickson, Dan Ehrlich, Felix Lee Felix Lee, Scott Schwartz, Gregory P. Smith, Dan Sully, Karol Jurado i Gina Steele. Za to wydanie szczególnie dziękuję Jordiemu Gutiérrezowi Hermoso za jego doskonałą recenzję techniczną; jego sugestie i wyjaśnienia są bezcenne. Dziękuję także Dominique’owi Poulainowi i Donaldowi Karonowi za szybką reakcję na wczesnych etapach pracy, a także Hsinju Hsiehowi, który cierpliwie współpracował ze mną nad poprawieniem tej książki.

Chciałbym także podziękować mojemu redaktorowi ds. rozwoju, Billowi Pollockowi i redaktorowi ds. produkcji, Laurel Chun. Serena Yang, Alison Law i wszyscy w No Starch Press jak zawsze wykonali wspaniałą robotę, tworząc nowe wydanie książki.

Od wydawcy

Wszelkie uwagi, sugestie i pytania prosimy przesyłać e-mailem [e-mail chroniony](Wydawnictwo Peter, wydanie komputerowe).

Chętnie poznamy Twoją opinię!

Na stronie wydawnictwa http://www.piter.com znajdą Państwo szczegółowe informacje o naszych książkach.

1. Szeroki obraz

Na pierwszy rzut oka nowoczesny system operacyjny, taki jak Linux, jest dość złożony i składa się z dużej liczby części, które jednocześnie funkcjonują i współdziałają ze sobą. W ten sposób serwer WWW może komunikować się z serwerem bazy danych, który z kolei korzysta ze wspólnej biblioteki używanej przez wiele innych programów. Jak to wszystko działa?

Najskuteczniej możesz zrozumieć strukturę systemu operacyjnego za pomocą abstrakcje to zgrabny sposób na powiedzenie, że ignorujesz większość szczegółów. Na przykład, gdy prowadzisz samochód, zwykle nie musisz myśleć o szczegółach, takich jak śruby mocujące silnik w samochodzie lub ludzie, którzy brukują drogę i ją konserwują. Jeśli jedziesz samochodem jako pasażer, wystarczy, że wiesz, do czego ten samochód jest przeznaczony (dokąd Cię zabiera) i podstawowe zasady jego użytkowania (jak obchodzić się z drzwiami i pasami bezpieczeństwa).

Jeśli prowadzisz samochód, musisz wiedzieć więcej. Należy zapoznać się z elementami sterującymi (takimi jak kierownica i pedał gazu) oraz poznać zasady postępowania w przypadku awarii.

Załóżmy, że samochód porusza się gwałtownie. Abstrakcję „samochodu jadącego po drodze” można podzielić na trzy części: samochód, drogę i styl jazdy. Pomoże to ustalić przyczynę. Jeśli droga jest wyboista, nie musisz winić samochodu ani siebie. Zamiast tego możesz spróbować dowiedzieć się, dlaczego droga uległa zniszczeniu lub, jeśli droga jest nowa, dlaczego jej budowniczowie wykonali tak okropną robotę.

Twórcy oprogramowania wykorzystują abstrakcję jako narzędzie podczas tworzenia systemów operacyjnych i aplikacji. Istnieje wiele terminów określających abstrakcyjne obszary oprogramowania komputerowego, w tym: podsystem, moduł I plastikowa torba. Jednak w tym rozdziale będziemy używać tego terminu część bo to jest proste. Tworząc komponent oprogramowania, programiści zazwyczaj nie przejmują się zbytnio wewnętrzną strukturą pozostałych komponentów, ale muszą zastanowić się, jakich komponentów mogą używać i jak mogą z nich korzystać.

Ten rozdział zawiera ogólny przegląd komponentów tworzących system Linux. Choć każdy z nich posiada niesamowitą ilość szczegółów technicznych związanych z budową wewnętrzną, nie będziemy zwracać na nie uwagi i skupiać się na tym, co te elementy robią w stosunku do systemu jako całości.

1.1. Poziomy i warstwy abstrakcji w systemie operacyjnym Linux

Używanie abstrakcji do dzielenia systemów komputerowych na komponenty ułatwia ich zrozumienie, ale na nic się nie zda, jeśli nie ma struktury. Komponenty ułożymy w warstwy, czyli poziomy. Warstwa, Lub poziom, to sposób klasyfikowania (lub grupowania) komponentów według ich lokalizacji pomiędzy użytkownikiem a sprzętem. Przeglądarki, gry itp. znajdują się na górnej warstwie; na dolnej warstwie widzimy pamięć komputera: zera i jedynki. System operacyjny zajmuje największą liczbę warstw pomiędzy tymi dwoma.

W systemie operacyjnym Linux można wyróżnić trzy główne poziomy. Na ryc. Rysunek 1.1 przedstawia poziomy, a także niektóre elementy każdego z nich. U podstawy znajdują się sprzęt komputerowy. Obejmują one pamięć i jedną lub więcej jednostek centralnych (CPU), które wykonują obliczenia i żądania odczytu i zapisu w pamięci. Urządzenia takie jak dyski twarde i interfejsy sieciowe są również uważane za sprzęt.

Poziom powyżej znajduje się rdzeń, który jest rdzeniem systemu operacyjnego. Jądro to program znajdujący się w pamięci komputera i przekazujący instrukcje centralnemu procesorowi. Jądro zarządza sprzętem i działa przede wszystkim jako interfejs pomiędzy sprzętem a dowolnym uruchomionym programem.

Procesy – uruchamiające programy zarządzane przez jądro – wspólnie tworzą najwyższy poziom systemu, tzw przestrzeń użytkownika.

Notatka

Bardziej precyzyjnym terminem niż „proces” jest „proces użytkownika”, niezależnie od tego, czy użytkownik bezpośrednio wchodzi w interakcję z tym procesem. Na przykład wszystkie serwery WWW działają jako procesy użytkownika.

Istnieje istotna różnica pomiędzy sposobem uruchamiania procesów jądra i procesów użytkownika: jądro jest uruchamiane w tryb jądra, a procesy użytkownika - w tryb użytkownika. Kod działający w trybie jądra ma nieograniczony dostęp do procesora i pamięci RAM. Jest to potężna zaleta, ale może być niebezpieczna, ponieważ umożliwia procesom jądra łatwe zakłócanie pracy całego systemu. Obszar dostępny tylko dla jądra nazywa się przestrzeń rdzenia.

Dla porównania, w trybie użytkownika dostępna jest tylko ograniczona (zwykle niewielka) ilość pamięci i dozwolone są tylko instrukcje bezpiecznego procesora. Przestrzeń użytkownika to obszary pamięci RAM, do których mogą uzyskać dostęp procesy użytkownika. Jeśli proces się nie powiedzie, konsekwencje będą ograniczone, a jądro będzie w stanie to wyczyścić. Oznacza to, że jeśli na przykład Twoja przeglądarka ulegnie awarii, obliczenia naukowe, które prowadzisz w tle od kilku dni, nie zostaną zakłócone.

Ryż. 1.1. Ogólna struktura systemu operacyjnego Linux

Teoretycznie niekontrolowany proces użytkownika nie jest w stanie wyrządzić znaczących szkód w systemie. To naprawdę zależy od tego, co uważasz za „znaczną szkodę” i specjalnych przywilejów procesu, ponieważ niektóre procesy mogą robić więcej niż inne. Czy na przykład proces użytkownika może całkowicie zniszczyć dane na dysku twardym? Jeśli odpowiednio skonfigurujesz uprawnienia, może i będzie to dla Ciebie niezwykle niebezpieczne. Istnieją zabezpieczenia, które temu zapobiegają, a większość procesów po prostu nie będzie mogła powodować spustoszenia w ten sposób.

1.2. Sprzęt: RAM

Spośród całego sprzętu komputerowego Baran jest być może najważniejsze. W swojej najbardziej surowej formie pamięć RAM jest po prostu ogromnym magazynem ciągów zer i jedynek. Każde zero lub jeden jest wywoływane fragment. Tutaj znajduje się działające jądro i procesy - są to po prostu duże zbiory bitów. Wszystkie dane wejściowe i wyjściowe z urządzeń peryferyjnych przechodzą przez pamięć RAM również w postaci zestawów bitów. Procesor po prostu operuje na pamięci: odczytuje z niej instrukcje i dane, a następnie zapisuje dane z powrotem do pamięci.

Często będziesz spotykać się z tym terminem "państwo", które będą odnosić się do pamięci, procesów, jądra i innych części systemu komputerowego. Ściśle mówiąc, stan to dowolny uporządkowany układ bitów. Na przykład, jeśli w pamięci znajdują się cztery bity, wówczas sekwencje 0110, 0001 i 1011 reprezentują trzy różne stany.

Biorąc pod uwagę, że proces może z łatwością składać się z milionów bitów pamięci, często łatwiej jest używać abstrakcyjnych terminów, mówiąc o stanach. Zamiast opisywać stan za pomocą bitów, mówisz o tym, co się wydarzyło lub dzieje w tej chwili. Można na przykład powiedzieć „ten proces oczekuje na dane wejściowe” lub „proces wykonuje drugi etap procedury uruchamiania”.

NOTATKA

Ponieważ stany są zwykle opisywane przy użyciu pojęć abstrakcyjnych, a nie rzeczywistych bitów, termin „obraz” jest używany w odniesieniu do dowolnego fizycznego układu bitów.

1.3. Rdzeń

Prawie wszystko, co robi jądro, wymaga pamięci RAM. Jednym z zadań jądra jest podział pamięci na kilka podsekcji, po czym jądro musi stale utrzymywać w odpowiedniej kolejności informacje o stanie tych podsekcji. Każdy proces wykorzystuje przydzielony mu obszar pamięci, a jądro musi dbać o to, aby procesy trzymały się swoich obszarów.

Jądro odpowiada za zarządzanie zadaniami w czterech głównych obszarach systemu.

Procesy. Jądro jest odpowiedzialne za to, które procesy mają dostęp do centralnego procesora.

Pamięć. Jądro musi śledzić stan całej pamięci: jaka część jest aktualnie przydzielona określonym procesom, jaka może zostać przydzielona do współdzielenia między procesami, a jaka część jest wolna.

Sterowniki urządzeń. Jądro działa jako interfejs pomiędzy sprzętem (takim jak dysk twardy) a procesami. Zazwyczaj zarządzanie sprzętem odbywa się za pomocą jądra.

Wywołania systemoweIwsparcie. Procesy zazwyczaj używają wywołań systemowych do komunikacji z jądrem.

Przyjrzyjmy się teraz pokrótce każdemu z tych obszarów.

NOTATKA

Więcej informacji na temat działania jądra można znaleźć w publikacji Operating System Concepts, wydanie 9, autorstwa Abrahama Silberschatza, Petera B. Galvina i Grega Gagne (Wiley, 2012) oraz Modern Operating Systems, wydanie 4, autorstwa Andrew S. Tanenbauma i Herberta. Bosa (Prentice Hall, 2014).

1.3.1. Zarządzanie procesem

Zarządzanie procesem opisuje uruchamianie, zatrzymywanie, wznawianie i kończenie procesów. Koncepcje uruchamiania i zatrzymywania procesów są dość proste. Nieco trudniej jest opisać, w jaki sposób proces wykorzystuje procesor podczas normalnej pracy.

W każdym nowoczesnym systemie operacyjnym kilka procesów działa „jednocześnie”. Możesz na przykład uruchomić przeglądarkę na swoim komputerze i jednocześnie otworzyć arkusz kalkulacyjny. Jednak w rzeczywistości nic nie jest takie, jak się wydaje: procesy odpowiedzialne za te aplikacje zwykle się nie uruchamiają Vdokładność w pewnym momencie.

Rozważmy system z jednym centralnym procesorem. Może z niego korzystać wiele procesów, ale w danym momencie tylko jeden proces może faktycznie korzystać z procesora. W praktyce każdy proces wykorzystuje procesor przez ułamek sekundy, a następnie zatrzymuje się; następnie inny proces wykorzystuje procesor przez ułamek sekundy; potem przychodzi kolej na trzeci proces, itd. Czynność, w której proces przekazuje kontrolę nad procesorem innemu procesowi, nazywa się przełączanie kontekstu.

Każdy okres czasu kwant czasu– daje procesowi wystarczająco dużo czasu na wykonanie znaczących obliczeń (i oczywiście proces często kończy swoje bieżące zadanie w ciągu jednego kwantu). Ponieważ odcinki czasu są tak małe, człowiek ich nie dostrzega i wydaje mu się, że w systemie działa jednocześnie kilka procesów (możliwość ta nazywa się "wielozadaniowość").

Jądro jest odpowiedzialne za przełączanie kontekstu. Aby zrozumieć, jak to działa, wyobraźmy sobie sytuację, w której proces działa w trybie użytkownika, ale jego przedział czasowy dobiega końca. Oto co się dzieje.

1. Procesor (prawdziwy sprzęt) przerywa bieżący proces za pomocą wewnętrznego timera, przełącza się w tryb jądra i przywraca mu kontrolę.

2. Jądro rejestruje aktualny stan procesora i pamięci, który będzie potrzebny do wznowienia właśnie przerwanego procesu.

3. Jądro wykonuje wszelkie zadania, które mogły pojawić się w poprzednim przedziale czasu (na przykład zbieranie danych lub operacje we/wy).

4. Jądro jest teraz gotowe do rozpoczęcia kolejnego procesu. Analizuje listę procesów gotowych do uruchomienia i wybiera jeden z nich.

5. Jądro przygotowuje pamięć na nowy proces, a następnie przygotowuje procesor.

6. Jądro informuje procesor, jak długo będzie trwał przedział czasu dla nowego procesu.

7. Jądro przełącza procesor w tryb użytkownika i przekazuje kontrolę procesorowi.

Przełączanie kontekstu odpowiada na ważne pytanie: Gdy czy jądro działa? Odpowiedź brzmi: jądro działa między przedziały czasu przydzielane procesom, gdy następuje przełączenie kontekstu.

W systemie z wieloma procesorami sytuacja jest nieco bardziej skomplikowana, ponieważ jądro nie musi przerywać kontrolowania bieżącego procesora, aby umożliwić uruchomienie jakiegoś procesu na innym procesorze. A jednak, aby maksymalnie wykorzystać wszystkie dostępne procesory, jądro nadal to robi (i może zastosować pewne sztuczki, aby zyskać dodatkowy czas procesora).

1.3.2. Zarządzanie pamięcią

Ponieważ jądro musi zarządzać pamięcią podczas przełączania kontekstu, zostało wyposażone w tę złożoną funkcję. Działanie jądra jest złożone, ponieważ należy wziąć pod uwagę następujące warunki:

Jądro musi mieć własny obszar pamięci, do którego procesy użytkownika nie mają dostępu;

Każdy proces użytkownika potrzebuje własnego obszaru pamięci;

Żaden proces użytkownika nie może mieć dostępu do pamięci przydzielonej innemu procesowi;

Procesy użytkownika mogą współdzielić pamięć;

Część pamięci dla procesów użytkownika może być tylko do odczytu;

System może wykorzystać więcej pamięci niż jest dostępna, wykorzystując miejsce na dysku jako urządzenie pomocnicze.

Jądro ma pomocnika. Nowoczesne procesory zawierają moduł zarządzania pamięcią(MMU), który aktywuje obwód dostępu do pamięci zwany "pamięć wirtualna". Podczas korzystania z pamięci wirtualnej proces nie uzyskuje dostępu do pamięci bezpośrednio z jej fizycznej lokalizacji w sprzęcie. Zamiast tego jądro konfiguruje każdy proces tak, jakby miał kontrolę nad całą maszyną. Gdy proces uzyskuje dostęp do pamięci, MMU przechwytuje żądanie i wykorzystuje mapę adresów pamięci do przetłumaczenia lokalizacji pamięci poznanej z procesu na lokalizację pamięci fizycznej w komputerze. Jednakże jądro musi nadal inicjować, stale utrzymywać i modyfikować tę mapę adresów. Na przykład podczas zmiany kontekstu jądro musi zmienić mapę po odchodzącym procesie i przygotować ją na nadchodzący.

Notatka

Implementacja mapy adresów pamięci nazywana jest tablicą stron.

W rozdziale 8 dowiesz się, jak monitorować wydajność pamięci.

1.3.3. Sterowniki urządzeń i zarządzanie

Zadanie jądra w odniesieniu do urządzeń jest dość proste. Zazwyczaj urządzenia są dostępne tylko w trybie jądra, ponieważ nieprawidłowy dostęp (na przykład, gdy proces użytkownika próbuje wyłączyć zasilanie) może spowodować awarię komputera. Innym problemem jest to, że różne urządzenia rzadko mają ten sam interfejs oprogramowania, nawet jeśli wykonują to samo zadanie: na przykład dwie różne karty sieciowe. Z tego powodu sterowniki urządzeń są tradycyjnie częścią jądra i mają na celu zapewnienie ujednoliconego interfejsu procesom użytkownika, aby ułatwić pracę twórcom oprogramowania.

1.3.4. Wezwania systemowe i wsparcie

Istnieją inne typy funkcji jądra dostępne dla procesów użytkownika. Na przykład, wywołania systemowe wykonywać specjalne zadania, których proces użytkownika nie jest w stanie wykonać dobrze lub w ogóle samodzielnie. Zatem wszelkie działania związane z otwieraniem, odczytywaniem i zapisywaniem plików wiążą się z wywołaniami systemowymi.

Dwa wywołania systemowe, fork() i exec(), są ważne dla zrozumienia sposobu uruchamiania procesów:

Widelec(). Kiedy proces wywołuje fork(), jądro tworzy niemal identyczną kopię procesu;

Wykonanie(). Kiedy proces wywołuje exec( program), jądro uruchamia program program, który zastępuje bieżący proces.

Z wyjątkiem procesu inicjującego (rozdział 6), Wszystko procesy użytkownika w systemie Linux rozpoczynają się w wyniku wywołania fork() i w większości przypadków wykonywane jest wywołanie exec() w celu uruchomienia nowego programu, a nie kopii istniejącego procesu. Prostym przykładem jest dowolny program uruchamiany z wiersza poleceń, na przykład polecenie ls wyświetlające zawartość katalogu. Kiedy wpiszesz polecenie ls w oknie terminala, powłoka działająca w oknie terminala wywołuje funkcję fork() w celu utworzenia kopii powłoki, a następnie ta nowa kopia powłoki wywołuje funkcję exec(ls) w celu uruchomienia polecenia ls. Na ryc. Rysunek 1.2 przedstawia sekwencję procesów i wywołań systemowych uruchamiających programy takie jak ls.

Ryż. 1.2. Rozpoczęcie nowego procesu

NOTATKA

Wywołania systemowe są zwykle oznaczane w nawiasach. W przykładzie pokazanym na rys. 1.2 proces żądający od jądra utworzenia innego procesu musi wywołać funkcję systemową fork(). To oznaczenie wynika ze sposobu, w jaki wywołania są pisane w języku programowania C. Aby zrozumieć tę książkę, nie musisz znać języka C. Pamiętaj tylko, że wywołanie systemowe to interakcja pomiędzy procesem a jądrem. Co więcej, książka ta upraszcza niektóre grupy wywołań systemowych. Na przykład wywołanie exec() oznacza całą rodzinę wywołań systemowych, które wykonują podobne zadanie, ale różnią się implementacją programową.

Jądro obsługuje także procesy użytkownika, których funkcje różnią się od tradycyjnych wywołań systemowych. Najbardziej znane z nich to pseudourządzenia. Z punktu widzenia procesów użytkownika pseudourządzenia wyglądają jak zwykłe urządzenia, tyle że są w całości zaimplementowane w oprogramowaniu. Tak naprawdę formalnie nie powinny znajdować się w jądrze, jednak ze względów praktycznych nadal w nim są obecne. Na przykład urządzenie generujące liczby losowe (/dev/random) byłoby trudne do wdrożenia przy wymaganym stopniu bezpieczeństwa przy użyciu procesu użytkownika.

notatka

Technicznie rzecz biorąc, proces użytkownika uzyskujący dostęp do pseudourządzenia jest nadal zmuszony do wykonania wywołania systemowego w celu otwarcia tego urządzenia. Dlatego procesy nie mogą całkowicie uniknąć wywołań systemowych.

1.4. Przestrzeń użytkownika

Nazywa się obszar pamięci RAM, który jądro przydziela procesom użytkownika przestrzeń użytkownika. Ponieważ proces jest tylko stanem (lub obrazem) w pamięci, przestrzeń użytkownika ma również dostęp do pamięci całego zbioru uruchomionych procesów. Możesz także spotkać się z tym terminem „kraina użytkownika”, który jest używany zamiast przestrzeni użytkownika.

Większość rzeczywistej akcji systemu Linux ma miejsce w przestrzeni użytkownika. Chociaż z punktu widzenia jądra wszystkie procesy są takie same, wykonują dla użytkowników różne zadania. Komponenty systemu reprezentujące procesy użytkownika są zorganizowane w elementarną strukturę - warstwę (lub warstwę) usług. Na ryc. Rysunek 1.3 przedstawia przybliżony zestaw komponentów wzajemnie połączonych i współdziałających z systemem Linux. Proste usługi znajdują się na najniższym poziomie (najbliżej jądra), programy narzędziowe na środku, a aplikacje, z którymi pracuje użytkownik, na górze. Rysunek 1.3 to niezwykle uproszczony schemat, ponieważ pokazano tylko sześć komponentów, ale można zauważyć, że górne komponenty znajdują się najbliżej użytkownika (interfejs użytkownika i przeglądarka); komponenty warstwy środkowej posiadają serwer pocztowy korzystający z przeglądarki; Na dole znajduje się kilka małych elementów.

Niższy poziom zwykle składa się z małych komponentów, które wykonują proste zadania. Warstwa środkowa zawiera większe komponenty, takie jak usługa pocztowa, serwer wydruku i baza danych. Komponenty najwyższego poziomu wykonują złożone zadania, które często są bezpośrednio kontrolowane przez użytkownika. Jeśli jeden komponent chce użyć innego, wówczas ten drugi komponent ma ten sam poziom usług lub niższy.

Rysunek 1.3 tylko w przybliżeniu przedstawia układ przestrzeni użytkownika. W rzeczywistości w przestrzeni użytkownika nie ma żadnych zasad. Na przykład większość aplikacji i usług rejestruje komunikaty diagnostyczne tzw czasopisma. Większość programów korzysta ze standardowej usługi syslog do rejestrowania komunikatów, ale niektóre decydują się na samodzielne rejestrowanie.

Ryż. 1.3. Rodzaje procesów i interakcji

Ponadto niektóre elementy przestrzeni użytkownika mogą być trudne do sklasyfikowania. Komponenty po stronie serwera, takie jak serwer WWW lub serwer bazy danych, można uznać za aplikacje bardzo wysokiego poziomu, ponieważ wykonują dość złożone zadania. Takie aplikacje można umieścić na górze rysunku. 1.3. Jednocześnie aplikacje użytkownika mogą polegać na aplikacjach serwerowych w celu wykonywania zadań, z którymi same nie są w stanie sobie poradzić. W takim przypadku komponenty serwera należy umieścić na środkowym poziomie.

1,5. Użytkownicy

Jądro Linuksa wspiera tradycyjną koncepcję użytkownika systemu Unix. Użytkownik to podmiot, który może uruchamiać procesy i posiadać pliki. Powiązany z użytkownikiem Nazwa użytkownika. Na przykład system może mieć użytkownika o nazwie billyjoe. Jednakże jądro nie zajmuje się nazwami użytkowników, zamiast tego identyfikuje użytkownika za pomocą prostej liczby identyfikator użytkownika(Rozdział 7 mówi o tym, jak identyfikatory są powiązane z nazwami użytkowników).

Rekrutujemy grupę wydającą do naszego trackera .
Płatność jest do negocjacji.
Zgłoszenia przyjmowane są drogą pocztową strona [email protected], możliwe dzięki informacji zwrotnej
Opowiedz nam krótko o sobie, ile czasu możesz poświęcić naszej witrynie i jakie są Twoje przewidywane zarobki.

Bandicam umożliwia nagranie określonego obszaru na ekranie komputera PC lub w programie korzystającym z technologii graficznych DirectX/OpenGL. Bandicam pomaga nagrywać wysoce skompresowane wideo....


Opis: Wondershare Filmora to wygodny edytor wideo zawierający wszystkie niezbędne narzędzia do edycji wideo. Możesz tworzyć wysokiej jakości filmy z tytułami, ...


EmEditor Profesjonalny- profesjonalna wersja potężnego edytora tekstu dla programistów, twórców stron internetowych i zwykłych użytkowników z podświetlaniem składni i obsługą Unicode. Redaktor ma...

Regenerator sterowników to aplikacja, która przeskanuje Twój system w poszukiwaniu nieaktualnych sterowników i zaproponuje ich aktualizację. Skanowanie odbywa się względem jednej z największych baz sterowników, co gwarantuje....


Skype'a- darmowy program do komunikacji tekstowej, głosowej i wideo ze znajomymi na całym świecie. Sieć Skype wykorzystuje technologię P2P do łączenia się z innymi użytkownikami i jest wysokiej jakości....


Bandizip to szybki i niezawodny program obsługujący pracę z formatami WinZip, 7-Zip i WinRAR oraz innymi podobnymi archiwami. Wykorzystuje bardzo szybki algorytm kompresji i dekompresji....

Opera to nowa przeglądarka Chromium od Opera Software. Opera porzuciła swoją klasyczną przeglądarkę i obecnie pracuje nad nową przeglądarką opartą na projekcie Google Chromium....

Opis: Program do pracy z dokumentami PDF, który udostępnia zbiór narzędzi i narzędzi do modyfikowania i optymalizacji plików PDF i ich zawartości. Dzięki...


Snappy Driver Installer (SDI) to przenośny program do instalowania i aktualizowania sterowników, który nie wymaga połączenia z Internetem. Jest to przeróbka oryginalnego programu SDIO autorstwa Glenna Delahoya....

Akcja Mirillis! - program umożliwia nagrywanie obrazów ekranowych w czasie rzeczywistym do plików wideo o różnych formatach. Możesz nagrywać wideo z odtwarzacza internetowego, rozgrywkę, wstawiać komentarze audio na żywo....



Książka, którą trzymasz w rękach, stała się już bestsellerem na Zachodzie. Opisuje wszystkie zawiłości pracy z systemem operacyjnym Linux, administrację systemem i głębokie mechanizmy zapewniające funkcjonalność Linuksa na niskim poziomie. Na stronach tej książki zdobędziesz podstawową wiedzę dotyczącą pracy z jądrem Linuksa oraz zasad prawidłowego działania sieci komputerowych. Książka porusza także zagadnienia programowania skryptów powłoki i obsługi języka C, porusza tematykę bezpieczeństwa informacji, wirtualizacji i innych rzeczy niezastąpionych.

Poziomy i warstwy abstrakcji w systemie operacyjnym Linux

Używanie abstrakcji do dzielenia systemów komputerowych na komponenty ułatwia ich zrozumienie, ale na nic się nie zda, jeśli nie ma struktury. Komponenty ułożymy w warstwy, czyli poziomy. Warstwa lub warstwa to sposób klasyfikowania (lub grupowania) komponentów zgodnie z ich lokalizacją pomiędzy użytkownikiem a sprzętem. Przeglądarki, gry itp. znajdują się na górnej warstwie; na dolnej warstwie widzimy pamięć komputera: zera i jedynki. System operacyjny zajmuje największą liczbę warstw pomiędzy tymi dwoma.

System operacyjny Linux ma trzy główne poziomy. Sprzęt znajduje się u podstawy. Obejmują one pamięć i jedną lub więcej jednostek centralnych (CPU), które wykonują obliczenia i żądania odczytu i zapisu w pamięci. Urządzenia takie jak dyski twarde i interfejsy sieciowe są również uważane za sprzęt.

Poziom powyżej to jądro, które jest rdzeniem systemu operacyjnego. Jądro to program znajdujący się w pamięci komputera i przekazujący instrukcje centralnemu procesorowi. Jądro zarządza sprzętem i działa przede wszystkim jako interfejs pomiędzy sprzętem a dowolnym uruchomionym programem.

Procesy – uruchamiające programy zarządzane przez jądro – wspólnie tworzą najwyższy poziom systemu, zwany przestrzenią użytkownika. Bardziej precyzyjnym terminem niż „proces” jest „proces użytkownika”, niezależnie od tego, czy użytkownik bezpośrednio wchodzi w interakcję z tym procesem. Na przykład wszystkie serwery WWW działają jako procesy użytkownika.

Istnieje istotna różnica pomiędzy sposobem uruchamiania procesów jądra i procesów użytkownika: jądro działa w trybie jądra, podczas gdy procesy użytkownika działają w trybie użytkownika. Kod działający w trybie jądra ma nieograniczony dostęp do procesora i pamięci RAM. Jest to potężna zaleta, ale może być niebezpieczna, ponieważ umożliwia procesom jądra łatwe zakłócanie pracy całego systemu. Obszar dostępny tylko dla jądra nazywany jest przestrzenią jądra.

Dla porównania, w trybie użytkownika dostępna jest tylko ograniczona (zwykle niewielka) ilość pamięci i dozwolone są tylko instrukcje bezpieczne dla procesora. Przestrzeń użytkownika odnosi się do obszarów pamięci RAM, do których mogą uzyskać dostęp procesy użytkownika. Jeśli proces się nie powiedzie, konsekwencje będą ograniczone, a jądro będzie w stanie to wyczyścić. Oznacza to, że jeśli na przykład Twoja przeglądarka ulegnie awarii, obliczenia naukowe, które prowadzisz w tle od kilku dni, nie zostaną zakłócone.

Teoretycznie niekontrolowany proces użytkownika nie jest w stanie wyrządzić znaczących szkód w systemie. To naprawdę zależy od tego, co uważasz za „znaczną szkodę” i specjalnych przywilejów procesu, ponieważ niektóre procesy mogą robić więcej niż inne. Czy na przykład proces użytkownika może całkowicie zniszczyć dane na dysku twardym? Jeśli odpowiednio skonfigurujesz uprawnienia, może i będzie to dla Ciebie niezwykle niebezpieczne. Istnieją zabezpieczenia, które temu zapobiegają, a większość procesów po prostu nie będzie mogła powodować spustoszenia w ten sposób.

Podstawowe polecenia i struktura katalogów

Ten rozdział stanowi odniesienie do poleceń i narzędzi systemu operacyjnego Unix. Prawdopodobnie znasz już większość tych poleceń, ale chcę dać ci pewność, szczególnie jeśli chodzi o strukturę katalogów. Oto materiał wprowadzający, do którego będę się odwoływał w całej książce.

Dlaczego mówimy o poleceniach Uniksa? Czy ta książka nie jest o tym, jak działa Linux? Tak, oczywiście, co do tego, ale w samym sercu Linuksa jest system Unix.

Częściej niż Linux zobaczysz tutaj słowo Unix, ponieważ to, czego się nauczysz, można natychmiast zastosować w Solarisie, BSD i innych systemach związanych z Uniksem. Starałem się unikać omawiania zbyt wielu rozszerzeń interfejsu użytkownika specyficznych dla Linuksa, nie tylko po to, aby zapewnić solidne podstawy do korzystania z innych systemów, ale także dlatego, że takie rozszerzenia są dość niestabilne. Będziesz w stanie szybciej dostosować się do nowych wersji Linuksa, jeśli znasz podstawowe polecenia.

Jak ładuje się jądro Linuksa?

Teraz już wiesz o fizycznej i logicznej strukturze systemu Linux, czym jest jądro i jak pracować z procesami. Otrzymasz informacje o tym, jak jądro się uruchamia lub ładuje, innymi słowy, jak jądro przenosi się do pamięci aż do momentu, w którym rozpoczyna się pierwszy proces użytkownika. Uproszczony schemat procesu ładowania wygląda następująco.

  1. System BIOS lub oprogramowanie sprzętowe ładuje i uruchamia program rozruchowy systemu.
  2. Program ładujący system lokalizuje obraz jądra na dysku, ładuje go do pamięci i uruchamia.
  3. Jądro inicjuje urządzenia i ich sterowniki.
  4. Jądro montuje główny system plików.
  5. Jądro uruchamia komendę init z identyfikatorem procesu 1. Ten punkt jest początkiem przestrzeni użytkownika.
  6. Polecenie init uruchamia pozostałe procesy systemowe.
  7. W pewnym momencie polecenie init uruchamia proces umożliwiający zalogowanie się do systemu. Zwykle dzieje się to na końcu lub na krótko przed uruchomieniem systemu.

Omówiono tutaj kroki od pierwszego do czwartego, koncentrując się na jądrze i programach ładujących system. Rozdział 6 stanowi kontynuację historii ładowania przestrzeni użytkownika.

Możliwość zidentyfikowania każdego etapu procesu uruchamiania okaże się nieoceniona przy rozwiązywaniu problemów z uruchamianiem, a także pomoże Ci zrozumieć system jako całość. Jednak domyślny tryb rozruchu w wielu wersjach Linuksa często utrudnia (jeśli nie uniemożliwia) zidentyfikowanie niektórych początkowych kroków i prawdopodobnie będziesz mógł je obejrzeć dopiero po ich zakończeniu, po zalogowaniu się W.

Wprowadzenie do oprogramowania do kompilacji kodu C

Większość publicznie dostępnych pakietów oprogramowania innych firm dla systemu Unix zawiera kod źródłowy, który można skompilować i zainstalować. Jednym z powodów jest to, że istnieje tak wiele różnych wersji i architektur Uniksa (i samego Linuksa), że trudno byłoby stworzyć pakiety binarne dla wszystkich możliwych kombinacji platform. Innym ważnym powodem jest to, że szeroka dystrybucja kodu źródłowego w społeczności Uniksa zachęca użytkowników do naprawiania błędów w oprogramowaniu i wprowadzania nowych funkcji, nadając znaczenie terminowi „open source”.

Prawie wszystko, co widzisz w systemie Linux, można uzyskać jako kod źródłowy, od jądra i biblioteki C po przeglądarki. Możliwa jest nawet aktualizacja i rozbudowa systemu jako całości poprzez (ponowną) instalację części systemu z kodu źródłowego. Jednak prawdopodobnie nie powinieneś aktualizować swojego komputera, instalując wszystko ze źródła, chyba że podoba ci się ten proces lub masz inny powód.

Linux zwykle zapewnia łatwe sposoby aktualizacji krytycznych części systemu, takich jak polecenia w katalogu /bin, a jedną z niezwykle ważnych właściwości systemów jest to, że zazwyczaj bardzo szybko rozwiązują problemy związane z bezpieczeństwem. Nie oczekuj jednak, że Twoja wersja zapewni wszystko, czego potrzebujesz, bez Twojego wkładu. Oto kilka powodów, dla których może być konieczne samodzielne zainstalowanie niektórych pakietów:

  • do kontroli parametrów konfiguracyjnych;
  • aby zainstalować oprogramowanie tam, gdzie jest ono potrzebne. Możesz nawet zainstalować kilka różnych wersji tego samego pakietu;
  • aby kontrolować, którą wersję instalujesz. Dystrybucje systemu nie zawsze posiadają najnowsze wersje wszystkich pakietów, zwłaszcza tych związanych z dodatkowym oprogramowaniem (jak np. biblioteki Pythona);
  • aby lepiej zrozumieć działanie pakietu.

Serwery internetowe i aplikacje

Linux jest popularnym systemem serwerów WWW, a królem wśród serwerów aplikacji Linuksa jest Apache HTTP Server (powszechnie nazywany po prostu Apache). Innym serwerem internetowym, o którym często będziesz słyszeć, jest Tomcat (również projekt twórców Apache); zapewnia obsługę aplikacji Java.

Same serwery internetowe niewiele potrafią: mogą przechowywać pliki i to wszystko. Ostatecznym celem większości serwerów internetowych, takich jak Apache, jest zapewnienie platformy do uruchamiania aplikacji internetowych. Na przykład projekt Wikipedii jest zbudowany na pakiecie MediaWiki, którego możesz użyć do zorganizowania własnego projektu wiki. Systemy zarządzania treścią takie jak WordPress i Drupal umożliwiają tworzenie własnych blogów i multimedialnych stron internetowych. Wszystkie te aplikacje oparte są na językach programowania, które szczególnie dobrze sprawdzają się na Linuksie. Na przykład systemy MediaWiki, WordPress i Drupal są napisane w PHP.

Elementy tworzące aplikacje internetowe są wysoce modułowe, więc łatwo jest dodawać własne rozszerzenia i tworzyć aplikacje przy użyciu frameworków takich jak Django, Flask i Rails, które zapewniają udogodnienia dla popularnych frameworków i funkcji internetowych, takie jak używanie szablonów, multi- zarządzanie użytkownikami i obsługa baz danych.

Pobierz z bezpłatnego magazynu plików

Rozwiąż captcha, aby uzyskać dostęp do linków!