Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 10
Текст из файла (страница 10)
Операционные системы дляраспределенных компьютеров можно вчерне разделить на две категории — сильносвязанные и слабо связанные системы. В сильно связанных системах операционная система в основном старается работать с одним, глобальным представлениемресурсов, которыми она управляет. Слабо связанные системы могут представляться несведущему человеку набором операционных систем, каждая из которых работает на собственном компьютере.
Однако эти операционные системыфункционируют совместно, делая собственные службы доступными другим.Это деление на сильно и слабо связанные системы связано с классификациейаппаратного обеспечения, приведенной в предыдущем разделе. Сильно связанные операционные системы обычно называются распределенными операционными системами (Distributed Operating System, DOS) и используются для управления мультипроцессорными и гомогенными мультикомпьютерными системами.Как и у традиционных однопроцессорных операционных систем, основная цельраспределенной операционной системы состоит в сокрытии тонкостей управления аппаратным обеспечением, которое одновременно используется множествомпроцессов.Слабо связанные сетевые операционные системы (Network Operating Systems,NOS) используются для управления гетерогенными мультикомпьютерными системами. Хотя управление аппаратным обеспечением и является основной задачей сетевых операционных систем, они отличаются от традиционных.
Это отличие вытекает из того факта, что локальные службы должны быть доступнымидля удаленных клиентов. В следующих пунктах мы рассмотрим в первом приближении те и другие.Чтобы действительно составить распределенную сргстему, служб сетевой операционной системы недостаточно. Необходимо добавить к ним дополнительныекомпоненты, чтобы организовать лучшую поддержку прозрачности распределения.
Этими дополнительными компонентами будут средства, известные как системы промежуточного уровня (middleware), которые и лежат в основе современныхраспределенных систем. Средства промежуточного уровня также обсуждаютсяв этой главе. В табл. 1.3 представлены основные данные по распределенным и сетевым операционным системам, а также средствам промежуточного уровня.46Глава 1. ВведениеТаблица 1.3. Краткое описание распределенных и сетевых операционных систем,а также средств промежуточного уровняСистемаОписаниеОсновное назначениеРаспределенныеоперационныесистемыСетевыеоперационныесистемыСильно связанные операционные системыдля мультипроцессорови гомогенных мультикомпьютерных системСлабо связанные операционные системыдля гетерогенных мультикомпьютерныхсистем (локальных или глобальных сетей)Сокрытие и управлениеаппаратнымобеспечениемПредоставлениелокальных службудаленным клиентамСредствапромежуточногоуровняДополнительный уровень поверх сетевыхоперационных систем, реализующийслужбы общего назначенияОбеспечениепрозрачностираспределения1.4.1.
Распределенные операционные системыСуществует два типа распределенных операционных систем. Мультипроцессорпая операциоппая система {multiprocessor operating system) управляет ресурсамимультипроцессора. Мулътикомпыотерная операциоппая система {multicomputeroperating system) разрабатывается для гомогенных мультикомпыотеров. Функциональность распределенных операционных систем в основном не отличаетсяот функциональности традиционных операционных систем, предназначенных длякомпьютеров с одним процессором за исключением того, что она поддерживаетфункционирование нескольких процессоров.
Поэтому давайте кратко обсудимоперационные системы, предназначенные для обыкновенных компьютеров с одним процессором. Введение в операционные системы для одного и несколькихпроцессоров можно отыскать в [447].Операционные системы для однопроцессорныхкомпьютеровОперационные системы традиционно строились для управления компьютерамис одним процессором. Основной задачей этих систем была организация легкогодоступа пользователей и приложений к разделяемым устройствам, таким какпроцессор, память, диски и периферийные устройства.
Говоря о разделении ресурсов, мы имеем в виду возможность использования одного и того же аппаратного обеспечения различными приложениями изолированно друг от друга. Дляприложения это выглядит так, словно эти ресурсы находятся в его полном распоряжении, при этом в одной системе может выполняться одновременно несколькоприложений, каждое со своим собственным набором ресурсов. В этом смысле говорят, что операционная система реализует виртуальпую машипу {virtual machine), предоставляя приложениям средства мультизадачности.Важным аспектом совместного использоварнш ресурсов в такой виртуальноймашине является то, что приложения отделены друг от друга.
Так, невозможнаситуация, когда при одновременном исполнении двух приложений, Л и В, приложение Л может изменить данные приложения В, просто работая с той частьюобщей памяти, где эти данные хранятся. Также требуется гарантировать, что1.4. Концепции программных решений47приложения смогут использовать предоставленные им средства только так, какпредписано операционной системой. Например, приложениям обычно запрещено копировать сообщения прямо в сетевой интерфейс.
Взамен операционнаясистема предоставляет первичные операции связи, которые можно использоватьдля пересылки сообщений между приложениями на различных машинах.Следовательно, операционная система должна полностью контролировать использование и распределение аппаратных ресурсов. Поэтому большинство процессоров поддерживают как минимум два режима работы. В реэюиме ядра {kernelmode) выполняются все разрешенные инструкции, а в ходе выполнения доступнався имеющаяся память и любые регистры. Напротив, в пользовательском режиме{user mode) доступ к регистрам и памяти ограничен. Так, приложению не будетпозволено работать с памятью за пределами набора адресов, установленного длянего операционной системой, или обращаться напрямую к регистрам устройств.На время выполнения кода операционной системы процессор переключаетсяв режим ядра.
Однако единственный способ перейти из пользовательского режимав режим ядра — это сделать системный вызов, реализуемый через операционнуюсистему. Поскольку системные вызовы — это лишь базовые службы, предоставляемые операционной системой, и поскольку ограничение доступа к памятии регистрам нередко реализуется аппаратно, операционная система в состоянииполностью их контролировать.Существование двух режимов работы привело к такой организации операционных систем, при которой практически весь их код выполняется в режиме ядра.Результатом часто становятся гигантские монолитные программы, работающиев едином адресном пространстве. Оборотная сторона такого подхода состоит втом, что перенастроить систему часто бывает нелегко. Другими словами, заменить или адаптировать компоненты операционной системы без полной перезагрузки, а возможно и полной перекомпиляции и новой установки очень трудно.С точки зрения открытости, проектирования программ, надежности или легкости обслуживания монолитные операционные системы — это не самая лучшаяиз идей.Более удобен вариант с организацией операционной системы в виде двух частей.
Одна часть содержит набор модулей для управления аппаратным обеспечением, которые прекрасно могут выполняться в пользовательском режиме. Например, управление памятью состоит в основном из отслеживания, какие блокипамяти выделены под процессы, а какие свободны. Единственный момент, когдамы нуждаемся в работе в режиме ядра, — это установка регистров блока управления памятью.Вторая часть операционной системы содержит небольшое микроядро {microkernel), содержащее исключительно код, который выполняется в режиме ядра.На практике мР1кроядро должно содержать только код для установки регистровустройств, пере1сяючения процессора с процесса на процесс, работы с блоком управления памятью и перехвата аппаратных прерываний. Кроме того, в нем обычносодержится код, преобразующий вызовы соответствующих модулей пользовательского уровня операционной системы в системные вызовы и возвращающийрезультаты. Такой подход приводит к организации, показанной на рис.
1.8.48Глава 1. ВведениеМежду модулями отсутствует непосредственный обмен даннымиИнтерфейс _операционнойсистемыПриложениеМодульпамяти^АМодульпроцесса^А ь-ФайловыймодульI Пользовательскийрежим_г—А—hРежим ядраСистемныйвызовАппаратураРис. 1.8.
Разделение приложений в операционной системе посредством микроядраР1спользование микроядра дает нам разнообразные преимущества. Наиболееважное из них состоит в гибкости: поскольку большая часть операционной системы исполняется в пользовательском режиме, относительно несложно заменитьодин из модулей без повторной компиляции или повторной установки всей системы.