Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Архитектура ОС Linux.




Лабораторная работа №1. Введение в операционные системы семейства Linux.

Цель: ознакомление с семейства ОС Linux. Таблица разделов Linux. Установка ОС Linux.

GNU/Linux – общее название Unix-подобных операционных систем на основе ядра Linux, библиотек и системных программ, разработанных в рамках проекта GNU, а также другого программного обеспечения. В большинстве случаев – это ОС с открытым исходным кодом. Большинство модулей, а также ядро системы может быть получено в исходном коде. Данная ОС способна работать на множестве архитектур: x86, x86-64, SunSPARC, ARM, ATMEL AVR, PowerPC и др. Unix-подобные ОС (Linux входит в их число) имеютширокое применение во многих решениях – в оборонной и военной промышленности (ОС семейства Unix QNX), в беспроводных устройствах и роутерах, сотовых телефонах (MeeGo, Android), как основа ОС MacOS X/iOS, основа для систем виртуализации (к примеру, ESXi) и облачных вычислений.

К примеру, в TOP-500 суперкомпьютеров доля ОС Unix достигает ~99%. И лишь ~1% - ОС компании Microsoft. Однако в пользовательском сегменте на январь 2012 года:

§ по данным W3Schools: ОС Linux занимает 5%, ОС MacOS занимает 9%;

§ OSNews: Linux - 29%;

§ NetMarketShare: Linux - 0.97%, Mac - 6.00%, iOS - 4.31%, Android - 1.34%.

Стоит отличать ОС Linux от ОС Unix. Исторически, ОС Linux развился из ОС семейства Unix. Но в целом, они имеют похожую структуру и знание одного семейства не вызовет трудностей при работе с другим семейством ОС Unix (поэтому их часто называют *nix или nix). Во многом это связано со стандартизацией среди разработчиков Unix: во многом именно им принадлежат Single UNIX Specification и стандарты POSIX. Т.е., грубо говоря, всё что сказано для Linux, во многих случаях правильно для всех систем Unix.

Рисунок 1 – история Unix-систем.

Более подробно история Unix-систем представлена в приложении (п.1.).

В отличие от большинства других операционных систем, Linux не имеет единой «официальной» комплектации. Вместо этого Linux поставляется в большом количестве так называемых дистрибутивов, в которых ядро Linux соединяется с утилитами GNU и другими прикладными программами.

Большинство пользователей для установки Linux используют дистрибутивы. Дистрибутив — это не просто набор программ, а ряд решений для разных задач пользователей, объединённых едиными системами установки, управления и обновления пакетов, настройки и поддержки.

Самые распространённые в мире дистрибутивы:

§ Ubuntu — дистрибутив, основанный на Debian и быстро завоевавший популярность. Поддерживается сообществом, разрабатывается Canonical Ltd. Основная сборка ориентирована на лёгкость в освоении и использовании, при этом существуют серверная и минимальная сборки.

§ openSUSE — дистрибутив, разрабатываемый сообществом при поддержке компании Novell. Отличается удобством в настройке и обслуживании благодаря использованию утилиты YaST.

§ Fedora — поддерживается сообществом и корпорацией RedHat, предшествует выпускам коммерческой версии RHEL.

§ Debian — дистрибутив, разрабатываемый обширным сообществом разработчиков. Служит основой для создания множества других дистрибутивов. Отличается строгим подходом к включению несвободного ПО.

§ Mandriva Linux — французско-бразильский дистрибутив, объединение бывших Mandrake и Conectiva (англ.).

§ Slackware — один из старейших дистрибутивов, отличается консервативным подходом в разработке и использовании. Ориентирован на экспертов и опытных пользователей.

§ Gentoo — дистрибутив, полностью собираемый из исходных кодов. Позволяет очень гибко настраивать конечную систему и оптимизировать производительность, поэтому часто называет себя мета-дистрибутивом. Ориентирован на экспертов и опытных пользователей.

§ Arch Linux — ориентированный на применение самых последних версий программ и постоянно обновляемый, поддерживающий одинаково как бинарную, так и установку из исходных кодов и построенный на философии простоты KISS, этот дистрибутив ориентирован на компетентных пользователей, которые хотят иметь всю силу и модифицируемость Linux, но не в ущерб времени обслуживания.

§ CentOS — дистрибутив Linux, основанный на свободных исходных текстах коммерческого дистрибутива Red Hat Enterprise Linux компании Red Hat, и совместимый с ним. Достаточно гибкий дистрибутив, который можно адаптировать под любые требования.

