
- •Определение ос. Назначение и функции операционной системы
- •Место ос в структуре вычислительной системы
- •Понятие ресурса. Управление ресурсами в вычислительной системе
- •Критерии эффективности и классы ос
- •Эволюция ос
- •Современный этап развития ос
- •Функциональные компоненты ос персонального компьютера
- •Требования, предъявляемые к современным ос
- •Классификации ос.
- •Архитектура ос. Ядро и вспомогательные модули
- •Классическая архитектура ос. Монолитные и многослойные ос
- •Микроядерная архитектура ос
- •Многослойная модель ядра ос
- •Функции ос по управлению процессами
- •Процессы и потоки
- •Состояния потока
- •Планирование и диспетчеризация потоков, моменты перепланировки
- •Алгоритм планирования, основанный на квантовании
- •Приоритетное планирование
- •Алгоритмы планирования ос пакетной обработки: «первым пришел – первым обслужен», «кратчайшая задача – первая», «наименьшее оставшееся время выполнения»
- •Алгоритмы планирования в интерактивных ос: циклическое, приоритетное, гарантированное, лотерейное, справедливое планирование
- •Алгоритм планирования Windows nt
- •Планирование в ос реального времени
- •Синхронизация процессов и потоков: цели и средства синхронизации
- •Ситуация состязаний (гонки). Способы предотвращения.
- •Способы реализации взаимных исключений: блокирующие переменные, критические секции, семафоры Дейкстры Блокирующие переменные
- •Критические секции
- •Семафоры
- •Взаимные блокировки. Условия, необходимые для возникновения тупика
- •Обнаружение взаимоблокировки при наличии одного ресурса каждого типа
- •Обнаружение взаимоблокировок при наличии нескольких ресурсов каждого типа
- •Предотвращение взаимоблокировки. Алгоритм банкира для одного вида ресурсов
- •Предотвращение взаимоблокировки. Алгоритм банкира для нескольких видов ресурсов
- •Синхронизирующие объекты ос: системные семафоры, мьютексы, события, сигналы, ждущие таймеры, мониторы
- •Мьютексы
- •Системные семафоры
- •События
- •Ждущие таймеры
- •Мониторы Хоара
- •Организация обмена данными между процессами (каналы, разделяемая память, почтовые ящики, сокеты)
- •Прерывания (понятие, классификация, обработка прерываний).
- •Средства вызова процедур.
- •Механизм вызова при переключении между задачами.
- •Обработка аппаратных прерываний.
- •Функции ос по управлению памятью
- •Виртуальная память
- •Алгоритмы распределения памяти без использования внешних носителей (фиксированные, динамические, перемещаемые разделы)
- •Страничное распределение памяти
- •Алгоритмы замещения страниц.
- •Оптимальный (нереализуемый)
- •Исключение недавно использованных страниц
- •Алгоритм «первый пришёл, первый ушёл» (fifo)
- •«Второй шанс»
- •Алгоритм нечастого использования
- •«Рабочий набор»
- •Сегментное распределение памяти.
- •Сегментно-страничное распределение памяти.
- •Средства поддержки сегментации памяти в мп Intel Pentium.
- •Сегментный режим распределения памяти в мп Intel Pentium.
- •Сегментно-страничный режим распределения памяти в мп Intel Pentium.
- •Средства защиты памяти в мп Intel Pentium.
- •Случайное отображение основной памяти на кэш.
- •Детерминированное отображение основной памяти на кэш.
- •Комбинированный способ отображения основной памяти на кэш.
- •Кэширование в мп Intel Pentium. Буфер ассоциативной трансляции Кэширование в процессоре Pentium
- •Буфер ассоциативной трансляции
- •Кэширование в мп Intel Pentium. Кэш первого уровня Кэширование в процессоре Pentium
- •Кэш первого уровня
- •Задачи ос по управлению файлами и устройствами
- •Организация параллельной работы устройств ввода-вывода и процессора
- •Разделение устройств и данных между процессами
- •Обеспечение удобного логического интерфейса между устройствами и остальной частью системы
- •Поддержка широкого спектра драйверов и простота включения нового драйвера в систему
- •Динамическая загрузка и выгрузка драйверов
- •Поддержка нескольких файловых систем
- •Поддержка синхронных и асинхронных операций ввода-вывода
- •Многослойная модель подсистемы ввода-вывода Общая схема
- •Менеджер ввода-вывода
- •Физическая организация жесткого диска Диски, разделы, секторы, кластеры
- •Файловая система. Определение, состав, типы файлов. Логическая организация файловой системы Цели и задачи файловой системы
- •Типы файлов
- •Иерархическая структура файловой системы
- •Физическая организация и адресация файлов
- •Fat. Структура тома. Формат записи каталога. Fat12, fat16, fat32
- •Ufs : структура тома, адресация файлов, каталоги, индексные дескрипторы
- •Ntfs: структура тома
- •Структура тома ntfs
- •Ntfs: типы файлов, организация каталогов. Структура файлов ntfs
- •Каталоги ntfs
- •Файловые операции. Процедура открытия файла. Открытие файла
- •Организация контроля доступа к файлам. Доступ к файлам как частный случай доступа к разделяемым ресурсам
- •Механизм контроля доступа
- •Контроль доступа к файлам на примере Unix.
- •Отказоустойчивость файловых систем.
- •Восстанавливаемость файловых систем
- •Протоколирование транзакций
- •Процедура самовосстановления ntfs.
- •Избыточные дисковые подсистемы raid
- •Многоуровневые драйверы
- •Дисковый кэш
- •Параметры, свойства и показатели эффективности ос.
- •Основные и частные показатели эффективности ос.
- •Мониторинг производительности ос.
- •Настройка и оптимизация ос.
Синхронизирующие объекты ос: системные семафоры, мьютексы, события, сигналы, ждущие таймеры, мониторы
В случае синхронизации потоков разных процессов операционная система должна предоставлять потокам системные объекты синхронизации, которые были бы видны для всех потоков, даже если они принадлежат разным процессам и работают в разных адресных пространствах. Примерами таких синхронизирующих объектов ОС являются системные семафоры, мьютексы, события, таймеры и другие.
Все синхронизирующие объекты могут находиться в двух состояниях:
сигнальном
несигнальном (свободном).
Мьютексы
Объекты-взаимоисключения (мьютексы, mutex - от MUTual EXclusion) позволяют координировать взаимное исключение доступа к разделяемому ресурсу. Сигнальное состояние объекта (т.е. состояние "установлен") соответствует моменту времени, когда объект не принадлежит ни одному потоку и его можно "захватить". Предположим, что мьютекс находится в сигнальном состоянии, в этом случае поток тут же становится его владельцем, устанавливая его в несигнальное состояние, и входит в критическую секцию. После того как поток выполнил работу с критическими данными, он «отдает» мьютекс, устанавливая его в сигнальное состояние. Если какой-либо поток ожидает его освобождения, то он становится следующим владельцем этого мьютекса, одновременно мьютекс переходит в несигнальное состояние.
Системные семафоры
Существует еще один метод синхронизации потоков, в котором используются семафорные объекты API. В семафорах применен принцип действия мьютексов, но с добавлением одной существенной детали. В них заложена возможность подсчета ресурсов, что позволяет заранее определенному числу потоков одновременно войти в синхронизуемый участок кода. Для создания семафора используется функция CreateSemaphore.
События
События используются в качестве сигналов о завершении какой-либо операции. В отличие от мьютексов, они не принадлежат ни одному потоку. Объект-событие обычно используется не для доступа к данным, а для того, чтобы оповестить другие потоки о том, что некоторые действия завершены. Пусть, например, в некотором приложении работа организована таким образом, что один поток читает данные из файла в буфер памяти, а другие потоки обрабатывают эти данные, затем первый поток считывает новую порцию данных, а другие потоки снова ее обрабатывают и так далее. В начале работы первый поток устанавливает объект-событие в несигнальное состояние. Все остальные потоки выполнили вызов Wait(X), где X — указатель события, и находятся в приостановленном состоянии, ожидая наступления этого события. Как только буфер заполняется, первый поток сообщает об этом операционной системе, выполняя вызов Set(X). Операционная система просматривает очередь ожидающих потоков и активизирует все потоки, которые ждут этого события.
Ждущие таймеры
Ждущий таймер (waitable timer) представляет собой новый тип объектов синхронизации, поддерживаемый в Windows NT версии 4.0 и выше. Это полноценный объект синхронизации, который может использоваться для организации задержки в одном или нескольких приложениях. Ждущий таймер работает в трех режимах. В режиме «ручного сброса» таймер переходит в установленное состояние при истечении заданной задержки и остается установленным до тех пор, пока функция SetWaitableTimer не задаст новую задержку. В режиме «автоматического сброса» таймер переходит в установленное состояние при истечении заданной задержки и остается установленным до первого успешного вызова функции ожидания. Каждый раз при истечении времени задержки разрешается выполнение лишь одной нити. Наконец, ждущий таймер может выполнять функции интервального таймера, который перезапускается с заданной задержкой после каждого срабатывания объекта.
Главная особенность, отличающая ждущие таймеры от системных, — то, что ждущие таймеры могут совместно использоваться несколькими приложениями. Процессы получают дескрипторы ждущих таймеров так же, как они получают дескрипторы мьютексов: дублированием, наследованием или открытием по имени.