41

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

2 ответа2

50

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

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

Некоторые люди хотят связать "ядро" (и, действительно, "оболочку"), чтобы быть более конкретным, чем это. Но на самом деле есть много вариаций в разных операционных системах. Не в последнюю очередь эти изменения является то , что представляет собой "оболочку" (которая может варьироваться от sh Solaris' через Netware в командной консоли интерпретатора для OS/2 Workplace Shell и Проводник 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), например:

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .