Учебно-практическое пособие Москва 2009

Вид материалаУчебно-практическое пособие

Содержание


Современные системы UNIX
System V Release 4 (SVR4)
Solaris 2.x
Linux История возникновения
Модульная структура
Динамическое связывание.
Стековая организация.
Подобный материал:
1   2   3   4   5   6   7   8

Описание

Рис. 2.16 дает более полное представление о системе. Программы пользователя могут вызывать сервисы операционной системы непосредственно либо С помощью библиотечных программ. Интерфейс системных вызовов позволяет программам высших уровней получить доступ к определенным функциям ядра. Нижние уровни операционной системы содержат простые программы, которые непосредственно взаимодействуют с аппаратным обеспечением. Между этими уровнями находятся компоненты системы; их можно разделить на две основные части, одна из которых относится к управлению процессами, а другая — к вводу-выводу. Подсистема управления процессами отвечает за управление памятью, распределение ресурсов между процессами, диспетчеризацию, синхронизацию и за взаимодействие разных процессов. Файловая система производит обмен данными между памятью и внешними устройствами либо в виде потоков символов, либо в виде блоков с использованием различных драйверов устройств. Поблочная передача данных осуществляется с участием дискового кэша — системного буфера основной памяти, являющегося промежуточным звеном между адресным пространством пользователя и внешним устройством.



Рис. 2,16. Ядро традиционной системы UNIX

Современные системы UNIX

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

А теперь рассмотрим некоторые примеры современных систем UNIX.

System V Release 4 (SVR4)

Версия SVR4, разработанная совместно компаниями AT&T и Sun Microsystems, сочетает в себе особенности версий SVR3, 4.3 BSD, Microsoft Xenix System V и SunOS. Ядро System V было почти полностью переписано, в результате чего появилась очищенная от всего лишнего, хотя и сложная реализация. Среди новых возможностей этой версии следует отметить поддержку обработки данных в реальном времени, наличие классов планирования процессов, динамически распределяемые структуры данных, управление виртуальной памятью, наличие виртуальной файловой системы и ядра с вытеснением.

При создании системы SVR4 объединились усилия как коммерческих, так и академических разработчиков; разработка системы велась, чтобы обеспечить унифицированную платформу для коммерческих реализаций операционной системы UNIX. Эта цель была достигнута, a SVR4 на данный момент, по-видимому, является важнейшей версией UNIX. В ней удачно (с точки зрения конкурентоспособности) сочетаются наиболее важные возможности, реализованные во всех предыдущих системах UNIX. Система SVR4 может работать на компьютерах самых разнообразных типов, начиная с машин, в которых установлены 32-разрядные процессоры, и заканчивая суперкомпьютерами.

Solaris 2.x

Система Solaris— это версия операционной системы UNIX, разработанная фирмой Sun на основе SVR4. Реализации системы Solaris версии 2 обладают всеми возможностями системы SVR4, а также некоторыми дополнительными, такими, как полная вытесняемость, наличие многопоточного ядра, полнофункциональная поддержка SMP и объектно-ориентированный интерфейс файловых систем, Solaris — это наиболее широко применяемая и пользующаяся коммерческим успехом реализация операционной системы UNIX.

4.4BSD

Важную роль в развитии теории устройства операционных систем сыграла серия версий системы UNIX, разработанных в Калифорнийском университете. Серия 4.xBSD широко используется в академических организациях; она послужила основой для создания многих коммерческих продуктов UNIX. По мнению автора, именно благодаря версиям этой серии UNIX приобрела свою популярность, а многие улучшения этой операционной системы впервые появились в версиях BSD.

Последней версией этой серии, выпущенной в Беркли, является система 4.4BSD. Эта версия является основным обновлением версии 4.3BSD, куда вошли новая система управления виртуальной памятью, ядро с измененной структурой, а также длинный список улучшений других возможностей.


Linux

История возникновения

Система Linux возникла как вариант операционной системы UNIX, предназначенный для персональных компьютеров с IBM-совместимой архитектурой. Первоначальная версия была написана Линусом Торвальдсом (Linus Torvalds), финским студентом, изучающим теорию вычислительных машин. В 1991 году Торвальдс представил в Internet первую версию системы Linux. С тех пор множество людей, сотрудничая посредством Internet, развивают Linux под руководством ее создателя. Благодаря тому что система Linux является бесплатной и можно беспрепятственно получить ее исходный код, она стала первой альтернативой рабочим станциям UNIX, предлагавшимся фирмами Sun Microsystems, Digital Equipment Corp (теперь Compaq) и Silicon Graphics. На сегодняшний день Linux является полнофункциональной системой семейства UNIX, способной работать на всех этих и других платформах.

Модульная структура

Ядра большинства версий операционной системы UNIX являются монолитными. Напомним, что монолитное ядро — это ядро, которое виртуально включает в себя все возможности операционной системы в виде одного большого блока кода, который запускается как единый процесс в едином адресном пространстве. Все функциональные компоненты такого ядра имеют доступ ко всем его внутренним структурам данных и ко всем программам. При внесении изменений в любую из частей типичной монолитной операционной системы все ее модули и подпрограммы необходимо повторно компоновать и переустанавливать, а перед тем как изменения вступят в силу, систему нужно будет перезагрузить. В результате все модификации, такие, как добавление драйвера нового устройства или новых функций файловой системы, усложняются. Особенно остро эта проблема стоит в системе Linux, глобальную разработку которой выполняют объединенные на добровольных началах группы независимых программистов.

Для решения этой проблемы система Linux организована в виде набора относительно независимых блоков, которые называются загружаемыми модулями (loadable modules). Загружаемые модули Linux имеют две отличительные особенности.
  • Динамическое связывание. Любой модуль ядра может быть загружен в память и подсоединен к ядру в то время, когда само ядро уже находится в памяти и выполняется. Любой модуль может быть также отсоединен от ядра и удален из памяти в любой момент времени.
  • Стековая организация. Модули организованы в виде определенной иерархической структуры. Отдельные модули могут выполнять роль библиотек при обращении к ним модулей более высоких уровней в рамках этой структуры; они сами также могут обращаться к модулям на более низких уровнях.

Динамическое связывание облегчает настройку системы и экономит память, которую занимает ядро. В системе Linux программа пользователя или сам пользователь может загружать или выгружать модули с помощью команд insmod и rmmod. Само ядро управляет работой отдельных функций и по мере надобности загружает нужные модули или выгружает те, нужда в которых уже отпала. Кроме того, стековая организация позволяет задавать зависимости модулей, что дает два основных преимущества.
  1. Код, являющийся общим для набора однотипных модулей (например, драйверы похожих устройств), можно поместить в один модуль, что позволяет сократить количество повторений.
  2. Ядро может проверить наличие в памяти нужных модулей, воздерживаясь от выгрузки модуля, который нужен для работы других, зависимых от него, и загружая вместе с новым требуемым модулем все необходимые дополнительные модули.