Монолитные ос. Многоуровневые системы. Преимущества монолитных технологий

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

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

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

Микроядерные операционные системы нынче разрабатываются чаще монолитных. Однако следует заметить, что использование технологии клиент-сервер - это еще не гарантия того, что операционная система станет микроядерной. В качестве под­тверждения этому можно привести пример с операционными системами класса Windows NT, которые построены на идеологии клиент-сервер, но которые тем не менее трудно назвать микроядерными. Их «микроядро» имеет уже достаточно боль­шой размер, приставка «микро» здесь вызывает улыбку. Хотя по своей архитекту­ре супервизорная часть этих систем без каких-либо условностей может быть отне­сена к системам, построенным на базе модели клиент-сервер. Причем для последних версий операционных систем с общим названием NT (New Technology) еще более заметным является отход от микроядерной архитектуры, но сохранение принципа клиент-сервер во взаимодействиях между модулями управляющей (супервизорной) части. Для того чтобы согласиться с таким высказыванием, достаточно срав­нить операционную систему QNX и операционные системы Windows NT/2000/ХР.

В странах бывшего Советского Союза в гражданском и промышленном строительстве отдавалось предпочтение возведению сборных архитектурных сооружений из железобетона. Хотя еще в 30-х годах двадцатого века были попытки освоить монолитные технологии строительства. Но низкое на то время качество строительной опалубки и отсутствие технологических решений по работе с бетоном в холодное время года существенно затормозили развитие монолитного строительства.

Первым успешным отечественным опытом можно считать возведение в г. Сочи пятнадцатиэтажной гостиницы, при строительстве которой использовалась скользящая строительная опалубка, а подъем жидкого бетона осуществлялся по схеме «кран-бадья». Монолитные работы были окончены всего через 15 дней после начала заливки опалубки для фундамента . При этом калькуляция затрат показала, что расход строительной смеси снижен на 30,7%, а армирующего каркаса - на 24,5%. Общая экономия возведения здания с применением съемной опалубки составила 20%.

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

Преимущества монолитных технологий

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

1. Одним из главных достоинств монолитной архитектуры с применением съемной опалубки является независимость от, так называемого, шага конструкции.

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

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

2. Монолитные технологии позволяют увеличить длину пролетов со стандартных 12 метров до 15-16, а иногда и до 20 метров без ущерба жесткости, устойчивости и прочности перекрытий .

3. Монолитные дома не имеют монтажных швов, что положительно сказывается на их звукоизоляционных и теплосберегающих характеристиках. В жилых зданиях, возведенных с помощью съемной опалубки, затраты на отопление в среднем ниже на 20% в сравнении с обычными сборными из ж/б-элементов, кирпичной или блочной кладки, а в монолитных домах, построенных с применением несъемной опалубки, - на 50-70% (в зависимости от материала, из которого она произведена).

4. За счет более рационального расхода материалов (в частности строительных смесей и армирующего металлокаркаса) общий вес здания легче на 15-20%, что в свою очередь дает возможность сэкономить на фундаменте.

5. Скорость возведения монолитных зданий и сооружений существенно выше, чем при классическом сборном строительстве. «Львиную» долю работ составляет монтаж строительной опалубки. После того, как съемная опалубка установлена, выверена и закреплена, в межпалубное пространство подается строительная смесь (обычно из бункера или с помощью бетоноподающих насосов).

6. Все работы сконцентрированы на строительной площадке (кроме подготовки бетонных смесей и производства опалубки). Нет необходимости в аренде тяжелой грузоподъемной техники, организации рельсовых путей для ее хода, не требуется выделение площадей для складирования ж/б-изделий перед их монтажом и пр.

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

8. Монолитное строительство позволяет возводить более прочные, надежные и долговечные здания. Расчетный срок эксплуатации обычных панельных зданий составляет 50 лет, тогда как для монолитных - более 200! Кроме того, монолитные сооружения обладают большей сейсмической устойчивостью.

Будущее монолитных технологий

