Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22700_62_OSBD_Lektsii.doc
Скачиваний:
54
Добавлен:
11.02.2015
Размер:
1.11 Mб
Скачать

Тема 2. Структура и механизмы ос Лекция №2. Структура и механизмы ос

В рамках данной лекции рассматриваются нижеследующие вопросы:

  • Многоуровневая структура ОС.

  • Ядро и вспомогательные модули ОС.

  • Режимы ядра и пользовательский для исполнения программ.

  • Системные вызовы. API

  • Аппаратная зависимость и переносимость ОС.

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

  • Микроядерная архитектура.

  • Виртуальные машины. Экзоядра.

  • Планирование и диспетчеризация процессов;

  • Алгоритмы планирования;

  • Справедливое планирование. Циклическое планирование. Приоритетное планирование. «Короткое – вперед». Гарантированное планирование;

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

Структурная организация ОС

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

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

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

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

Многослойная структура ядра ОС

Средства аппаратной поддержки ОС

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

Машинно-зависимые компоненты ОС

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

Базовые механизмы ядра

Этот слой выполняет наиболее примитивные операции ядра, такие как программное переключение контекстов процессов, диспетчеризацию прерываний, перемещение страниц из памяти на диск и обратно и т.п. Модули данного слоя не принимают решений о распределении ресурсов - они только отрабатывают принятые «наверху» решения, что и дает повод называть их исполнительными механизмами для модулей верхних слоев. Например, решение о том, что в данный момент нужно прервать выполнение текущего процесса А и начать выполнение процесса В, принимается менеджером процессов на вышележащем слое, а слою базовых механизмов передается только директива, что нужно выполнить переключение с контекста текущего процесса А на контекст процесса В.

Менеджеры ресурсов

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

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

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

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

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

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

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

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

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

Вспомогательные модули ОС обычно подразделяются на следующие группы:

  • утилиты - программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на носитель;

  • системные обрабатывающие программы - текстовые или графические редакторы, компиляторы, компоновщики, отладчики;

  • программы предоставления пользователю дополнительных услуг, например, специальный вариант пользовательского интерфейса, калькулятор и даже игры;

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

Привилегии операционной системы и просто возможность ее существования обеспечиваются средствами аппаратнойподдержки, которые должны поддерживатькак минимумдва режима работы -пользовательский режим (user mode) ипривилегированный режим, который также называютрежимом ядра (kernel mode), илирежимом супервизора (supervisor mode).

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

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

Переключение режимов в ОС микроядерной архитектуры

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

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

Поскольку NUMA использует локальную и удаленную память, доступ к одним областям требует большего времени, чем к другим. Термины локальная памятьиудаленная память, употребляются относительно текущеговыполняемого потока.Локальная память- это память, которая находится на одном узле с ЦП, выполняющим текущий поток. Любая память, не принадлежащая к узлу, на котором в настоящий момент выполняется поток, называетсяудаленной. Удаленная память также иногда называетсявнешней. Отношение времен доступа к внешней и локальной памяти называетсякоэффициентом NUMA. Если коэффициент NUMA равен 1, то это - симметричная многопроцессорная система. Чем выше коэффициент NUMA, тем больше издержки на доступ к памяти других узлов..

Главным преимуществом использования NUMA является масштабируемость.Архитектура NUMA разработана, чтобы устранить ограничения масштабирования, имеющиеся у архитектуры симметричной мультипроцессорной обработки (SMP). В архитектуре SMP доступ ко всей памяти производится черезобщую шинупамяти. Для относительно небольшого числа процессоров это может быть достаточным, но при наличии десятков и сотен процессоровконкуренция за доступк шине памяти значительно возрастает. NUMA устраняет эти узкие места,ограничивая количествоЦП на одной шине памяти и объединяя повысокоскоростномусоединению множество узлов.

Механизмы планирования в ОС

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

  • Равнодоступность - предоставление каждому процессу справедливой доли времени центрального процессора.

  • Принуждение к определенной политике планирования, т.е. обеспечение соблюдения установленной политики;

  • Баланс загруженности всех составных частей системы.

Задача планирования заключается в получении расписания исполнения программ, «оптимального» с точки зрения конкретного типа ОС. В качестве основных «критериев» построения оптимального расписания выступают:

