
- •Число: 4.9.12. Лекция номер 1. Вычислительные процессы.
- •Формальное определение процесса.
- •Реализация процесса.
- •11.09.12 Лекция номер 2. Вычислительный процесс. Простейшие модели вычислительных процессов. Отношения между элементами вп.
- •Простейшие модели вп.
- •Автоматы с магазинной памятью.
- •13.09.12 Лекция 3.
- •Разновидности вп.
- •Какая-то тема.
- •18.09.12. Лекция 4. Состав ядра ос.
- •25.09.12. Лекция 5. Архитектура памяти.
- •Виртуальная память.
- •Флаги защиты для страниц.
- •26.9.12 Лекция 6. Страничная сегментная адресация. Продолжение.
- •Некоторые особенности 64-х разрядных систем.
- •27.9.12 Лекция 7. Продолжение и изучение виртуальной памяти.
- •2.10 Лекция номер 8 Потоки.
- •9.10 Лекция номер 9.
- •Алгоритмы диспетчирезации.
- •Методы планирования мультипрограммных систем.
- •16.10.12. Лекция номер 10. Продолжение темы диспетчирезаии.
- •Пояснение к выполнению курсовой работы.
- •Алгоритмы планирования.
- •Приоритеты потока.
- •Системы реального времени.
- •22.11.12 Следующая.
- •Синхронизирующие примитивные системы.
- •Сети Петри.
- •Очереди сообщений.
- •Продолжении лекции.
- •Файлы проецируемые в памяти.
- •Системы ввода вывода.
2.10 Лекция номер 8 Потоки.
Потоком называется объект ядра (Thread) отвечающий за выполнение программного кода в процессе при инициализации процесса система создает его первичный поток. Первичный поток начинает свое выполнение с функции main в консольных приложениях или WinMain в приложениях обладающих GUI и существует до тех пор пока main или WinMain не вернет управление. Большинство процессов (несколько устаревшая информаци) обходятся одним потоком однако(с присутствующим многоядерностью и многопроцессорностью) создается несколько главных потоков выполняющих код параллельно. На системах с одним процессором или одним ядром, диспетчер последовательно переключает процессор между запущенными потоками, потоки представлены на уровне ОС блоком со следующими структурами:
Thread ID – индентификатор потока. ( вещь угикальная)
Стартовый адрес потока- данные о стеке потока в двух возможных режимах.
Контекст потока
Информация для деспетчиризации. (ее много)
Время создания и завершения потока.
Информация о локальной памяти потока. (TLS)
Фактически в контексте потока выделяются три составляющие:
Пользовательский контекст
Системный контекст. Заносится:
Стек ядра.
Записи таблицы областей процесса, сопоставление из LDT.
Регистровый контекст:
Счетчик команд
Регистр состояния процессора
Указатель вершины стека (stack pointer).
Информация о состоянии регистров потока.
Контекст– аппаратно зависимая структура, описание контекстов можно найти в структуре контекстов Context SDK WinAPI.
Переключение контекста потока происходит в следующих случаях:
Когда текущий процесс "засыпает" ожидая освобождения недоступного ему на данный момент ресурса.
Когда текущий процесс завершает свое выполнение отдавая управление ОС
Если в очередь поступил процесс с более высоким приоритетом
Если "пробудился" процесс ожидавший долгое время находившийся в системе и ему присвоен более высокий приоритет.
Для хранения набора переменных окружения используются ini файлы или ключи системного реестра. При порождении нового процесса происходит следующее: резервируется место в области свопинга для сегмента данных и стека процесса, сохраняются переменные окружения, в таблице процессов появляется новая запись и процессу присваивается уникальный ID, генерируется таблица описателей, связывающий виртуальный адрес в физич, инициализируется контекст процесса путем копирования с родительского контекста, процесс помечается готовым к запуску и отправляется в очередь на исполнение. Завершение процесса проходит в несколько этапов:
Отключаются все сигналы
Закрываются все открытые файлы
В соответствующей записи таблицы описателей сохраняется код возврата.
Родительскому процессу направляется сигнал о закрытии потомка.
Уничтожается контекст завершаемого процесса.
Эта последовательность шагов выполняется каждый раз при закрытии пользовательского/системного процесса.
В таблице приведем различия для процессов и потоков характерные для каждого из них.
Элементы процесса присущие всем потокам процесса |
Элементы потока, присущие индивидуальные для потока |
Адресное пространство |
Счетчик команд |
Глобальные переменные |
Регистры |
Открытые файлы |
Стек |
Дочерние процессы |
Состояние |
Аварийные сигналы |
|
Обработчики сигналов |
|
Ресурсы |
|
Многопоточность это свойство присущие разным ОС, потоки реализованы как достаточно самостоятельная часть системы платформы windows и как интегрированная вовлеченная часть (*nix) системы. Работа с потоками предполагает наличие механизмов позволяющих выполнять управлением потока так же как и процессом. Многие функции работы с потоками переносятся со структуры процессов, можно отправлять в сон заставляя их заснуть, возобновляя выполнение, завершая их выполнение.