Архитектура ОС Linux. Ядро, файловая система, компоненты.

nid#126

Реклама

Операционная система GNU/Linux, которую чаще называют просто "Linux", на самом деле состоит из двух основных частей: собственно ядра системы - Linux и набора программ и инструментов проекта GNU, включающего в себя элементы звуковой и графической подсистем, рабочие столы, различные прикладные приложения и т.п.

Ядро Linux и его загрузка

Linux - монолитное (большое) ядро операционной системы. Оно включает в себя все необходимые для работы системы драйверы (графические X11 и звуковые ALSA в т.ч.) и функционирует логически целостно. Однако, Linux так же поддерживает и динамическое, "горячее", подключение внешних модулей для поддержки оборудования, в виде которых и распространяются, например, закрытые (проприетарные) драйверы для видеокарт NVidia и AMD/ATI.

Загрузкой ядра Linux при старте операционной системы в большинстве случаев управляет универсальный загрузчик Grub (хотя встречаются и конфигурации с загрузчиком LILO), код которого может записываться как в загрузочный сектор основного носителя данных, так и одного из его логических разделов (для активации загрузочным флагом впоследствии). Файлы конфигурации Grub при этом как правило хранятся в "корневом" разделе установленной операционной системы, в папке /boot/grub. Таким образом вы можете использовать несколько полностью независимых установок Grub, Linux, других загрузчиков и ОС, при необходимости.


Список всех загруженных ядром модулей устройств можно увидеть, набрав в консоли lsmod, а их принудительная загрузка и выгрузка производится при помощи программы modprobe.

Файловая система

При запуске, ядро Linux создает виртуальное адресное пространство, файловую систему с четким разграничением прав для доступа ко всем внутренним ресурсам. Для взаимодействия с физическими ресурсами компьютера Linux создаёт в этой файловой системе специальные "файлы-порты", адреса которых начинаются обычно с /dev (от слова device, англ. "устройство") - по одному для каждого из устройств вычислительной машины и его подсистем, включая различные накопители данных и логические разделы, содержащиеся на них.

Для дисковых накопителей и их логических разделов сегодня чаще всего в различных дистрибутивах GNU/Linux по-умолчанию используются адреса устройств вида /dev/sdX и /dev/sdX*, соответственно (где "X" - буквенное обозначение устройства, а "*" - номер раздела на нём). Например: /dev/sda1 - первый (1) раздел на первом (a) диске.

Будь то жёсткий, оптический компакт-диск, USB-карточка, подключённая к системе, или сетевой ресурс данных, логические разделы какого-либо из этих накопителей присоединяются к основной файловой системе при помощи специального механизма "монтирования" по назначенным для них адресам (в так называемых "точках монтирования"). Именно так при загрузке Linux сначала монтирует в виртуальный адресный корень ("/") основной ("корневой") раздел данных, а потом, при необходимости, и дополнительные с остальным содержимым - в отдельные папки.

В отдельном разделе в принципе может храниться и любая из системных директорий Linux: /boot с настройками Grub и ядром Linux - для надежности и безопасности, /usr - для контроля размера установленного прикладного программного обеспечения, или /home - для независимости настроек пользователей от системы при её обновлении, например. Внешние носители данных, любые несистемные логические разделы накопителей данных обычно подключаются внутри папки /media.

Современные рабочие столы GNU/Linux, Gnome, KDE и т.п., представляют пользователю подключенные логические разделы в привычном виде иконок и пунктов меню, однако в любом файловом менеджере это - всего лишь ссылки на реальные системные адреса.

При переполнении физической оперативной памяти, или использовании режима "сна" (с сохранением данных ОЗУ на диск), Linux может использовать так называемый swap-раздел со специальной файловой системой. Его создание на диске и использование не обязательно, но необходимо для работы режима "сна".


Список всех логических разделов на всех подключённых к системе носителях данных вы можете посмотреть, вызвав в консоли команду: fdisk -l, например (может потребовать прав администратора). Помимо того, логические разделы могут быть представлены в системе и использоваться в различных конфигурациях, включая /etc/fstab и Grub, в виде символьных ссылок, содержащих в своих названиях уникальные номера ID каждого из томов, не изменяющиеся в зависимости от размера и расположения логического раздела на диске: смотрите dir /dev/disk/*.
Конфигурация подключения виртуальных, сетевых и локальных файловых систем, включая swap, в GNU/Linux записывается в файл /etc/fstab, а записи о подключённых в данный момент - хранятся в динамически обновляемом файле /etc/mtab.

Среда GNU

Поверх ядра Linux функционирует оболочка GNU - многоуровневая программная среда, достижение загрузки каждого из уровней которой характеризуется запуском соответствующего набора системных служб. Управление ими, просмотр и редактирование таблиц их запуска в разных дистрибутивах могут осуществляться по-разному, в том числе и силами специализированных графических инструментов, таких как модуль управления системными службами YaST в openSUSE.

Первый уровень загрузки GNU - однопользовательский командный терминал, состоящий из нескольких текстовых консолей для работы с системой, переключение между которыми может осуществляться нажатием сочетания клавиши Alt (или Ctrl+Alt+... - при работе в X11) с каким-либо из F*: Alt+F1, Alt+F2 и т.д.

Первые шесть консолей обычно зарезервированы для прямого использования, а седьмая и следующие - для запуска графических систем x.org-X11 локальных пользователей при достижении пятого загрузочного уровня. В зависимости от режима работы операционной системы, при установке или запуске например, в виртуальные консоли может производиться вывод отладочный информации о работе какой-либо из подсистем GNU/Linux.

Второй уровень загрузки GNU/Linux - многопользовательский терминал, третий - многопользовательский с поддержкой сети. Четвёртый уровень - промежуточный, а первый и шестой - выключения и перезагрузки системы, соответственно.

Гибкость такой системы состоит в том, что каждый из её программных компонентов, используемых на разных уровнях загрузки, может быть независимо запущен, остановлен, или заменён. Кроме того, многие программы GNU/Linux, в отличие о тех, что были созданы с использованием закрытой модели развития, используют общие наборы открытых библиотек и даже работают в симбиозе: необходимые программам для работы компоненты называют "зависимостями".

Такая архитектура, помимо прочего, позволяет значительно снизить объём памяти, занимаемой программами на жестком диске при установке, и, часто, в оперативной памяти при их работе. Именно такая архитектура даёт возможность работы с разными сборками ядер Linux и сред GNU, разнообразными рабочими столами (Gnome, KDE, XFCE и т.п.), мультимедийными системами и мультимедиа-проигрывателями, офисными и графическими приложениями - всем разнообразием программного обеспечения и конфигураций GNU/Linux.


Смена уровня работы системы в большинстве дистрибутивов GNU/Linux выполняется командой вида init номер с номером уровня в качестве аргумента, выполненной от имени администратора: например, init 3 - для остановки всех графических серверов и перехода в текстовый режим.

Комментарии

Отправить комментарий

  • Доступны HTML теги: <b> <i> <u> <s> <kbd> <var> <code> <samp> <q> <cite> <ul> <ol> <li> <p> <br>
  • Строки и параграфы переносятся автоматически.
  • Шаблоны [цель|текст] обрабатываются как ссылки. Стандартный индикатор цели - ID материала.