- •Архитектура операционной системы
- •1. Монолитные системы
- •2. Многоуровневые системы
- •3. Виртуальные машины
- •Архитектура, основанная на ядре
- •Режим ядра и пользовательский режим
- •Типовые средства аппаратной поддержки ос
- •Машинно-зависимые компоненты ос
- •Микроядерная архитектура
- •Процессы и потоки
- •Реализация процессов
- •Назначение потоков
- •Реализация потоков
- •Планирование Процессов
- •Пример 1. Планирование в Windows 2000
- •Пример 2. Планирование в unix
- •Цели планирования
- •Схемы планирования
- •Взаимодействие процессов и потоков
- •Состояние состязания
- •Критические области
- •Взаимоисключение с активным ожиданием
- •Семафоры
- •Мьютексы
- •Мониторы
- •Взаимные блокировки
- •Основные направления решения проблемы тупиков
- •Предотвращение тупиков
- •Обнаружение тупика
- •Восстановление после тупика
- •Организация мультизадачности ос
- •Опрос (проверка флагов)
- •Исключения
- •Прерывания
- •Классификация прерываний
- •3 Класса прерываний:
- •Механизм прерываний
- •Приоритеты прерываний
- •Организация памяти
- •Функции ос по управлению памятью
- •Стратегии управления памятью
- •Фрагментация памяти
- •Способы борьбы с фрагментацией:
- •Типы адресов памяти
- •Учет свободных и занятых областей памяти
- •Учет памяти с помощью битовых карт
- •Учет памяти с помощью связных списков
- •Виртуальная память
- •Файлы подкачки
- •Вопросы по модулю №1
Назначение потоков
Потоки нужны тогда, когда процесс выполняет несколько разнородных операций (например, вычислений и операций ввода вывода). Наличие потоков позволяет производить эти операции параллельно.
Пока блокированы операции ввода-вывода, идут вычисления; когда начинают работу внешние устройства, вычисления приостанавливаются. Эта же причина – аргумент для создания процессов. Однако потоки создавать и уничтожать намного легче, чем процессы (поскольку с потоком не связаны никакие ресурсы). На создание потока уходит примерно в 100 раз меньше времени, чем на создание процесса.
ПРИМЕР: Многопоточность помогает работе многих интерактивных программ. Например, программы многих текстовых редакторов производят форматирование текста в фоновом режиме (один поток), предоставляя возможность в это же время производить другие операции (другой поток). Например, если удалить один абзац на первой странице в Word-е, редактор должен переформатировать весь текст. Если бы поток был один, до конца форматирования никакие другие операции были бы невозможны.
Реализация потоков
Рассмотрим два основных способа реализации потоков.
1. В пространстве процесса (пакет потоков целиком находится в пространстве процесса; ядро в этом случае о потоках ничего не знает; таблица потоков находится внутри пространства процесса). Достоинство этого способа – простота реализации.
2. В ядре (ядро управляет потоками). В ядре находится таблица потоков, которая содержит информацию о каждом потоке. Недостаток метода – большие затраты времени на блокировку и запуск потока, поскольку это реализуется как системный вызов к ядру операционной системы.
Для управления ресурсами и реализации многозадачности в ОС Windows существуют четыре сущности: задание, процесс, поток, нить.
Задание – это набор процессов с общими лимитами, управляемый как единое целое.
Нить – упрощенный поток, управляемый полностью в адресном пространстве пользователя.
Каждый процесс содержит по крайней мере один поток. Поток, в свою очередь, содержит как минимум одну нить.
В ОС UNIX при управлении процессами используются два основных типа информационных структур: дескриптор процесса и контекст процесса.
Дескрипторы процессов объединены в таблицу процессов. На основании таблицы процессов планировщик системы осуществляет переключение процессов и их синхронизацию. Дескриптор процесса содержит всю необходимую информацию о процессе.
Контекст процесса содержит информацию, необходимую для возобновления процесса с прерванного места, то есть операционную среду или окружение процесса. Это происходит, когда процесс был прерван планировщиком, а затем вновь запущен. При прерывании процесса контекст записывается, а при возобновлении выполнения – снова загружается в память и регистры.
Контекст содержит:
Значения регистров процессора.
Значение счетчика команд.
Информацию обо всех открытых файлах и другую информацию, характеризующую состояние операционной среды в момент остановки выполнения процесса.
И дескриптор, и контекст процесса доступны только программам ядра ОС. Отличаются они тем, что дескриптор – описание процесса, а контекст – описание его окружения.