Первые монолитные сооружения имели более высокую себестоимость в сравнении со зданиями, возведенными по классической сборной технологии. Монолитное строительство стало экономически выгодным благодаря развитию съемных опалубочных систем. В настоящее время монолитные дома ориентировочно на 20-40% дешевле в строительстве, чем сборные из железобетонных элементов.

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

Тенденция развития монолитных технологий показывает, что они уверенно набирают «обороты» и, возможно, постепенно вытеснят сборные железобетонные технологии с рынка вовсе. Статистика строительства г. Москвы говорит, что в 90-х годах прошлого столетия доля монолитных сооружений составляла всего 10%. В 1999 году соотношение монолитных зданий к панельным составило уже 30:70, а всего через два года, в 2001 - 50:50. Сейчас с каждым годом перевес усиливается в сторону монолитного зодчества.

  • Рост популярности возведения в Москве зданий с помощью монолитной опалубки объясняется несколькими факторами:
    • более низкой себестоимостью работ;
    • условиями плотной застройки, когда строительство сборных панельных домов ограничено небольшой площадью;
    • запретами на строительство типовых панельных зданий в исторических регионах.

Монолитные операционные системы

Монолитные операционные системы являются прямой противоположностью микроядерным. В монолитной ОС очень трудно удалить один из уровней многоуровневой модульной структуры. Добавление новых функций и изменение существующих для монолитных ОС требует очень хорошего знания всей архитектуры ОС и чрезвычайно больших усилий. Для преодоления этих трудностей используется технология «сервер – клиент».

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

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

Опасность возникновения конфликта между различными частями ядра;

Сложность подключения к ядру новых драйверов.

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

3. Принципы построения интерфейсов операционных систем.

Операционная система – интерфейс между аппаратурой компьютера и пользователем с его задачей.

Интерфейс операционных систем – специальные интерфейсы системного и прикладного программирования, предназначенные для выполнения следующих задач:

1) управление процессами, которое включает в себя следующий набор основных функций:

· запуск, приостанов и снятие задачи с выполнения;

· задание или изменение приоритета задачи;

· взаимодействие задач между собой (сигналы, семафоры, очереди, конвейеры, почтовые ящики);

· удаленный вызов подпрограмм;

2) управление памятью:

· запрос на выделение блока памяти;

· освобождение памяти;

· изменение параметров блока памяти;

· отображение файлов на память;

3) управление вводом/выводом:

· запрос на управление виртуальными устройствами;

· файловые операции.

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

Имеются два основных подхода к управлению задачами:

1) порождаемая задача наследует все ресурсы задачи-родителя;

2) при порождении нового процесса ресурсы для него запрашиваются у операционной системы.

Обращение к операционной системе в соответствии с имеющимися API может осуществляться:

· посредством вызова подпрограммы с передачей ей необходимых параметров;

· через механизм программных прерываний.

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

Термин API (application program interface, интерфейс прикладного программирования):

· API как интерфейс высокого уровня, принадлежащий к библиотекам RTL (run time library, библиотека во время выполнения);

· API прикладных и системных программ, входящих в поставку операционной системы;

· прочие API.

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

API используется не только прикладными, но и многими системными программами как в составе ОС, так и в составе системы программирования.

Программный интерфейс API включает в себя не только сами функции, но и соглашения об их использовании, которые зависят от:

· операционной системы;

· архитектуры целевой вычислительной системы;

· системы программирования.

Варианты реализации API:

· на уровне ОС;

· на уровне системы программирования;

· на уровне внешней библиотеки процедур и функций.

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

Возможности API можно оценить со следующих позиций:

· эффективность выполнения функций API (скорость выполнения, объем вычислительных ресурсов);

· широта предоставляемых возможностей;

· зависимость прикладной программы от архитектуры целевой вычислительной системы.

В идеале набор функций API должен:

· выполняться с наивысшей эффективностью;

· предоставлять пользователю все возможности современных ОС;

