Co jest w systemie operacyjnym innym niż jądro

43

Jak rozumiem, jądro wykonuje całą interakcję ze sprzętem i zarządza pamięcią, urządzeniami I / O itp. Więc jądro robi wszystko, a jednak jest tylko częścią systemu operacyjnego. Co jeszcze jest w systemie operacyjnym? Tylko dołączone aplikacje? Na przykład, co Ubuntu ma inne niż jądro? Gnome Desktop i kilka innych aplikacji?

AnkurVj
źródło

Odpowiedzi:

54

Oczywiście skorupa.

Oryginalna metafora, która przyniosła nam w tym celu słowo „jądro”, jest zbyt często zapominana. Metafora jest taka, że ​​system operacyjny to ziarno lub orzech. „Jądro” zarodka jest rdzeniem systemu operacyjnego, zapewniającym usługi systemu operacyjnego programom aplikacyjnym, otoczonym „powłoką” zarodka, którą widzą użytkownicy z zewnątrz.

Niektórzy ludzie chcą powiązać „jądro” (a nawet „powłokę”), aby być bardziej szczegółowym. Ale tak naprawdę istnieje wiele odmian w różnych systemach operacyjnych. Nie tylko te odmiany stanowią „powłokę” (która może obejmować system Solaris sh, interpreter poleceń konsoli Netware, powłokę roboczą OS / 2 i Eksploratora Windows NT), ale istnieje również duża wariancja między systemami operacyjnymi w co jest i nie jest częścią „jądra” (który może, ale nie musi, obejmować na przykład dyskowe operacje we / wy). Najlepiej pamiętać, że te terminy są metaforami .

Istnieją inne terminologie. W terminologii komputerów mainframe IBM „jądro” w metaforze „seed / nut” nazywa się programem sterującym . Inne nazwiska obejmują przełożonego , monitor , rdzeń i kierownictwo . Rdzeń to kolejna dość oczywista metafora biologiczna. Ciekawe, że tak samo jest inna nazwa. Harvey M. Deitel w swoich systemach operacyjnych nazywa program kontroli jądrem i mówi

Jądro zwykle stanowi niewielką część kodu tego, co powszechnie uważa się za cały system operacyjny [...]

Słowo „jądro” pochodzi z jądra łacińskiego i oznacza jądro orzecha (por. Łac. Nux , co oznacza „orzech”). Zatem nawet nazwanie programu sterującego „jądrem” w rzeczywistości czyni tę samą analogię do systemu operacyjnego jak orzech. Jest to analogia używana nie tylko w systemach operacyjnych. Jeśli na przykład znasz chemię, będziesz wiedział, że jądro atomowe jest otoczone przez elektrony w skorupkach .

To, co pseudonim new123456pisze poniżej, ilustruje błędy wynikające z zapomnienia początków tych metafor w zakresie, w jakim pomija się część całości, a jądro całego systemu operacyjnego. Bycie programem „użytkownika” nie czyni powłoki mniej zewnętrzną częścią systemu operacyjnego ani nie ogranicza jej do jądra. Co więcej, nie jest to pomysł tylko na DOS, który nie dotyczy Uniksa poza wersją 7, ten pomysł jest zarówno rozpowszechniony, jak i aktualny w świecie Uniksa.

(To ironiczne, że new123456myli to z DOSizmem. Metafora jądra / powłoki była dość obca DOS-owi we wczesnych latach, co faworyzowało procesor poleceń i podobne, od CP / M. Podobnie jak wcześniej CP / M, MS-DOS był podzielony do podstawowego systemu operacyjnego dysku (BDOS), podstawowego systemu wejścia-wyjścia (BIOS - nie oprogramowanie systemowe, uwaga), procesora poleceń i narzędzi porządkowych . Kod został tak naprawdę spakowany w pliki w ten sposób. To kolejny na przykład, w jaki sposób metafora jądra / powłoki tak naprawdę nie pokrywa się z rzeczywistymi podziałami w wielu systemach operacyjnych lub nie pokrywa się z nimi ).

new123456zapomina, co napisał Deitel o jądrze będącym częścią całego systemu operacyjnego. System operacyjny to zarówno jądro, jak i powłoka. To przecież metafora. Deitel też nie jest sam. Istnieje wiele książek o Uniksie wyjaśniających metaforę Uniksa jako orzecha, począwszy od lat 80. Polecam Teams Yourself FreeBSD Urbana i Tiemanna w ciągu 24 godzin (SAMS, ISBN 9780672324246), z tego prostego powodu, że na stronie 54 ma schemat ilustrujący metaforę systemu operacyjnego jako zarodka, i - co zaskakujące - jest jednym z kilka książek, aby to zrobić.

Nazwa „jądro” jest prawdopodobnie starszą nazwą; z pewnością wcześniejszy niż Unix, co sprzyja terminologii jądra / powłoki, która dziś - prawdopodobnie w niemałej części dzięki Unixowi - jest bardziej rozpowszechniona. Oto, co zawiera książka Alana C. Shawa z 1974 r. Logiczne projektowanie systemów operacyjnych (Prentice-Hall, ISBN 9780135401125), na przykład:

