
- •3. Управление процессами
- •3.1. Описание процессов (Лекция 5)
- •3.1.1. Причины создания и завершения, описание процессов, модели с двумя и пятью состояниями
- •3.1.1.1. Процессы, причины создания и завершения
- •3.1.1.2. Модель с двумя состояниями
- •3.1.1.3. Модель с пятью состояниями
- •3.1.2. Блокированные и приостановленные процессы. Модели с шестью и семью состояниями
- •3.1.2.1. Модель с шестью состояниями
- •3.1.2.2. Модель с семью состояниями
- •3.1.3. Управляющие структуры ос для процессов и ресурсов
- •3.1.3.1. Основные виды системных таблиц. Сегментация виртуального адресного пространства процесса
- •3.1.3.2. Элементы управляющего блока процесса. Структура контекста процесса
- •3.2. Управление процессами (Лекция 6)
- •3.2.1. Действия ос по управлению процессами, способы выполнения системных процессов
- •3.2.1.1. Создание процесса
- •3.2.1.2. Переключение процессов
- •3.2.1.3. Выполнение кода ос
- •3.3. Способы реализации мультипрограммирования. Потоки, многопроцессорные системы (Лекция 7)
- •3.3.1. Многозадачность на основе потоков
- •3.3.1.1. Описание потоков
- •3.3.1.2. Функциональность потоков
- •3.3.1.3. Организация многопоточной обработки запросов в модели "клиент-сервер"
- •3.3.2. Потоки и проблема глобальных переменных. Типы реализации потоков.
- •3.3.2.1. Потоки и проблема глобальных переменных
- •3.3.2.2. Пользовательские потоки
- •3.3.2.3. Потоки ядра
- •3.3.2.4. Мультиплексирование потоков ядра пользовательскими потоками
- •3.3.3. Параллельность, обеспечиваемая средствами языка
- •3.3.3.1. Параллельность, обеспечиваемая средствами последовательного языка
- •3.3.3.2. Сопрограммы
- •3.3.3.3. "Процессы"
- •3.3.4. Мультипроцессорные системы
- •3.3.4.1. Введение
- •3.3.4.2. Архитектура мультипроцессоров
- •3.3.4.3. Типы мультипроцессорных ос
3.3.2.4. Мультиплексирование потоков ядра пользовательскими потоками
В случае мультиплексирования потоков ядра пользовательскими потоками:
Ядро предоставляет каждой библиотеке, управляющей пользовательскими потоками, абстракцию виртуального мультипроцессора; количество виртуальных процессоров может изменяться ядром во время выполнения приложения.
Каждый виртуальный процессор (активация планировщика) представлен отдельным потоком ядра со специальными функциями.
Библиотека, управляющая пользовательскими потоками, полностью управляет направлением своих потоков на конкретные виртуальные процессоры.
Ядро информирует библиотеку о каждом, относящемся к ней событии: блокировании активации планировщика, её пробуждении, изменении количества активаций планировщика.
Библиотека информирует ядро о необходимости уменьшить или увеличить число процессоров, сообщает о подмножестве событий потоков, которые могут отражаться на решениях о распределении процессоров.
3.3.3. Параллельность, обеспечиваемая средствами языка
3.3.3.1. Параллельность, обеспечиваемая средствами последовательного языка
В каждый конкретный момент выполнения такой программы имеется один поток управления, один стек и одна куча. Когда раздельные подзадачи ("потоки") реализованы в одной программе, написанной на последовательном языке программирования, справедливы следующие выводы:
Исполнительная система языковой среды и ОС никак не помогают управлять подзадачами как отдельными единицами исполнения.
Если выполнение одной подзадачи должно быть приостановлено (т.к. не может продолжаться до наступления определенного события), а выполнение другой продолжено, сохранением и восстановлением состояния должен управлять код пользовательского уровня.
Отсутствует возможность немедленной реакции на событие путём передачи управления в нужную точку кода пользовательского уровня. После обработки прерывания выполнение процесса просто продолжается с той же точки, в которой оно было прервано (т.е. возврат управления тому "потоку", который ожидал завершения этого события не происходит, а произойдет тогда, когда может быть завершит работу текущий поток – все зависит от программиста).
3.3.3.2. Сопрограммы
Особый метод реализации независимых подпрограмм в одной программе – так называемые сопрограммы. Цель – обеспечить совместное использование общих данных и создание локальных данных путем поддержки отдельного стека для каждой сопрограммы. Язык программирования (BCPL,Modula2) включает инструкции для создания, удаления, временной приостановки работы сопрограммы с сохранением её состояния. Если в одной программе отдельные подзадачи реализуются как сопрограммы, справедливо следующее:
Исполнительная система поддерживает создание активаций сопрограмм, а также их запуск, передачу между ними управления. Она обеспечивает активациям доступ к их совместно используемым и приватным данным.
Планирование активаций сопрограмм выполняет код пользовательского уровня, который обеспечивает явную передачу управления между сопрограммами.
Существует единственный поток управления, в котором осуществляется планирование сопрограмм и их выполнение.
Отсутствует возможность немедленной реакции на события путем передачи управления в нужную точку кода пользовательского уровня.
Приостановка выполнения сопрограммы производится исключительно по её собственной инициативе. Поэтому можно считать, что те общие структуры данных, с которыми работает сопрограмма, всегда остаются в согласованном состоянии.
Затраты на передачу управления очень малы.