System operacyjny, skrócony jako system operacyjny, to oprogramowanie, które kontroluje sprzętowe komponenty systemu, czy to telefon, laptop lub komputer stacjonarny. Jest odpowiedzialny za komunikację między oprogramowaniem a sprzętem. Windows XP, Windows 8, Linux i Mac OS X to przykłady systemów operacyjnych. System operacyjny składa się z:
Przestrzeń jądra i przestrzeń użytkowników
Przestrzeń jądra: jądro znajduje się w podwyższonym stanie systemowym, który obejmuje chronioną przestrzeń pamięci i pełny dostęp do sprzętu urządzenia. Ten stan systemu i przestrzeń pamięci jest całkowicie określona jako przestrzeń jądra. W przestrzeni jądra podstawowy dostęp do usług sprzętowych i systemowych jest zarządzany i świadczony jako usługa dla reszty systemu.
Przestrzeń użytkownika: Aplikacje użytkownika są przeprowadzane w przestrzeni użytkownika, gdzie mogą osiągnąć podzbiór dostępnych zasobów maszyny za pośrednictwem wywołań systemu jądra. Korzystając z podstawowych usług, które zapewniło jądro, aplikacja na poziomie użytkowników może być tworzona jak na przykład gra lub oprogramowanie do produktywności biurowej.
Linux
Linux zyskał popularność przez lata, ponieważ jest open source, a zatem oparty na projekcie unix i przeniesiony do większej liczby platform w porównaniu z innymi konkurencyjnymi systemami operacyjnymi. Jest to system operacyjny, jak wskazano, przypomina system operacyjny UNIX-stabilny wielozadaniowy system operacyjny, który został zmontowany jako bezpłatne i otwarte oprogramowanie do rozwoju i dystrybucji. Co oznacza, że każda osoba lub firma ma zgodę na używanie, naśladowanie, studiowanie i zmianę systemu operacyjnego Linux w dowolny sposób.
Jądro Linux
Od pierwszego wydania 17 września 1991 r. Został zwolniony przez Linusa Torvalds i wykorzystuje GNU/Linux do opisania systemu operacyjnego. Android OS na podstawie smartfonów na bazie jądra Linux sprawił, że Linux pokonał konkurencję jako największa zainstalowana baza systemu operacyjnego wszystkich systemów operacyjnych ogólnego przeznaczenia. Historię jądra Linux można znaleźć tutaj.
Jądro może być monolityczne, mikrokernelowe lub hybrydowe (jak OS X i Windows 7). Kernel Linux to monolityczne jądro systemu operacyjnego, które przypomina system UNIX. Linia systemów operacyjnych Linux powszechnie określanych jako rozkłady Linuksa oparte jest na tym jądrze. Monolityczne jądro, w przeciwieństwie do mikrokernelu, nie tylko obejmuje centralną jednostkę przetwarzającą, pamięć i IPC. Najlepiej komunikować się ze sprzętem i wykonywanie kilku zadań jednocześnie. Z tego powodu procesy tutaj reagują w szybkim tempie.
Jednak kilka niepowodzeń to ogromny zasięg instalacji i pamięci i nieodpowiednie bezpieczeństwo, ponieważ wszystko działa w trybie superwizora. Natomiast mikrokernel może powoli reagować na wywołania aplikacji, ponieważ usługi użytkownika i jądro są oddzielone. Są zatem mniejsze w porównaniu z jądrem monolitycznym. Mikrokernele są łatwo rozszerzalne, ale do napisania mikrokernelu potrzebne jest więcej kodu. Jądro Linux jest zapisane w językach programowania C i Montażu.
Relacja jądra Linux ze sprzętem
Jądro może zarządzać sprzętem systemu za pośrednictwem tego, co nazywa się przerwania. Kiedy sprzęt chce współpracować z systemem, wydano przerwanie, które przerywa procesor, który z kolei robi to samo z jądrem. Aby zapewnić synchronizację, jądro może wyłączyć przerwania, czy to jeden, czy wszystkie z nich. Jednak w systemie Linux przewodnicy nie działają w kontekście procesu, zamiast tego działają w kontekście przerwania niezwiązanego z żadnym procesem.Ten konkretny kontekst przerwania istnieje wyłącznie po to, aby umożliwić przerywnik szybko zareagować na indywidualne przerwanie, a następnie w końcu wyjść.
Co odróżnia jądro Linux od innych klasycznych jądrów Unix?
Istnieją istotne różnice między jądrem Linux a klasycznym jądrem UNIX; Jak wymieniono poniżej:
Składniki jądra Linux
Jądro jest po prostu menedżerem zasobów; Zarządzane zasobem może być procesem, pamięcią lub urządzeniem sprzętowym. Zarządza i arbitruje dostęp do zasobów między wieloma konkurującymi użytkownikami. Jądro Linux istnieje w przestrzeni jądra, poniżej przestrzeni użytkownika, w którym wykonywane są aplikacje użytkownika. Aby przestrzeń użytkownika mogła komunikować się z przestrzenią jądra, włączona jest biblioteka GNU C, która zapewnia forum dla interfejsu wywołania systemowego, aby połączyć się z przestrzenią jądra i umożliwić przejście do przestrzeni użytkownika.
Jądro Linux można podzielić na trzy poziomy pierwotne:
Perspektywa architektoniczna jądra Linux składa się z: interfejsu wywołania systemu, zarządzania procesami, wirtualnego systemu plików, zarządzania pamięcią, stosem sieci, architektury i sterowników urządzeń.
Wywoływanie i przerwania systemowe
Aplikacje przekazują informacje do jądra za pośrednictwem połączeń systemowych. Biblioteka zawiera funkcje, z którymi aplikacje działają. Biblioteki następnie za pośrednictwem interfejsu wywołania systemu instruują jądro, aby wykonało zadanie, którego chce aplikacja. Co to jest połączenie systemowe Linux?
Przerwania oferują sposób, w jaki jądro Linux zarządza sprzętem systemowym. Jeśli sprzęt musi komunikować się z systemem, przerwanie procesora wykonuje sprawę, a to jest przekazywane do jądra Linux.
Interfejsy jądra Linux
Kernel Linux oferuje różne interfejsy dla aplikacji przestrzeni użytkowników, które wykonują różne zadania i mają różne właściwości. Istnieją dwa odrębne interfejs programowania aplikacji (API); Przestrzeń-użytkownika jądra i jądro wewnętrzne. API Linux to przestrzeń jądra-użytkownika API; Daje dostęp do programów w przestrzeni użytkowników do zasobów systemowych i usług jądra. Składa się z interfejsu wywołania systemowego i podprogramów z biblioteki GNU C.
Linux ABI
Odnosi się to do przestrzeni ABI użytkownika jądra (interfejs binarny aplikacji). Wyjaśnia to jako interfejs między modułami programu. Porównując API i ABI, różnica polega na tym, że ABI są używane do dostępu do kodów zewnętrznych, które są już kompilowane, podczas gdy API są strukturami zarządzania oprogramowaniem. Definiowanie ważnego ABI jest głównie dziełem rozkładów Linuksa niż dla jądra Linux. Konkretne ABI należy zdefiniować dla każdego zestawu instrukcji, na przykład x86-64. Użytkownicy produktów Linux są zainteresowani ABIS, a nie API.
Interfejs połączenia systemowego
Jak wspomniano wcześniej, odgrywa to bardziej znaczącą rolę w jądrze. Jest to denominacja całej części wszystkich istniejących wywołań systemowych.
Biblioteka standardowa C
Wszystkie wywołania systemowe jądra znajdują się w bibliotece GNU C, podczas gdy API Linux składa się z interfejsu wywołania systemowego i biblioteki GNU C, zwanej także Glibc.
Przenośny interfejs systemu operacyjnego (POSIX)
POSIX jest zbiorowym terminem standardów utrzymywania kompatybilności między systemami operacyjnymi. Deklaruje API wraz z interfejsami użytkowymi i powłokami wiersza poleceń. API Linux, ma nie tylko użyteczne cechy zdefiniowane przez POSIX, ale także dodatkowe cechy w jądrze:
Więcej informacji o Posx Standard jest tutaj.
Poprzednie wersje jądra Linux były w taki sposób, że wszystkie ich części zostały ustalone statycznie w jednym, monolitycznym. Jednak współczesne jądra Linux mają większość ich funkcjonalności zawartej w modułach, które są dynamicznie wkładane do jądra. To w przeciwieństwie do typów monolitycznych, jest określane jako jądra modułowe. Taka konfiguracja pozwala użytkownikowi załadować lub wymienić moduły w działającym jądrze bez konieczności ponownego uruchomienia.
Moduł jądra załadowanego Linux (LKM)
Podstawowym sposobem dodania kodu w jądrze Linux jest wprowadzenie plików źródłowych do drzewa źródłowego jądra. Jednak możesz dodać kod podczas działania jądra. Dodany kod w ten sposób jest określany jako moduł jądra załadowanego. Te konkretne moduły wykonują różne zadania, ale są określone na trzy: sterowniki urządzeń, sterowniki systemu i wywołania systemowe.
Moduł ładowania jądra można porównać z rozszerzeniami jądra w innych systemach operacyjnych. Możesz umieścić moduł do jądra, albo ładując go jako LKM, albo wiązając go z jądrem podstawowym.
Korzyści z LKM w stosunku do wiązania z jądrem podstawowym:
Zastosowania LKM
W przeciwieństwie do tego, co mówi większość ludzi, kompilowanie jądra Linux jest prostym zadaniem. Poniżej znajduje się ilustracja procesu za pomocą jednej z rozkładów Linuksa: Fedora 13 kde. (Wskazane jest tworzenie kopii zapasowych danych i grub.Con Con, na wypadek, gdyby coś poszło nie tak)
TAR XVJF Linux-2.6.37.smoła.BZ2 |
Możliwe jest uaktualnienie jądra Linux ze starszej wersji do nowszej, przy jednoczesnym zachowaniu wszystkich opcji konfiguracji z wcześniejszej wersji. Aby to osiągnąć, trzeba najpierw poprzeć .konfigurator plik w katalogu źródła jądra; Jest to na wypadek, gdyby coś poszło nie tak, gdy próbuje ulepszyć twoje jądro. Kroki to:
Pobieranie nowego źródła; Programiści jądra Linux rozumieją, że niektórzy użytkownicy mogą nie chcieć pobierać pełnego kodu źródłowego aktualizacji jądra, ponieważ marnuje to czas i przepustowość. Dlatego udostępniono łatkę, która może ulepszyć starsze wydanie jądra. Użytkownicy muszą tylko wiedzieć, która łatka dotyczy konkretnej wersji, ponieważ plik łatki jądra będzie aktualizować tylko kod źródłowy z jednej konkretnej wersji. Różne pliki łatek można zastosować na następujące sposoby;
Oto bardziej szczegółowe kroki dla procesu aktualizacji jądra ze źródła na Debian oraz z wstępnie zbudowanych binarów na Centos i Ubuntu.
Kernel Linux działa głównie jako menedżer zasobów działający jako warstwa abstrakcyjna dla aplikacji. Aplikacje mają połączenie z jądrem, co z kolei oddziałuje ze sprzętem i usługami aplikacji. Linux to system wielozadaniowy umożliwiający jednoczesne wykonywanie wielu procesów. Kernel Linux jest popularny ze względu na naturę typu open source, która pozwala użytkownikom zmienić jądro na to, co jest dla nich odpowiednie, a ich sprzęt. Dlatego może być używany w różnych urządzeniach, w przeciwieństwie do innych systemów operacyjnych.
Modułowa charakterystyka jądra Linux dodaje użytkownikom więcej dreszczyku emocji. Wynika to z szerokiej gamy modyfikacji, które można tutaj wykonać bez ponownego uruchomienia systemu. Elastyczność daje użytkownikom duży pokój do aktualizacji ich wyobraźni.
Co więcej, monolityczna natura jądra jest wielką zaletą, ponieważ ma wysoką zdolność przetwarzania niż mikrokernel. Głównym niepowodzeniem w stosunku do jądra Linux jest to, że jeśli jakakolwiek z jego usług awansuje, wówczas cały system się z tym opada. Najnowsze wersje zostały zaprojektowane w sposób, w jaki dodanie nowej usługi nie ma potrzeby modyfikacji całego systemu operacyjnego. Jest to poprawa w porównaniu z poprzednimi wersjami.