- •Системное программное обеспечение Учебное пособие
- •Введение
- •1.Основные понятия
- •1.1.Функции и ресурсы ос
- •1.2.Структура программного обеспечения
- •1.3.Режимы функционирования компьютера
- •1.4.Классификация ос
- •1.5.Состав ос
- •2.Управление памятью
- •2.1. Основная память
- •2.2.Регистровая память
- •2.3.Кэш память
- •2.4.Организация основной памяти
- •2.4.1.Режимы работы процессоров Intel
- •2.4.2.Преобразование логического адреса в физический в реальном режиме
- •2.4.3.Адресация памяти в защищенном режиме
- •2.5.Управление памятью
- •2.5.1.Модели памяти
- •2.5.2.Динамическое распределение памяти
- •2.5.3.Динамическое распределение памяти в windows nt
- •2.5.4.Функции ос по управлению основной памятью
- •2.6.Виртуальная память
- •2.6.1.Преобразование виртуального адреса в реальный
- •2.6.2.Страничная организация
- •2.6.3.Сегментная организация
- •2.6.4.Странично-сегментная организация
- •2.6.5.Сплошная модель памяти flat
- •2.6.6.Функции для доступа к виртуальной памяти
- •2.6.6.1Освобождение виртуальной памяти
- •2.6.6.2Фиксирование страниц основной памяти
- •2.6.7.Стратегии управления виртуальной памятью
- •2.6.7.1Определение оптимального размера страниц
- •2.6.7.2Поведение программ при подкачке страниц
- •3.Процессы и задачи. Мультипроцессорные системы
- •3.1.Управление процессами
- •3.1.1.Блок управления процессом (pcb)
- •3.1.2.Управление асинхронными параллельными процессами
- •3.2.Мультизадачность
- •3.2.1.Виды мультизадачности:
- •3.2.2.Процессы и задачи
- •3.2.3.Распределение времени между задачами
- •3.2.4.Процессовая мультизадачность
- •3.2.5.Потоковая мультизадачность
- •3.2.6. Синхронизация задач
- •3.2.6.1Ожидание завершения задачи или процесса
- •3.2.6.2Синхронизация с помощью событий
- •3.2.7.Взаимоисключение
- •3.2.7.1Критические секции в программном интерфейсе windows
- •3.2.7.2Блокирующие функции
- •3.2.8.Семафоры
- •3.3.Тупики
- •3.3.1.Условия возникновения тупика
- •3.3.2.Предотвращение тупиков
- •3.3.3. Обход тупиков
- •3.3.4.Обнаружение тупиков
- •3.3.5.Восстановление после тупика
- •3.4.Средства обеспечения мультизадачности в защищенном режиме работы процессора Intel
- •3.4.1.Переключение задач
- •3.5.Обработка прерываний
- •3.5.1.Обработка прерываний в защищенном режиме
- •3.5.2.Обработка аппаратных прерываний
- •3.6.Управление потоками заданий. Планирование заданий и загрузка процессоров
- •3.6.1.Цели планирования
- •3.6.2.Критерии планирования
- •3.6.3.Дисциплины планирования
- •3.6.4.Многоуровневые очереди с обратными связями
- •3.7.Мультипроцессорные архитектуры. Планирование загрузки ресурсов
- •3.7.1.Параллелизм
- •3.7.2.Цели мультипроцессорных систем
- •3.7.3.Автоматическое распараллеливание
- •3.7.3.1Расщепление цикла
- •3.7.3.2Редукция высоты дерева
- •3.7.4.Мультипроцессорные операционные системы
- •3.7.5.Организация мультипроцессорных операционных систем
- •3.7.6.Производительность мультипроцессорных систем
- •3.7.7.Экономическая эффективность мультипроцессорных систем
- •3.7.8.Восстановление после ошибок
- •3.7.9.Перспективы мультипроцессорных систем
- •4.Управление внешней памятью и файловые системы
- •4.1.Структура дискового тома. Таблица разделов
- •4.2.Управление данными
- •4.2.1.Организация данных
- •4.2.2.Методы доступа
- •4.3. Файловые системы
- •4.3.1.Файловая система fat
- •4.3.2.Файловая система fat32
- •4.3.3.Функции windows api для работы с директориями
- •4.3.4.Файловая система windows 95
- •4.3.5.Файловая система нpfs (os/2)
- •4.3.5.1 Структура тома
- •4.3.5.2Файлы и Fnodes
- •4.3.5.3Каталоги
- •4.3.5.4Расширенные атрибуты
- •4.3.5.5Инсталлируемые файловые системы
- •4.3.5.6Проблемы эффективности
- •4.3.5.7Отказоустойчивость
- •4.3.6.Файловая система ntfs (Windows nt)
- •4.3.6.1Главная файловая таблица
- •4.3.6.2Атрибуты файла ntfs
- •4.3.6.3Длинные и короткие имена файлов
- •4.3.6.4Потоки данных
- •4.3.6.5Согласованность с posix
- •4.4.Асинхронные операции с файлами
- •4.5.Файлы, отображаемые на память
- •4.5.1.Создание отображения файла
- •4.5.2.Выполнение отображения на память
- •5.Средства ввода информации
- •5.1.Аппаратные и программные средства ввода информации с клавиатуры
- •5.1.1.Анализ и преобразование скэн-кода
- •5.1.2.Буфер клавиатуры
- •5.1.3.Схема работы буфера
- •5.1.4.Ввод информации с клавиатуры в Windows
- •5.1.4.1Поддержка горячих клавиш (нot-key)
- •5.1.4.2Языки и локализация
- •5.2.Управление манипулятором "мышь"
- •5.2.1.Аппаратные средства манипулятора
- •5.2.2.Программная поддержка "мыши" (на примере ms dos)
- •5.2.3.Основные функции интерфейса программы с манипулятором "мышь" (int 33н)
- •5.2.4.Чтение позиции курсора и состояния кнопок "мыши"
- •5.2.5.Управление мышью в приложениях Windows
- •5.2.5.1Обработка двойного щелчка (Double-Click Messages)
- •5.2.5.2Сообщения неклиентской области
- •5.2.5.3Активизация окна
- •6.Сетевые операционные системы
- •Литература
- •Оглавление
- •Учебное издание
- •394026 Воронеж, Московский просп., 14
3.7.5.Организация мультипроцессорных операционных систем
Одно из основных различий между операционными системами мультипроцессорных и однопроцессорных вычислительных комплексов состоит в том, каким образом организуется и строится операционная система с учетом взаимодействия со многими процессорами. Существуют три основных варианта организации операционных систем для мультипроцессорных комплексов:
"главный-подчиненный (Master - Slave)";
свой монитор (управляющая программа) в каждом процессоре;
симметричная организация (процессоры идентичны).
Организацию "главный - подчиненный" реализовать легче всего, причем часто ее можно создать просто путем расширения существующей мультипрограммной системы. Однако, как мы покажем ниже, такая организация не обеспечивает оптимального использования аппаратуры комплекса.
При организации "главный - подчиненный" операционная система выполняется только на одном конкретном процессоре, главном процессоре. На подчиненном процессоре могут выполняться только программы пользователей. Когда процесс на подчиненном процессоре требует внимания операционной системы, он генерирует сигнал прерывания и ждет, чтобы главный процессор обработал это прерывание. Если подчиненных процессоров много и они активно генерируют сигналы прерывания, то у главного процессора могут создаваться большие очереди. Интересно отметить, что здесь операционная система не обязательно должна быть реентерабельной, поскольку она работает только на одном процессоре и только для одного пользователя в каждый конкретный момент времени.
Решение проблемы взаимоисключения существенно упрощается при обращении к системным таблицам, поскольку операционная система работает только на одном процессоре. Организация "главный - подчиненный" характеризуется меньшей надежностью по сравнению с другими видами организации, поскольку выход главного процессора из строя вызывает катастрофический отказ всей системы. Если главный процессор не будет достаточно эффективно обслуживать запросы подчиненного, то подчиненный процессор не сможет работать эффективно. Вариант организации "главный - подчиненный" можно считать вполне приемлемым для работы в условиях с четко определенными нагрузками, поскольку здесь имеется возможность добиться оптимального планирования загрузки главного процессора. Этот вариант вполне пригоден также для асимметричных систем, в которых подчиненные процессоры обладают гораздо меньшей вычислительной мощностью, чем главный.
Организация "главный - подчиненный" предполагает, что операционная система всегда работает только на одном из процессоров. Этот процессор может иметь специальную конструкцию, обеспечивающую эффективную работу операционной системы, либо он может быть таким же, как другие процессоры.
Подчиненный процессор, который освобождается в момент, когда главный процессор занят, должен будет ждать, пока главный процессор не предоставит ему дополнительную работу. Если подчиненные процессоры выполняют большое количество коротких задач, это может привести к чрезмерной дополнительной нагрузке для главного процессора. Если главный процессор не сможет быстро реагировать на поступающие запросы, то значительная часть вы числительных мощностей подчиненных процессоров будет оставаться неиспользуемой. При организации с раздельными мониторами (управляющими программами) каждый процессор содержит собственную операционную систему, которая соответствующим образом реагирует на прерывания от программ пользователей, работающих на этом процессоре. Поскольку некоторые таблицы содержат глобальную информацию для всей системы (например, список процессоров, известных системе), доступ к этим таблицам должен осуществляться под строгим контролем с применением методов взаимоисключения.
Организация с раздельными мониторами является более надежной, чем организация "главный - подчиненный". Отказ какого-то одного процессора здесь вряд ли станет катастрофическим отказом системы, однако рестарт системы с отказавшим процессором может оказаться достаточно сложным.
Каждый процессор управляет своими собственными ресурсами, например файлами и устройствами ввода-вывода. Реконфигурация оборудования ввода-вывода системы может потребовать подключения устройств ввода-вывода к другим процессорам с другими операционными системами. Такая процедура может быть достаточно сложной и потребовать значительных ручных усилий. При организации с раздельными мониторами каждый процессор имеет свою собственную операционную систему и работает подобно однопроцессорной машине со своими собственными ресурсами. Процесс, запланированный для выполнения на каком-то конкретном процессоре, выполняется на нем до завершения.
Функции операционных систем реализуются на каждом процессоре, обслуживающем свои собственные запросы и запросы идущих на нем процессов. Здесь наблюдается лишь минимальное количество конфликтных ситуаций при работе с таблицами операционных систем, поскольку эти таблицы распределены между индивидуальными операционными системами и используются в основном только ими.
Каждый процессор имеет собственный "частный" набор устройств ввода-вывода, которыми он управляет независимо от других процессоров. Операции ввода-вывода по запросам процесса выполняет исключительно тот процессор, который выделен данному процессу. Возврат из прерываний ввода-вывода осуществляется непосредственно на те процессоры, которые их инициируют. Поскольку устройства ввода- вывода подключаются прямо к индивидуальным процессорам, реконфигурация системы требует ручного вмешательства.
При организации с раздельными мониторами не предусматривается никакого взаимодействия процессоров при выполнении индивидуального процесса. Не исключается возможность, что некоторые из процессоров будут оставаться свободными, в то время как один процессор выполняет длинный процесс.
Симметричная организация мультипроцессорного вычислительного комплекса является наиболее сложной для реализации и в то же время наиболее эффективной. Здесь все процессоры идентичны. Операционная система управляет пулом идентичных процессоров, каждый из которых может управлять работой любого устройства ввода-вывода или обращаться к любому устройству памяти.
Поскольку программы операционной системы могут выполняться на многих процессорах одновременно, реентерабельный код и взаимоисключение являются обязательными. Благодаря симметричности системы имеется возможность более точно сбалансировать рабочую нагрузку, чем при других видах организации.
При симметричной организации особенно важное значение приобретают аппаратные и программные средства для разрешения конфликтных ситуаций. Конфликты между процессорами, пытающимися получить доступ к одной и той же памяти в одно и то же время, разрешаются, как правило, аппаратными средствами. Конфликты при доступе к системным таблицам разрешаются обычно программными средствами. Симметричные мультипроцессорные комплексы являются в общем случае наиболее надежными - отказ одного процессора приводит к тому, что операционная система исключает этот процессор из пула имеющихся процессоров и уведомляет об этом оператора. Комплекс может продолжать работать с несколько пониженным уровнем функциональных и скоростных возможностей (плавная деградация), пока вышедший из строя процессор не будет отремонтирован.
В симметричной системе процесс может в разные периоды времени выполняться на любом из эквивалентных процессоров. Все процессоры могут кооперироваться при выполнении конкретного процесса.
Операционная система перемещается от одного процессора комплекса к другому. Процессор, ответственный в данный момент за ведение системных таблиц и реализацию системных функций, называется мониторным процессором. В каждый конкретный момент времени мониторным может быть только один процессор - благодаря этому предотвращаются конфликты при работе с глобальной системной информацией.
Симметричная организация позволяет лучше использовать ресурсы. Легче сбалансировать нагрузку системы в целом, поскольку большинство видов работ можно передавать любому имеющемуся свободному процессору.
Проблема состязаний может оказаться очень острой, особенно в связи с тем, что в режиме супервизора здесь могут работать несколько процессоров одновременно. Во избежание чрезмерного количества конфликтов необходимо тщательно продумывать конструкцию системных таблиц. Одним из способов, помогающих свести к минимуму число конфликтов, является разбиение системных данных на ряд самостоятельных и независимых объектов, которые можно было бы закрывать индивидуально.