Помимо перечисленных, существует множество других дистрибутивов, как базирующихся на перечисленных, так и созданных с нуля и зачастую предназначенных для выполнения ограниченного количества задач. Каждый из них имеет свою концепцию, свой набор пакетов, свои достоинства и недостатки. Ни один не может удовлетворить всех пользователей.

Примечание История Linux систем хорошо показана на http://upload.wikimedia.org/wikipedia/commons/8/8c/Gldt.svg

В общем случае все дистрибутивы часто делят на 2 класса:

§ RPM-based – основанные на базе менеджера пакетов RPM Package Manager и пакетов RPM;

§ DEB-based – основанные на базе менеджера пакетов deb и пакетах deb;

§ Source-based – основаны на идеи сбора пакетов из исходного кода.

Стоит отметить, что основное отличие пакеты deb и RPM отличаются по структуре хранения программы, начальным скриптам, отслеживанию связей. Наиболее распространенными являются rpm-пакеты, однако многие признают, что управление deb-пакетами зачастую удобнее из-за более качественного менеджера зависимостей между пакетами.

Для желающих досконально разобраться с Linux подойдёт любой из дистрибутивов, однако довольно часто для этой цели используются так называемые source-based дистрибутивы, то есть предполагающие самостоятельную сборку всех (или части) компонентов из исходных кодов, такие как Slackwave, Gentoo, LFS.

Правительством РФ планируется создать к 2015 году национальную программную платформу и национальную операционную систему на базе Linux (наверное… в следующей жизни… ла-ла ла-ла)

Архитектура ОС Linux.

Архитектура ОС Linux относится к макроядерным архитектурам (архитектура с монолитным ядром или гибридным ядром, см приложение, п.2). В терминах Linux «модуль» – это динамически подгружаемый вспомогательный элемент ядра. В основном модули ядра - это драйверы устройств, драйверы файловой системы и сетевых протоколов. Модули могут загружаться как явно (командами insmod и rmmod), так и не явно (демон kerneld). Драйверы устройств и расширения ядра обычно запускаются в 0-кольце защиты, с полным доступом к оборудованию. Соответственно, существует недостаток, связанный с тем, что любой сбой может привести к падению системы (ошибка: «kernel oops!»).

Графически ее можно представить следующим образом:

Рисунок 2 – архитектура Linux.

В основе любого дистрибутивов Linux лежит ядро (kernel). Ядро во всех дистрибутивах одинаковое, однако набор библиотек, приложений и их настроек зачастую очень сильно отличается, иногда даже приводя к тому, что одни и те же приложения могут быть несовместимы для разных дистрибутивов с одинаковым ядром.

Ниже приведены несколько иные взгляды на ядро Linux (еще один наиболее полный взгляд на ядро вынесен в приложение, п.4):

Рисунок 3 – еще одна архитектура Linux в виде иерархии компонентов.

Рисунок 4 –подсистемы ядра Linux.

 

Следует отметить, что ядро Linux является динамическим (поддерживает добавление и удаление программных компонентов без остановки системы). Эти компоненты называются динамически загружаемыми модулями ядра. Их можно вводить в систему при необходимости, как во время загрузки (если найдено конкретное устройство, для которого требуется такой модуль), так и в любое время по желанию пользователя. Последняя версия ядра Linux имеет нумерацию 3.2 (см. приложение, п. 3).

Рассмотрим подсистемы подробнее.

Интерфейс системных вызовов

SCI - это тонкий уровень, предоставляющий средства для вызова функций ядра из пространства пользователя. Как уже говорилось, этот интерфейс может быть архитектурно зависимым, даже в пределах одного процессорного семейства. SCI фактически представляет собой службу мультиплексирования и демультиплексирования вызова функций. Реализация SCI находится в./linux/kernel, а архитектурно-зависимая часть - в./linux/arch.

Управление процессами

Управление процессами сконцентрировано на исполнении процессов. В ядре эти процессы называются потоками (threads); они соответствуют отдельным виртуализованным объектам процессора (код потока, данные, стек, процессорные регистры). В пространстве пользователя обычно используется термин процесс, хотя в реализации Linux эти две концепции (процессы и потоки) не различают. Ядро предоставляет интерфейс программирования приложений (API) через SCI для создания нового процесса (порождения копии, запуска на исполнение, вызова функций Portable Operating System Interface [POSIX]), остановки процесса (сигналы kill, exit), взаимодействия и синхронизации между процессами (сигналы или механизмы POSIX).

Примечание Windows – православная ОС, в ней есть иконки и службы. Linux – сатанинская ОС, в ней есть демоны и зомби.   В рамках unix-систем существует понятие процессов-демонов (daemon) и процессов-зомби (zombie).
Задание Найдите, что такое «демон» и «зомби» в понятиях unix-систем?