Ta część systemu, która stale przebywa w głównej pamięci, była historycznie nazywana jądrem . Jądro zwykle składa się z minimalnego zestawu prymitywów i procesów do zarządzania procesami, zasobami i danymi wejściowymi.
Shaw też ma schemat. ☺

JdeBP
źródło
7
Myślę, że to genialna odpowiedź, po prostu dlatego, że przypomniała mi się relacja między metaforami „shell” i „jądro”. Znałem oba, nigdy ich nie połączyłem. Znałem odpowiedź na pytanie, ale nadal udało mi się nauczyć z tej odpowiedzi czegoś. Stąd głosowanie. Dzięki!
Andrew J. Brehm,
Wahałbym się to powiedzieć, ponieważ powłoka UNIX została oderwana od samego jądra od wersji 7 i ma program dla użytkowników w każdym znaczeniu tego słowa. To, co mówisz, dotyczy prawdy DOS (co jest szczególnie okropnym wyborem projektu).
new123456,
Dobra gra, proszę pana. Proszę jednak zostawić @gdzieś, wspominając moją nazwę użytkownika, aby została opublikowana w mojej kolejce odpowiedzi.
new123456
Ocenia się, że jest tak kompleksową odpowiedzią z wieloma interesującymi historiami (nie byłem świadomy istnienia jądra jako terminu komputerowego ani jego etymologii łacińskiej). Sądzę jednak, że lepiej by go było przeczytać jako samodzielną odpowiedź, gdyby nie odnosiła się wprost do odpowiedzi innego użytkownika (teraz usuniętej).
Anthony G - sprawiedliwość dla Moniki
45

Inne części systemu operacyjnego obejmują sterowniki, które współdziałają z jądrem, istnieje kilka warstw programów pomocniczych, które zajmują się interfejsem użytkownika, obsługą sieci i innymi podstawowymi częściami systemu operacyjnego, które znajdują się między jądrem a rzeczywistą aplikacją.

Aby dać przykład, pokazałem strukturę OS X , jak widać na górze jądra (jasnoniebieski), przed tobą leży kilka warstw „podstawowej” funkcjonalności, narzędzi systemowych, usług i interfejsów API (Application Programming Interface) nawet przejść do GUI, z którym zwykle pracujesz w samych aplikacjach.

wprowadź opis zdjęcia tutaj

Większość systemów operacyjnych ma podobną strukturę, ale istnieje szeroki zakres różnic w odniesieniu do tego, ile faktycznie stanowi część jądra. Zobacz artykuł w Wikipedii na temat mikrokerneli dla porównania.

EDYCJA - aby odpowiedzieć na twój komentarz (mój komentarz był trochę długi)

Ty mógł uruchomić tylko jądro Linux, ale nie będzie w stanie osiągnąć naprawdę dużo, to wszystkie te aplikacje pomocnicze, które zapewniają cały interfejs, który można zobaczyć i wykorzystanie.

Po uruchomieniu jądra (i zainicjalizowaniu sprzętu) spróbuje przekazać go innym częściom systemu operacyjnego GNU / Linux, które zapewniają funkcjonalność uruchamiania usług (takich jak UDEV, w którym znajdują /devsię surowe interfejsy urządzeń do programów takich jak dyski twarde i porty szeregowe itp.) oraz programy do konfiguracji sieci ( dhcpcd ) i interfejsów API, takich jak X.org, aby aplikacje mogły wyświetlać okna i ikony za pośrednictwem Menedżera okien, takiego jak GNOME lub KDE .

Ale tak, możesz po prostu uruchomić samo jądro, po prostu siedziałoby tam z napisem „Uruchomiłem, co teraz?” skłonić.

Mokubai
źródło
więc czy mogę uruchomić tylko jądro i nic z dodatkowych rzeczy, które zwykle ma system operacyjny?
AnkurVj
Teoretycznie, jak sądzę, ale nie robić nic bez innych programów na wierzchu. Istnieją małe systemy operacyjne, które ludzie stworzyli dla zabawy, które są niczym innym jak jądrem, powłoką, a może kompilatorem lub asemblerem (tak naprawdę myślę, że Linux tak się zaczął).
user55325,
@AnkurVj Dodałem do mojej odpowiedzi.
Mokubai
3
Nie sądzę, że można uruchomić tylko jądro Linuksa. Jądro osiąga punkt, w którym wywołuje init, w którym to czasie system przełącza się z trybu jądra do trybu użytkownika. Jeśli init nie jest dostępny (lub fałszywy init, taki jak bash), jądro wpada w błąd i ulega awarii. Musi więc być uruchomiony jakiś proces inicjujący, aby uniknąć paniki, w tym momencie tak naprawdę nie jest to tylko działające jądro.
Joe Internet
1
Możesz uruchomić samo jądro, ale bez reszty systemu operacyjnego użytkownik nie miałby z nim żadnych interakcji.
Keltari