· иметь минимальную зависимость от архитектуры вычислительной системы.

4. Требования к операционным системам реального времени (Отрабатывается самостоятельно).

Система реального времени должна давать отклик на непредсказуемые внешние воздействия в течение предсказуемого интервала времени. Свойства операционных систем реального времени:

· ограниченное время отклика , реакция на событие гарантированно последует до наступления крайнего срока;

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

Примеры систем реального времени:

· системы управления атомными электростанциями;

· системы управления технологическими процессами;

· системы медицинского мониторинга;

· системы управления вооружением;

· системы космической навигации;

· системы разведки;

· системы управления лабораторными экспериментами;

· системы управления автомобильными двигателями;

· робототехника;

· телеметрические системы управления;

· системы антиблокировки тормозов;

· системы сигнализации и т.д.

Различают системы «мягкого» и «жесткого» реального времени. Различия зависят от требований к системе:

· в «жесткой» системе нарушение временных ограничений не допустимо;



· в «мягкой» системе нарушение временных ограничений нежелательно.

Основные требования к операционной системе реального времени:

1) мультипрограммность и многозадачность (многопоточность) . ОС должна активно использовать прерывания для диспетчеризации. Максимальное время выполнения того или иного действия должно быть известно заранее и соответствовать требованиям приложения;

2) приоритеты задач (потоков). Проблема, какой задаче ресурс требуется больше всего. В идеальной ситуации ОСРВ отдает ресурс потоку или драйверу с ближайшим крайнем сроком завершения. Чтобы реализовать этот принцип ОС должна знать, сколько времени требуется каждому процессу для его завершения. Таких ОС нет, так как их очень сложно реализовать, поэтому вводится понятие уровня приоритета для задачи и временные ограничения сводятся к приоритетам;

3) наследование приоритетов . ОСРВ должна допускать наследование приоритета, то есть повышение уровня приоритета потока до уровня приоритета потока, который его вызывает. Наследование означает, что блокирующий ресурс поток наследует приоритет потока, который он блокирует;

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

5) предсказуемость . Времена выполнения системных вызовов и временные характеристики поведения системы в различных обстоятельствах должны быть известны разработчику.

Разработчик ОСРВ должен привести следующие характеристики:

· задержку прерывания, время от момента прерывания до момента запуска задачи;

· максимальное время выполнения каждого системного вызова;

· максимальное время маскирования прерываний драйверами и ОС.

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

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

  1. Многоуровневые системы

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

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

  1. Модель клиент-сервер и микроядра

Применительно к структурированию ОС идея использования взаимодействия клиент-сервер и микроядра состоит в разбиении ее на несколько процессов - серверов, каждый из которых выполняет отдельный набор сервисных функций - например, управление памятью, управление файловой системой. Каждый сервер выполняется в пользовательском режиме. Клиент, которым может быть либо другой компонент ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро ОС (называемое здесь микроядром), работая в привилегированном режиме, доставляет сообщение нужному серверу, сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения (рисунок 5).

Подход с использованием микроядра заменил вертикальное распределение функций операционной системы на горизонтальное. Компоненты, лежащие выше микроядра, хотя и используют сообщения, пересылаемые через микроядро, взаимодействуют друг с другом непосредственно. Это свойство микроядерных систем позволяет естественно использовать их в распределенных средах. При получении сообщения микроядро может его обработать или переслать другому процессу. Поскольку для микроядра безразлично, поступило ли сообщение от локального или удаленного процесса, подобная схема передачи сообщений является удобной основой удаленных вызовов процедур (RPC - remote procedure calls). Микроядро занимается основной функцией ОС – управлением ресурсами, зачастую оно берет на себя функции взаимодействия с аппаратурой, хотя предпочтительно в рамках микроядра выделять машиннозависимый функции в отдельные подмодули для улучшения переносимости. Различные варианты реализации модели клиент-сервер в структуре ОС могут существенно различаться по объему работ, выполняемых в режиме ядра. На одном краю этого спектра находится разрабатываемая фирмой IBM на основе микроядра Mach операционная система Workplace OS, придерживающаяся чистой микроядерной доктрины, состоящей в том, что все несущественные функции ОС должны выполняться не в режиме ядра, а в непривилегированном (пользовательском) режиме. На другом - Windows NT, в составе которой имеется исполняющая система (NT executive), работающая в режиме ядра и выполняющая функции обеспечения безопасности, ввода-вывода и другие.

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

