- •Классификация и характеристика программного обеспечения
- •Назначение, классификация системного программного обеспечения. Требования к спо
- •Формирование целостного представления о назначения организации сис по.
- •Овладение методами и инструментами: настройки, откладки, диагностики и защиты программных систем.
- •Назначение, функции и основные качества операционных систем. Требования к современным ос
- •Поколения операционных систем и их классификация
- •Функциональные компоненты операционных систем: подсистема управления ресурсами
- •1.1. Управление процессами
- •1.2. Управление памятью
- •1.3. Управление файлами и внешними устройствами
- •Функциональные компоненты операционных систем: подсистема управления задачами
- •2.1. Защита данных и администрирование
- •2.2. Интерфейс прикладного программирования
- •2.3. Пользовательский интерфейс
- •Архитектура операционных систем: ядро и вспомогательные модули ос
- •Модулями ос
- •Архитектура операционных систем: ядро в привилегированном режиме
- •В привилегированном режиме
- •К привилегированному ядру
- •Архитектура операционных систем: многослойная структура ос
- •Типовые средства аппаратной поддержки операционных систем
- •Концепция, преимущества и недостатки микроядерной архитектуры
- •Пространство
- •Мультипрограммирование. Реализация в системах пакетной обработки
- •Ввода-вывода
- •В мультипрограммной системе (б)
- •Мультипроцессорная обработка: сущность и характеристика
- •Понятия «процесс» и «поток», операции над процессами в мультипрограммных системах
- •Планирование и диспетчеризация потоков в мультипрограммных системах
- •Состояния потока в мультипрограммных системах
- •Вытесняющие и невытесняющие алгоритмы планирования
- •Алгоритмы планирования, основанные на квантовании
- •Алгоритмы планирования, основанные на приоритетах
- •Синхронизация процессов и потоков: цели и средства синхронизации
- •Синхронизация процессов и потоков: гонки и тупики
- •Синхронизация процессов и потоков: критическая секция, блокирующие
- •Синхронизация процессов и потоков: использование семафоров
- •Синхронизация процессов и потоков: синхронизирующие объекты ос
- •Функции операционных систем по управлению памятью
- •Управление памятью: виртуальное адресное пространство и виртуальная память
- •Алгоритмы распределения памяти: распределение памяти фиксированными разделами
- •Алгоритмы распределения памяти: распределение памяти динамическими разделами, перемещаемые разделы
- •Управление памятью: страничное распределение
- •Управление памятью: сегментное распределение
- •Управление памятью: сегментно-страничное распределение
- •Мультипрограммирование на основе прерываний: диспетчеризация и приоритезация прерываний в ос
- •Мультипрограммирование на основе прерываний: системные вызовы
- •Управление вводом-выводом в операционной системе: основные понятия и концепции организации ввода/вывода
- •Режимы управления вводом/выводом. Основные системные таблицы ввода/вывода
- •2.1. Режимы управления вводом/выводом
- •2.2. Основные системные таблицы ввода-вывода
- •Управление вводом-выводом в операционной системе: кэширование операций ввода/вывода при работе с накопителями на магнитных дисках
- •Управление файлами: общий принцип работы операционной системы с файлами
- •Управление файлами: общая характеристика файловых систем (fat, fat32 и ntfs)
- •2.1. Файловая система fat
- •2.2. Файловые системы vfat и fat32
- •3. Файловая система ntfs
- •3.1. Структура тома с файловой системой ntfs
- •3.2. Возможности файловой системы ntfs по ограничению
- •Сетевые и распределенные операционные системы
- •Функциональные компоненты сетевой операционной системы
- •Одноранговые и серверные сетевые операционные системы
- •Интерфейс прикладного программирования (api)
- •1.1. Принципы построения интерфейсов ос
- •1.2. Варианты реализации функций api
- •1). Реализация функций api на уровне ос
- •2). Реализация функций api на уровне системы программирования
- •3). Реализация функций api с помощью внешних библиотек
- •Платформенно-независимый интерфейс posix
- •Технологии программирования сом
Синхронизация процессов и потоков: использование семафоров
Семафоры Дейкстры являются обобщением блокирующих переменных.
Вместо двоичных переменных, он предложил использовать переменные, которые могут принимать целые неотрицательные значения
Для работы с семафорами вводятся 2 примитива, которые обозначают P и V, тогда если переменная S – семафор, то
P(S) – это уменьшение S на 1, если это возможно
V(S) – это увеличение S на 1 единым образом
В частном случае, когда S может принимать только значения 0 и 1, он превращается в блокирующую переменную и называется двоичным семафором
Пример использования семафора Дейкстры поясняется рис.1
Рис. 1. Использование семафоров для синхронизации потоков
В виду того, что критический ресурс состоит из набора однотипных буферов, удобнее использовать семафоры Дейкстры, их 2.
Семафор «e» - количество пустых буферов
Семафор «f» - количество заполненных буферов
Перед входом в критическую секцию, поток писатель выполняет примитив P(e), а после неё V(f). Поток читателей наоборот – P(f), затем V(e).
Таким образом, семафоры позволяют эффективно решать задачи синхронизации для большого числа потоков, в данном случае, сумма потоков читателей и писателей не должна превышать N
Семафор может использоваться в качестве блокирующей переменной. На рис.2 показано одновременное использование и семафоров Дейкстры и двоичных семафоров при работе с буферным пулом
Рис. 2. Использование двоичного семафора
Вариант рис. 2 более практичен, чем рис. 1, т.к. в этом случае программный код потоков писателей содержит не только критическую секцию, но и другие части коды
Синхронизация процессов и потоков: синхронизирующие объекты ос
Синхронизирующие объекты ОС
Рассмотренные выше механизмы синхронизации обладает существенным недостатком, они не подходят для синхронизации потоков разных процессов. Различные ОС используют разные методы для разделения синхронизирующих объектов. Некоторые ОС возвращают указатель на объект, указатель может быть доступен нескольким родственным процессам на следующие характеристики родительского процесса.
В других ОС процессы в запросах на создание объектов синхронизации указывают имена, которые должны им быть присвоены. Кроме этого для синхронизации могут быть использованы, такие обычные объекты ОС, как файлы, процессы и потоки, все эти объекты могут быть в двух состояниях в сигнальном и несигнальном, тогда объект (например, процесс) переходит в сигнальное состояние, когда завершаются все его потоки.
Кроме названных синхронизующих объектов, современные ОС имеют специальные системные объекты синхронизации, т.е. объекты видимые для всех потоков разных процессов. Системные средства синхронизации: системные семафоры – мьютексы – события – таймеры и др.
Системные вызовы, особенностью системных вызовов является то, что они выполняются в режиме ядра и являются неделимыми операциями, т.е. их нельзя прервать.
Мьютекс обычно используются для управления доступом данных, но в отличии от объектов-потоков, объектов-процессов и объектов-файлов, освобождает из очереди только один поток. Следовательно, работа мьютексов обычно описывают в терминах владения, т.е. поток, вошедший в критическую секцию, становится владельцем мьютекса этих данных, следовательно, все остальные потоки в свои критические секции войти не могут.
События обычно используются не для доступа к данным, а для того, чтобы оповести другие потоки о том, что некоторые действия завершены.
