- •Раздел 1. Архитектура операционных систем Тема 1. Принципы построения операционных систем
- •1.1. Понятие об архитектуре аппаратных средств
- •1.1.1. Вводные замечания
- •1.1.2. Классификация программных средств
- •1.1.3. Место и функции системного программного обеспечения
- •1.2. Принципы работы вычислительной системы
- •1.3. Режимы работы операционных систем
- •1.3.1. Режимы обработки данных
- •1.3.1.1. Однопрограммные режимы обработки данных
- •1.3.1.2. Многопрограммные режимы обработки данных
- •1.3.2. Режимы и дисциплины обслуживания
- •1.3.2.1. Режимы обслуживания
- •1.3.3.2. Дисциплины обслуживания
- •1.4. Классификация операционных систем
- •1.4.1. Особенности алгоритмов управления ресурсами
- •1.4.1.1. Поддержка многозадачности
- •1.4.1.2. Поддержка многонитевости
- •1.4.2. Особенности аппаратных платформ
- •1.4.3. Особенности областей использования
- •1.4.4. Особенности методов построения
- •1.5. Основные принципы построения операционных систем
- •1.6. Пользовательский интерфейс операционных систем
- •1.6.1. Классификация интерфейсов
- •1.6.2. Пакетная технология.
- •1.6.3. Технология командной строки.
- •1.6.4. Графический интерфейс
- •1.6.4.1. Простой графический интерфейс.
- •1.6.4.2. Wimp-интерфейс
- •1.6.5. Речевая технология
- •1.6.6. Биометрическая технология)
- •1.6.7. Семантический интерфейс.
- •Контрольные вопросы к теме 1
- •Тема 2. Концептуальные основы операционных систем
- •2.1. Концепция процесса
- •2.2. Концепция ресурса
- •2.3. Концепция виртуальности
- •2.4. Концепция прерывания
- •2.5. Понятие ядра и микроядра ос
- •2.5.1. Понятие ядра ос
- •2.5.2. Понятие микроядра ос
- •Контрольные вопросы к теме 2
- •Тема 3. Понятие управления задачами
- •3.1. Организация управления задачами
- •3.2. Средства и механизмы управления задачами
- •3.2.1. Средства управления задачами на уровне внешнего планирования
- •3.2.2. Средства управления задачами на уровне внутреннего планирования
- •3.3. Алгоритмы управления задачами
- •3.3.1. Алгоритмы управления задачами на уровне внешнего планирования
- •3.3.2. Алгоритмы управления задачами на уровне внутреннего планирования
- •3.3.2.1. Мультизадачность, процессы и нити Мультизадачность
- •Процессы
- •Контекст и дескриптор процесса
- •3.3.2.2. Состав алгоритмов внутреннего планирования
- •3.3.2.3. Алгоритм управления количеством процессов в рабочей смеси
- •3.3.2.4. Алгоритмы выбора очередности обработки
- •3.3.2.5. Алгоритмы выбора величины кванта
- •3.4. Взаимосвязанные и конкурирующие задачи
- •3.4.1. Средства управления ресурсами
- •3.4.2. Механизмы синхронизации процессов
- •3.4.2.1. Параллельные процессы и критические участки
- •3.4.2.2. Примитивы взаимоисключения
- •3.4.2.3. Программная реализация примитивов взаимоисключения
- •3.4.2.4. Реализация примитивов взаимоисключения с использованием аппаратных средств
- •3.4.2.5. Семафоры
- •3.4.2.6. Мониторы
- •3.4.3. Алгоритмы управления ресурсами
- •3.4.3.1. Вводные замечания
- •3.4.3.2. Алгоритм предоставления ресурса по первому обращению
- •3.4.3.3. Алгоритмы предотвращения тупиков
- •3.4.3.3.1. Стратегии предотвращения тупиков
- •3.4.3.3.2. Алгоритм предварительного распределения ресурсов
- •3.4.3.3.3. Алгоритм распределения ресурсов с освобождением при отказе
- •3.4.3.3.3. Алгоритм распределения с линейным упорядочением по типам ресурсов
- •3.4.3.3. Алгоритмы обхода тупиков
- •Контрольные вопросы к теме 3
- •Тема 4. Управление памятью в операционных системах
- •4.1. Понятие об организации и управлении физической памятью
- •4.2. Методы связного распределения основной памяти (без использования дискового пространства)
- •4.2.1. Связное распределение памяти для одного пользователя
- •4.2.2. Связное распределение памяти при мультипрограммной обработке
- •4.2.3. Стратегии размещения информации в памяти
- •4.3. Организация виртуальной памяти (с использованием дискового пространства)
- •4.3.1. Основные концепции виртуальной памяти
- •4.3.2. Схема прямого отображения адресов
- •4.3.3. Отображения адресов при страничной организации виртуальной памяти
- •4.3.4. Отображения адресов при сегментной организации виртуальной памяти
- •4.3.4. Отображения адресов при странично-сегментной организации виртуальной памяти
- •4.4. Управление виртуальной памятью
- •4.4.1. Стратегии управления виртуальной памятью
- •4.4.2. Стратегии вталкивания (подкачки)
- •4.4.3. Стратегии размещения
- •4.4.4. Стратегии выталкивания
- •Контрольные вопросы к теме 4
- •Тема 5. Управление файлами и вводом-выводом в ос
- •5.1.Методы организации данных в операционных системах
- •5.2. Методы доступа к данным
- •5.3. Объединение записей в блоки и буферизация
- •5.4. Управление файлами
- •5.4.1. Понятие файлового способа хранения данных и файловой системы
- •5.4.2. Организация файлов
- •5.4.3. Организация хранения файлов
- •5.4.4. Операции над файлами
- •5.4.5. Файловая система
- •5.4.5.1. Общая модель файловой системы
- •5.4.5.2. Современные архитектуры файловых систем
- •5.5. Система ввода-вывода
- •5.5.1. Общие положения
- •5.5.2. Физическая организация устройств ввода-вывода
- •5.5.3. Организация программного обеспечения ввода-вывода
- •5.5.3.1. Уровни организации программного обеспечения ввода-вывода
- •5.5.3.2. Обработка прерываний
- •5.5.3.3. Драйверы устройств
- •5.5.3.4. Независимый от устройств слой операционной системы
- •5.5.3.5. Пользовательский слой программного обеспечения
- •Контрольные вопросы к теме 5
3.4.2. Механизмы синхронизации процессов
3.4.2.1. Параллельные процессы и критические участки
Рабочая смесь , созданная механизмами высшего и внутреннего планирования , представляет собой совокупность параллельных процессов.
Процессы называются параллельными, если они существуют в системе одновременно.
Параллельные процессы называются независимыми, если они работают без целенаправленной передачи сигналов информации друг другу.
Параллельные процессы называются связанными, если осуществляется направленный обмен сигналами (информацией) между ними.
Связанные параллельные процессы бывают синхронными, когда обеспечиваются согласование скоростей их развития в системе, и асинхронными, если скорости протекания процессов не регулируются в системе.
В механизмах синхронизации нуждаются все виды параллельных процессов, функционирующих в мультипрограммной вычислительной системе.
Не связанные между собой процессы также нуждаются в синхронизации своей работы. Это объясняется тем, что они используют во время функционирования одни и те же физические и логические внешние устройства, которые в каждый конкретный момент времени могут обслуживать только один процесс (критические ресурсы).
Ресурс системы называется критическим, если он допускает в каждый момент времени обслуживание только одного процесса.
Общим принципом, положенным в основу всех механизмов синхронизации процессов, является принцип взаимоисключения.
Принцип взаимоисключения: каждый процесс, обращающий к разделяемым (критическим ) ресурсам, должен исключить возможность для всех других процессов одновременного с ним использования этого ресурса.
Использование принципа взаимоисключения требует встраивания в программы процессов механизмов синхронизации, обеспечивающих выполнение следующих условий:
при обращении нескольких процессов к одному разделяемому ресурсу только одному из них разрешено воспользоваться этим ресурсом;
в каждый момент времени только один процесс должен владеть критическим ресурсом.
Все механизмы синхронизации, реализующие принцип взаимоисключения, основаны на применении концепции критического участка программы.
Критическим участком, критической областью программы процесса называется тот отрезок программного кода процесса, на котором этот процесс образуется к критическому ресурсу.
Количество критических участков в процессе зависит только от того, к ресурсам какого вида он обращается при своем функционировании.
Когда некоторый процесс находится на своем критическом участке, другие процессы могут продолжать выполнение, но без входа в их критические участки (занятым критическим ресурсам ), когда процесс выходит из критического участка, то должно быть разрешено использование освобожденного критического ресурса. Обеспечение взаимоисключения является основной проблемой параллельного программирования.
3.4.2.2. Примитивы взаимоисключения
Общим подходом к построению механизмов синхронизации с использованием концепции критических участков является применение примитивов взаимоисключения.
Примитивами взаимоисключения называется программная конструкция, обеспечивающая реализацию взаимоисключений для параллельных процессов. В обобщенном виде можно указать два примитива взаимоисключений:
примитив вход_взаимоисключения, с помощью которого фиксируется захват критического ресурса данным процессом и устанавливается запрет на использование его другими процессами;
примитив выход_взаимоисключения, с помощью которого процесс сообщает об освобождении им критического ресурса.
Простейший алгоритм синхронизации с применением примитивов взаимоисключения состоит в следующем (рис.3.2). Главный процесс запускает в работу два параллельных процесса П1 и П2, после чего он может закончить свою работу. Каждый из параллельных процессов в своем теле имеют области работы с критическим ресурсом. Эти области обязательно обрамляются примитивами вход_взаимоисключения и выход_взаимоисключения.
Рис.3.2. Схема применения примитивов взаимоисключения.
В рассматриваемом случае двух процессов эти примитивы работают следующим образом. Когда процесс П1 выполняет примитив вход_взаимоисключения и если при этом процесс П2 находится вне своего критического участка, то П1 входит в свой критический участок, выполняет работу с критическим ресурсом, а затем выполняет примитив выход_взаимоисключения, показывая тем самым, что он вышел из своего критического участка. Если П1 выполняет вход_взаимоисключения, в то время как П2 находится на своем критическом участке, то процесс П1 переводится в состояние ожидания, пока процесс П2 не выполнит выход_взаимоисключения. Только после этого процесс П1 может выйти из состояния ожидания и войти в свой критический участок.
Если процессы П1 и П2 выполняют вход_взаимоисключения одновременно, то одному из них операционная система разрешает продолжить работу, а другой переводит в состояние ожидания.