- •Модель процесса, Создание и завершение процесса
- •Иерархии, реализация, состояния процессов
- •Иерархии процессов
- •Реализация процессов
- •Состояния процессов
- •Классическая модель потоков
- •2.1 Классическая модель потоков
- •Применение потоков, моделирование режима многозадачности
- •Потоки в posix, реализация потоков в пользовательском пространстве
- •Реализация потоков в ядре, гибридная реализация, активация планировщика Реализация потоков в ядре
- •Гибридная реализация
- •Активация планировщика
- •Всплывающие потоки, превращение однопоточного кода в многопоточный Всплывающие потоки
- •2.2. Превращение однопоточного кода в многопоточный
- •Взаимодействие процессов: состязательная ситуация, критические области Межпроцессное взаимодействие.
- •Состояние состязания.
- •Критическая область.
- •3.1 Взаимодействие между процессами
- •Передача информации от одного процесса другому
- •3.1.2 Состояние состязания
- •3.1.3 Критические области
- •Взаимодействие процессов: взаимное исключение с активным ожиданием, приостановка и активизация
- •2.Взаимное исключение с активным ожиданием
- •2.1 Запрещение прерываний.
- •2.2 Переменные блокировки.
- •3.Приостановка и активизация
- •Введение в планирование, планирование в пакетных системах
- •Планирование в пакетных системах
- •Планирование в интерактивных системах Введение
- •Гарантированное планирование
- •Лотерейное планирование
- •Справедливое планирование
- •Планирование потоков
- •Планирование в системах реального времени, политика и механизмы, планирование потоков
- •Понятие адресного пространства, правление свободной памятью.
- •Методы распределения памяти с использования дискового пространства:
- •Страничное распределение виртуальной памяти
- •Сегментное распределение памяти
- •3. Сегментно-страничная организация разделения памяти
- •Страничная организация памяти, таблицы страниц Страничная организация памяти, таблицы страниц
- •Страничная организация памяти. Виртуальная память.
- •Структура страниц.
- •Формирование адреса при страничном преобразовании.
- •Преимущества страничной памяти
- •Недостатки страничной памяти
- •Ускорение работы страничной организации памяти, таблицы страниц для больших объемов памяти
- •Оптимальный алгоритм замещения страниц, сравнительная характеристика алгоритмов замещения страниц Алгоритмы замещения страниц
- •Оптимальный алгоритм замещения страниц
- •Алгоритм исключения недавно использовавшейся страницы
- •Алгоритм fifo
- •Алгоритм «второй шанс»
- •Алгоритм «часы»
- •Алгоритм замещения наименее востребованной страницы
- •Сравнительная характеристика алгоритмов замещения страниц
- •Разработка систем страничной организации памяти: локальная и глобальная политики, управление загрузкой, разделение пространства команд и данных
- •Локальная и глобальная политика
- •Управление загрузкой
- •Разделение пространства команд и данных
- •Совместно использование страниц, библиотек, очистка страниц, обработка ошибки отсутствия страницы. Совместно используемые страницы
- •Совместно используемые библиотеки
- •Политика очистки страниц
- •Обработка ошибки отсутствия страницы
- •Файлы: имена, структура, типы атрибуты файлов, доступ и операции с файлами.
- •Каталоги: одноуровневые каталоги, иерархические системы каталогов, операции с каталогами
- •Структура файловой системы, реализация файлов, каталогов.
- •Основы аппаратного обеспечения ввода-вывода Устройства ввода-вывода
- •Контроллеры устройств
- •Ввод-вывод, отображаемый на пространство памяти.
- •Принципы создания программного обеспечения ввода-вывода
- •Диски: аппаратная часть, форматирование, алгоритмы планирования перемещения блока головок.
- •Форматирование диска
- •Алгоритмы планирования перемещения головок
- •Аппаратная составляющая и программное обеспечение часов, таймеры
- •Программное обеспечение пользовательского интерфейса: клавиатура, мышь, монитор
- •2.4. Монитор
- •Маршрутизация с использованием масок постоянной и переменной длины
- •Фрагментация ip-пакетов, параметры и механизм фрагментации
- •Групповое вещание
- •Стандартная модель группового вещания ip
- •Основные типы протоколов группового вещания
- •Инжиниринг трафика в mpls
Активация планировщика
Цель работы по активации планировщика заключается в имитации функциональных возможностей потоков на уровне ядра, но при лучшей производительности и более высокой гибкости, свойственной пакетам потоков, реализуемых в пользовательском пространстве. В частности, пользовательские потоки не должны осуществлять специальные неблокирующие системные вызовы или заранее проверять, будет ли безопасным осуществление конкретного системного вызова. Тем не менее когда поток блокируется на системном вызове или на ошибке обращения к отсутствующей странице, должна оставаться возможность выполнения другого потока в рамках того же процесса, если есть хоть один готовый к выполнению поток.
Эффективность достигается путем уклонения от ненужных переходов между пространствами пользователя и ядра.
При использовании активации планировщика ядро назначает каждому процессу определенное количество виртуальных процессоров, а системе поддержки исполняемых программ (в пользовательском пространстве) разрешается распределять потоки по процессорам. Этот механизм также может быть использован на мультипроцессорной системе, где виртуальные процессоры могут быть представлены настоящими центральными процессорами. Изначально процессу назначается только один виртуальный процессор, но процесс может запросить дополнительное количество процессоров, а также вернуть уже неиспользуемые процессоры. Ядро может также забрать назад уже распределенные виртуальные процессоры с целью переназначения их более нуждающимся процессам.
Работоспособность этой схемы определяется следующей основной идеей: когда ядро знает, что поток заблокирован, оно уведомляет принадлежащую процессу систему поддержки исполнения программ, передавая через стек в качестве параметров номер данного потока и описание произошедшего события. Уведомление осуществляется за счет того, что ядро активирует систему поддержки исполнения программ с заранее известного стартового адреса, — примерно так же, как действуют сигналы в UNIX. Этот механизм называется upcall (вызовом наверх).
Активированная таким образом система поддержки исполнения программ может перепланировать работу своих потоков, как правило, за счет перевода текущего потока в заблокированное состояние и выбирая другой поток из списка готовых к выполнению, устанавливая значения его регистров и возобновляя его выполнение. Чуть позже, когда ядро узнает, что исходный поток может возобновить свою работу (например, заполнился канал, из которого он пытался считать данные, или была извлечена из диска ранее не существующая страница), оно осуществляет еще один вызов наверх (upcall) в адрес системы поддержки исполнения программ, чтобы уведомить ее об этом событии. Система поддержки исполнения программ по собственному усмотрению может либо немедленно возобновить выполнение заблокированного потока, либо поместить его в список ожидающих потоков для последующего выполнения.
Недостатком активаций планировщика является полная зависимость этой технологии от вызовов наверх (upcall) — концепции, нарушающей структуру, свойственную любой многоуровневой системе.