в пакетных системах

  • производительность - максимизация количества выполняемых в единицу времени заданий;

  • оборотное время - минимизация времени между представлением задачи и ее завершением;

  • использование центрального процессора - поддержка постоянной загруженности процессора и минимизация простоев.

в интерактивных системах

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

  • пропорциональность предоставления ресурсов каждому пользователю.

в системах реального времени

  • соблюдение предельных установленных сроков на запуск и исполнение задач;

  • обеспечение отклика в установленные сроки и предотвращение потери данных.

в мультимедийных системах (потоковое видео)

  • предотвращение ухудшения качества.

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

Планирование процессов. Очереди процессов.

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

За планирование отвечают специальные управляющие программы, называемые планировщиками (scheduler). В современных системах используется ряд планировщиков в зависимости от ресурса, планирование доступа к которому они осуществляют, например:

  • process scheduler - планировщик процессов;

  • priority scheduler – планировщик с планированием по приоритетам;

  • master scheduler - главный планировщик;

  • job scheduler - планировщик обработки заданий;

  • foreground scheduler - планировщик высокоприоритетных заданий;

  • channel scheduler - планировщик работы каналов.

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

Процессы во входной очереди ожидают выделения им ресурса - адресного пространства основной памяти.

Готовые к выполнению процессы находятся в основной памяти в очереди готовых процессов или ready queue. Процессы в этой очереди ожидают освобождения ресурса процессор.

Процесс в состоянии ожидания завершения операции ввода/вывода находится в одной из очередей к устройству ввода/вывода, которая носит название device queue.

Процесс переходит между различными очередями под управлением планировщика. Операционная система обычно содержит два вида планировщиков процессов: для долгосрочного планирования (long term scheduler) и для краткосрочного планирования (short term scheduler/CPU scheduler) .

Основное отличие между ними заключается в частоте запуска, например: краткосрочный планировщик может запускаться каждые 100 мс, долгосрочный - один раз в несколько минут.

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

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

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

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

1. использование (utilization) ЦП может находиться пределах от 0 до 100%. (примерно 40% для легко загруженного ЦП, 90% для тяжело загруженного ЦП);

2. пропускная способность (throughput) ЦП, измеряется количеством процессов, которые выполняются в единицу времени.

3. время оборота (turnaround time). Для некоторых процессов важным критерием является полное время выполнения, то есть интервал от момента появления процесса во входной очереди до момента его завершения. Это время называется временем оборота и включает время ожидания во входной очереди, время ожидания в очереди готовых процессов, время ожидания в очередях к оборудованию, время выполнения в процессоре и время ввода/вывода;

4. время ожидания (waiting time).- суммарное время нахождения процесса в очереди готовых процессов,

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

Стратегии планирования процессора

Классическими стратегиями планирования процессора являются:

1. FIFO. Первый пришел первый обслуживается: когда процесс попадает в очередь готовых процессов, он ставится в «хвост» очереди. Стратегия предполагает, что все процессы имеют одинаковые приоритеты;

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

3. RR. Round Robin. “Карусельная” стратегия планирования. Применяется в системах разделения времени. Определяется небольшой отрезок времени, названный квантом времени (10..100 мс). Очередь готовых процессов рассматривается как кольцевая. Процессы циклически перемещаются в очереди, получая ЦП на один квант времени.

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

Основная литература

Учебник / Учебное пособие

Раздел

Страницы

Таненбаум Э. Современные операционные системы. 3-е изд. - СПб.: Питер, 2010. - 1120 е.: ил.

2.4.1-2.4.4,2.4.6

1.6.1, 1.6.4, 1.7.1-1.7.6

80-86, 90-100 181-200, 201-203 187-191, 216-234

Дополнительная литература

Учебник / Учебное пособие

Раздел

Страницы

1. Джеффри Рихтер. Windows для профессионалов (программирование в Win32 API для Windows NT 3.5 и Windows95)/Пер. с англ. - М.: Издательский отдел «Русская Редакция» 1995. - 720 с.: ил.

Глава 2.

Стр.7-40

2. Робачевский А.М. Операционная система UNIX, СПб.: BHV – Санкт-Петербург, 1997. - 528 с., ил.

Глава 1,3

Стр. 38-42

Соседние файлы в предмете Операционные системы