В состав микроядра обычно не включают сетевые функции, пользовательский интерфейс, файловую систему, а лишь основные функции управления???

Лекция 2

Тенденции в структурном построении операционных систем

Монолитные системы

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

Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика (примерами могут служить ранние версии ядра UNIX или Novell NetWare). Каждая процедура видит любую другую процедуру (в отличие от структуры, содержащей модули, в которой большая часть информации является локальной для модуля, и процедуры модуля можно вызвать только через специально определенные точки входа).

Однако даже такие монолитные системы могут быть немного структурированными. При обращении к системным вызовам, поддерживаемым ОС, параметры помещаются в строго определенные места, такие, как регистры или стек, а затем выполняется специальная команда прерывания, известная как вызов ядра или вызов супервизора. Эта команда переключает машину из режима пользователя в режим ядра, называемый также режимом супервизора, и передает управление ОС. Затем ОС проверяет параметры вызова для того, чтобы определить, какой системный вызов должен быть выполнен. После этого ОС индексирует таблицу, содержащую ссылки на процедуры, и вызывает соответствующую процедуру. Такая организация ОС предполагает следующую структуру:

а) главная программа, которая вызывает требуемые сервисные процедуры;

б) набор сервисных процедур, реализующих системные вызовы.

В) набор утилит, обслуживающих сервисные процедуры.

Многоуровневые системы

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

Первой системой, построенной таким образом была простая пакетная система THE, которую построил Дейкстра и его студенты в 1968 году. Система имела 6 уровней. Уровень 0 занимался распределением времени процессора, переключая процессы по прерыванию или по истечении времени. Уровень 1 управлял памятью - распределял оперативную память и пространство на магнитном барабане для тех частей процессов (страниц), для которых не было места в ОП, то есть слой 1 выполнял функции виртуальной памяти. Слой 2 управлял связью между консолью оператора и процессами. С помощью этого уровня каждый процесс имел свою собственную консоль оператора. Уровень 3 управлял устройствами ввода-вывода и буферизовал потоки информации к ним и от них. С помощью уровня 3 каждый процесс вместо того, чтобы работать с конкретными устройствами, с их разнообразными особенностями, обращался к абстрактным устройствам ввода-вывода, обладающим удобными для пользователя характеристиками. На уровне 4 работали пользовательские программы, которым не надо было заботиться ни о процессах, ни о памяти, ни о консоли, ни об управлении устройствами ввода-вывода. Процесс системного оператора размещался на уровне 5.


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

Дальнейшее обобщение многоуровневой концепции было сделано в ОС MULTICS. В системе MULTICS каждый уровень (называемый кольцом) является более привилегированным, чем вышележащий. Когда процедура верхнего уровня хочет вызвать процедуру нижележащего, она должна выполнить соответствующий системный вызов, то есть команду TRAP (прерывание), параметры которой тщательно проверяются перед тем, как выполняется вызов. Хотя ОС в MULTICS является частью адресного пространства каждого пользовательского процесса, аппаратура обеспечивает защиту данных на уровне сегментов памяти, разрешая, например, доступ к одним сегментам только для записи, а к другим - для чтения или выполнения. Преимущество подхода MULTICS заключается в том, что он может быть расширен и на структуру пользовательских подсистем. Например, профессор может написать программу для тестирования и оценки студенческих программ и запустить эту программу на уровне n, в то время как студенческие программы будут работать на уровне n+1, так что они не смогут изменить свои оценки.

Многоуровневый подход был также использован при реализации различных вариантов ОС UNIX.

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