- •Системное программное обеспечение Учебное пособие
- •Введение
- •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.1.Параллелизм
Интересно отметить, что главной целью большинства мультипроцессорных систем является повышение производительности. Программирование продолжает оставаться по преимуществу последовательным, так что лишь незначительное количество программ пишется с ориентацией на параллельное, совмещенное выполнение. Для этого существует много причин.
- Люди обычно мыслят последовательными категориями. Человеческий разум по сути просто не приспособлен для представления параллельных категорий.
- Ни в одном естественном человеческом языке нет средств, удобных для выражения параллелизма. Существует несколько языков программирования для компьютеров - таких, как Ада, CSP/K, параллельный Паскаль и Модула. Однако ни один из, них пока еще не получил широкого распространения.
- Поскольку сами мультипроцессорные системы в общем-то практически еще не использовались в разработке параллелизма, имеется лишь очень небольшой опыт решения связанных с этим проблем.
- Аппаратные средства компьютеров в основном ориентированы на последовательную работу.
- Отлаживать параллельные программы исключительно сложно.
- Гораздо более сложно доказывать корректность параллельных программ, чем последовательных.
Сейчас появились аппаратные средства для параллельного выполнения операций, однако пройдет еще много времени, прежде чем будут осмыслены и решены основные проблемы параллельного программирования и будет написано большое количество параллельных программ. Все эти трудности позволяют понять, почему современные мультипроцессорные комплексы не часто используют потенциальные преимущества параллелизма. Реальный прогресс в этой области начнется, по-видимому, после того, как появятся компиляторы и операционные системы, которые будут обнаруживать и осуществлять распараллеливание автоматически. Одним из ключевых факторов, способствующих использованию потенциальных преимуществ параллелизма в будущих системах, станет, безусловно, наличие достаточного числа процессоров, с тем, чтобы все операции, которые можно выполнять параллельно, удавалось распределить по отдельным процессорам. Вместо того чтобы говорить о мультипроцессорных системах в сегодняшнем смысле, т. е. о системах, содержащих два (или, быть может, немногим более процессора), мы теперь обычно говорим о максимальном распараллеливании. Максимальное распараллеливание предоставляет нам возможность привести данную программу к завершению в самое короткое время.
3.7.2.Цели мультипроцессорных систем
Благодаря использованию большого количества центральных процессоров разработчики вычислительных систем могут реализовать множество целей. Среди них следует отметить достижение очень высокой надежности и коэффициента готовности, а также повышенной вычислительной мощности.
Многопроцессорные системы обладают повышенной надежностью, поскольку в случае выхода из строя одного процессора остальные могут продолжать функционировать. Система будет продолжать работать, хотя и при несколько уменьшенных функциональных возможностях. Повышение вычислительной мощности получается за счет объединения мощностей нескольких процессоров.
Снижение стоимости аппаратных средств привело к тому, что разработчики стали объединять большое количество микропроцессоров, образуя мультипроцессорные системы. Таким образом можно достичь высокого уровня вычислительной мощности системы без применения дорогостоящих сверхбыстродействующих процессоров.
Мультипроцессорная архитектура может явиться средством значительного увеличения мощности вычислительных установок без существенного увеличения стоимости. Иногда для повышения вычислительной мощности гораздо целесообразнее перейти на мультипроцессорную систему, чем приобретать дополнительно функционально законченные машины. Установка многих машин может быть связана с серьезными проблемами производственных площадей, может потребовать дополнительного персонала для их обслуживания и т. д.
Важным качеством мультипроцессорных комплексов является их гибкость. Модульная архитектура мультипроцессорных комплексов позволяет легко увеличивать вычислительные мощности путем подключения при необходимости дополнительных процессоров.