Еще одна задача управления процессами - совместное использование процессора активными потоками. В ядре реализован новаторский алгоритм планировщика, время работы которого не зависит от числа потоков, претендующих на ресурсы процессора. Название этого планировщика - O(1) - подчеркивает, что на диспетчеризацию одного потока затрачивается столько же времени, как и на множество потоков. Планировщик O(1) также поддерживает симметричные многопроцессорные конфигурации (SMP). Исходные коды системы управления процессами находятся в./linux/kernel, а коды архитектурно-зависимой части - в./linux/arch).

Управление памятью

Другой важный ресурс, которым управляет ядро - это память. Для повышения эффективности, учитывая механизм работы аппаратных средств с виртуальной памятью, память организуется в виде т.н. страниц (в большинстве архитектур размером 4 КБ, однако стоит обратить внимание на то, что потенциально возможно использование разных механизмов управления памятью). В Linux имеются средства для управления имеющейся памятью, а также аппаратными механизмами для установления соответствия между физической и виртуальной памятью.

Однако управление памятью - это значительно больше, чем просто управление буферами по 4 КБ. Linux предоставляет абстракции над этими 4 КБ буферами, например, механизм распределения slab allocator. Этот механизм управления базируется на 4 КБ буферах, но затем размещает структуры внутри них, следя за тем, какие страницы полны, какие частично заполнены и какие пусты. Исходные коды управления памятью находятся в./linux/mm.

Виртуальная файловая система

Еще один интересный аспект ядра Linux - виртуальная файловая система (VFS), которая предоставляет общую абстракцию интерфейса к файловым системам. VFS предоставляет уровень коммутации между SCI и файловыми системами, поддерживаемыми ядром.

На верхнем уровне VFS располагается единая API-абстракция таких функций, как открытие, закрытие, чтение и запись файлов. На нижнем уровне VFS находятся абстракции файловых систем (к примеру, ntfs-3g или ext2/3/4), которые определяют, как реализуются функции верхнего уровня. Они представляют собой подключаемые модули для конкретных файловых систем (которых существует более 50). Исходные коды файловых систем находятся в./linux/fs.

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

Рисунок 5 – структура работы подсистемы дисковых устройств

 

Сетевой стек

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

Уровень сокетов представляет собой стандартный API к сетевой подсистеме. Он предоставляет пользовательский интерфейс к различным сетевым протоколам. Уровень сокетов реализует стандартизованный способ управления соединениями и передачи данных. Исходные коды сетевой подсистемы ядра находятся в каталоге./linux/net.

Драйверы устройств

Подавляющее большинство исходного кода ядра Linux приходится на драйверы устройств, обеспечивающие возможность работы с конкретными аппаратными устройствами. В дереве исходных кодов Linux имеется подкаталог драйверов, в котором, в свою очередь, имеются подкаталоги для различных типов поддерживаемых устройств, таких как Bluetooth, I2C, последовательные порты и т.д. Исходные коды драйверов устройств находятся в./linux/drivers.

Архитектурно-зависимый код

Хотя основная часть Linux независима от архитектуры, на которой работает операционная система, в некоторых элементах для обеспечения нормальной работы и повышения эффективности необходимо учитывать архитектуру. В подкаталоге./linux/arch находится архитектурно-зависимая часть исходного кода ядра, разделенная на ряд подкаталогов, соответствующих конкретным архитектурам. В случае обычного настольного ПК используется каталог i386. Подкаталог для каждой архитектуры содержит ряд вложенных подкаталогов, относящихся к конкретным аспектам ядра, таким как загрузка, ядро, управление памятью и т.д. Исходные коды архитектурно-зависимой части находятся в./linux/arch.

Виртуализация

Данный компонент не выделен на рисунке 4, но, в виду высокой актуальности, на сегодняшний день игнорировать данный механизм глупо.

Еще одно недавнее усовершенствование Linux - возможность ее использования в качестве операционной системы для других операционных систем (т.н. гипервизора). На текущий момент в ядре Linux поддерживается несколько гипервизоров: HyperV, ESXi, KVM (Kernel-based Virtual Machine). В результате этой модификации в пространстве пользователя реализован новый интерфейс, позволяющий исполнять поверх ядра с поддержкой KVM другие операционные системы. В таком режиме можно не только исполнять другие экземпляры Linux, но и виртуализовать Microsoft® Windows®. Единственное ограничение состоит в том, что используемый процессор должен поддерживать новые инструкции виртуализации.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных