Что есть в операционной системе, кроме ядра

43

Насколько я понимаю, ядро ​​выполняет все взаимодействие с оборудованием и управляет памятью, устройствами ввода-вывода и т. Д. Итак, ядро ​​все делает, но это только часть операционной системы. Так что еще есть в ОС? Только приложения, которые идут в комплекте с ним? Например, что в Ubuntu есть, кроме ядра? Рабочий стол Gnome и несколько других приложений?

AnkurVj
источник

Ответы:

54

Оболочка, конечно.

Первоначальная метафора, которая дала нам слово «ядро» для этого, во-первых, слишком часто забывается. Метафора заключается в том, что операционная система - это семя или орех. «Ядро» начального уровня - это ядро ​​операционной системы, предоставляющее сервисы операционной системы приложениям, которое окружено «оболочкой» начального уровня, которую пользователи видят извне.

Некоторые люди хотят связать «ядро» (и, действительно, «оболочку»), чтобы быть более конкретным, чем это. Но на самом деле существует много вариаций в разных операционных системах. Не в последнюю очередь эти вариации представляют собой то, что составляет «оболочку» (которая может варьироваться от Solaris shчерез консольный интерпретатор команд Netware до оболочки Workplace Shell в OS / 2 и проводника Windows NT), но существует также большое расхождение от одной операционной системы к другой в что является и не является частью «ядра» (которое может включать или не включать, например, дисковый ввод-вывод). Лучше помнить, что эти термины являются метафорами .

Есть и другие термины. В терминологии мэйнфреймов IBM «ядро» в метафоре seed / nut называется управляющей программой . Другие имена включают руководителя , монитор , ядро и руководителя . Ядро - еще одна довольно очевидная биологическая метафора. Интересно, что тоже другое имя. Харви М. Дейтель в своих операционных системах называет управляющую программу ядром и говорит:

Ядро обычно представляет собой небольшую часть кода того, что обычно считается всей операционной системой [...]

Слово «ядро» происходит от латинского ядра и означает ядро ​​ореха (ср. Латинский nux , что означает «орех»). Таким образом, даже называя управляющую программу «ядром», мы фактически проводим аналогию с операционной системой. Это аналогия, которая используется не только для операционных систем. Например, если вы знакомы с химией, вы будете знать, что атомное ядро окружено электронами в оболочках .

То, что псевдоним new123456пишет ниже, иллюстрирует ошибки, возникающие из-за того, что вы забыли происхождение этих метафор, до такой степени, что кто-то ошибочно принимает часть за целое и ошибочно принимает ядро ​​за всю операционную систему. Будучи программой "пользовательского пространства", оболочка не становится ни меньше за пределами операционной системы, ни меньше, чем оболочка ядра. Более того, идея далеко не единственная для DOS, которая не применима к Unix после версии 7, эта идея широко распространена и актуальна в мире Unix.

( new123456Ирония в том, что он принимает это за DOSism. Метафора ядра / оболочки была довольно чужда DOS в первые годы ее существования, которая предпочитала процессор команд и тому подобное, из CP / M. Как и CP / M до этого, MS-DOS была разделена в основную дисковую операционную систему (BDOS), базовую систему ввода-вывода (BIOS - не системная прошивка, обратите внимание), командный процессор и служебные утилиты . Код фактически был разделен на файлы таким образом. Это еще один Фактически, пример того, как метафора ядро / оболочка на самом деле не охватывает или полностью не соответствует фактическим подразделениям во многих операционных системах.)

new123456забывает, что Дейтель писал о ядре, являющемся частью общей операционной системы. Операционная система - это и ядро, и оболочка. Это, в конце концов, метафора. Дейтель тоже не одинок. Существует множество книг Unix, объясняющих метафору Unix-as-a-nut, начиная с 1980-х годов. Я рекомендую Urban и Tiemann's Teach Yourself FreeBSD за 24 часа (SAMS, ISBN 9780672324246) по той простой причине, что на стр. 54 она имеет диаграмму, иллюстрирующую метафору «операционная система как семя», и - что удивительно - является одной из несколько книг для этого.

Название «ядро», вероятно, является более старым именем; безусловно, предшествующий Unix, который поддерживает терминологию ядра / оболочки, которая сегодня - вероятно, в немалой степени благодаря Unix - является более распространенной. Вот что написано в книге Алана Шоу 1974 года «Логическое проектирование операционных систем» (Prentice-Hall, ISBN 9780135401125), например:

Та часть системы, которая постоянно находится в главном хранилище, исторически называлась ядром . Ядро обычно состоит из минимального набора примитивов и процессов для управления процессами, ресурсами и вводом-выводом.
У Шоу тоже есть диаграмма. ☺

JdeBP
источник
7
Я думаю, что это блестящий ответ, просто потому, что он напомнил мне отношения между метафорами «оболочка» и «ядро». Я знал оба, я никогда не связывал их. Я знал ответ на вопрос, но все же сумел кое-что узнать из этого ответа. Отсюда и голос. Благодарность!
Эндрю Дж. Брем
Я бы не стал этого говорить, потому что оболочка UNIX была абстрагирована от самого ядра начиная с версии 7, и с тех пор имеет пользовательскую программу во всех смыслах этого слова. Однако то, что вы говорите, верно для DOS (что является особенно ужасным выбором дизайна).
new123456
Хорошо сыграно, сэр. Однако, пожалуйста, оставляйте @где-нибудь, когда упоминаете мое имя пользователя, чтобы оно было опубликовано в моей очереди ответов.
new123456
Голосовали за такой всеобъемлющий ответ с большим количеством интересной истории (я не знал о ядре как о компьютерном термине - или его латинской этимологии). Тем не менее, я думаю, что он будет лучше восприниматься как отдельный ответ, если он явно не ссылается на ответ другого пользователя (теперь удаленный).
Энтони Дж. - правосудие для Моники
45

Другие части операционной системы включают в себя драйверы, которые взаимодействуют с ядром, есть несколько уровней вспомогательных программ, которые имеют дело с пользовательским интерфейсом, сетью и другими основными частями ОС, которые находятся между ядром и реальным приложением.

Чтобы привести пример, я показал структуру OS X , как вы можете видеть наверху Ядра (светло-синий) лежит несколько уровней «основной» функциональности, системных инструментов, сервисов и API (интерфейс прикладного программирования) перед вами. даже добраться до GUI, с которым вы обычно работаете в реальных приложениях.

введите описание изображения здесь

Большинство операционных систем имеют схожую структуру, но существует широкий диапазон различий в том, сколько фактически является частью ядра. См. Статью Wikipedia о микроядрах для сравнения.

РЕДАКТИРОВАТЬ - Чтобы ответить на ваш комментарий (мой комментарий стал немного длинным)

Вы можете загрузить только ядро ​​Linux, но вы не сможете достичь многого, это все те вспомогательные приложения, которые предоставляют весь интерфейс, который вы видите и используете.

После загрузки ядра (и инициализации аппаратного обеспечения) оно будет пытаться передать другим частям операционной системы GNU / Linux, которые предоставляют функциональные возможности для запуска служб (например, UDEV, который заполняется /devнеобработанными интерфейсами устройств для программ, использующих такие вещи, как жесткие диски и последовательные порты и т. д.) и программы для настройки сети ( dhcpcd ) и API-интерфейсы, такие как X.org, для приложений, чтобы они могли отображать окна и значки с помощью диспетчера окон, такого как GNOME или KDE .

Но да, вы можете просто загрузить само ядро, оно просто будет сидеть с надписью «Я загрузился, что теперь?» незамедлительный.

Мокубай
источник
так я могу загрузить только ядро и ничего из того, что обычно есть в ОС?
AnkurVj
В теории, я думаю, но это не будет делать что - либо без других программ поверх него. Есть крошечные операционные системы, которые люди создавали для удовольствия, которые являются ничем иным, как ядром, оболочкой и, возможно, компилятором или ассемблером (я думаю, что Linux начинал именно так).
user55325
@AnkurVj Я добавил к своему ответу.
Мокубай
3
Я не думаю, что вы можете загрузить только ядро ​​Linux. Ядро достигает точки, где оно вызывает init, и тогда система переключается из режима ядра в режим пользователя. Если init не доступен (или поддельный init, как bash), ядро ​​паникует и вылетает. Таким образом, должен быть запущен некоторый процесс инициализации, чтобы избежать паники, и в этот момент это действительно не просто работающее ядро.
Джо Интернет
1
Вы можете загрузить чистое ядро, но без остальной части ОС пользователь не будет взаимодействовать с ним.
Келтари