
- •Введение
- •1. Основные понятия в операционных системах
- •1.1. Классификация и функции операционных систем
- •1.2. Ос общего назначения и реального времени
- •1.3. Выполнение команд в вычислительной системе
- •1.4. Прерывания
- •1.5 Архитектуры операционных систем
- •1.6. Управление оперативной памятью вычислительной системы
- •1.7. Общие сведения о процессах и потоках
- •2. Операционная система windows
- •2.1. Версии операционной системы Windows
- •2.2. Архитектура операционной системы windows
- •2.3. Процессы и потоки в Windows
- •2.4. Взаимодействие процессов
- •2.5. Управление потоками в Windows
- •2.6. Файловые системы Windows
- •2.7. Установка и последовательность загрузки Windows
- •Последовательность загрузки Windows xp
- •2.8. Интерпретатор команд и пакетные файлы
- •2.9. Конфигурирование Windows
- •3. Операционная система qnx neutrino
- •3.1. Версии операционной системы qnx Neutrino
- •3.2. Архитектура операционной системы qnx Neutrino
- •3.3. Процессы в qnx6
- •Завершение процесса
- •3.4. Потоки в qnx6
- •Завершение потока
- •3.5. Управление потоками и процессами в qnx6
- •Механизмы ipc
- •Средства синхронизации в qnx
- •3.6. Файловые системы qnx
- •Типы файлов
- •3.7. Инсталляция и последовательность загрузки qnx
- •3.8. Интерпретаторы команд и пакетные файлы в qnx
- •3.9. Конфигурирование qnx
- •4. Виртуальные машины
- •4.1. Общие сведения о виртуальных машинах
- •4.2. Работа с виртуальной машиной VmWare
- •5. Защита от сбоев и несанкционированного доступа
- •5.1. Принципы построения систем безопасности
- •5.2. Безопасность операционной системы windows
- •6. Сетевые возможности операционных систем
- •6.1. Аппратаное обеспечение локальных сетей
- •6.2. Сети Windows
- •6.3. Локальная сеть на основе qnet
- •6.4. Глобальные сети
- •7. Многопроцессорные системы
- •7.1. Архитектуры многопроцессорных операционных систем
- •7.2. Принципы функционирования smp
- •7.3. Принципы функционирования кластеров
- •Список использованной литературы
- •Компилятор
2.3. Процессы и потоки в Windows
С точки зрения программирования каждый процесс win32/64 включает компоненты (рис. 22):
один или несколько потоков;
виртуальное адресное пространство, отличное от адресных пространств других процессов, за исключением случаев явного разделения памяти;
один или более сегментов кода, включая код DLL;
Рис. 22. Структура процесса и его потоков
один или более сегментов данных, содержащих глобальные переменные;
строки окружения с информацией о переменных окружениях, таких как текущий путь поиска файла и др.;
память кучи процесса;
ресурсы процесса (открытые дескрипторы, файлы, другие кучи).
Атрибуты процесса и потока в Windows приведены в табл. 2.
Атрибуты процесса и потока в Windows Таблица 2
Процесс |
Поток |
Идентификатор процесса - уникальное значение, идентифицирующее процесс в ОС |
Идентификатор потока - уникальное значение, идентифицирующее поток, когда он вызывает сервис. |
Дескриптор защиты – описывает, кто создал процесс, права доступа и пр. |
Контекст потока – набор значений регистров, которыми определяется состояние выполняемого потока. |
Базовый приоритет – базовый приоритет для потоков |
Динамический приоритет - приоритет выполняемого потока в данный момент. Базовый приоритет – нижний приоритет динамического приоритета потока. |
Родственность процессов по умолчанию – заданный по умолчанию набор процессов, где возможно выполнение потоков. |
Родственность процессов по потоку – множество процессов, где возможно выполнение потоков. |
Время выполнения – суммарное время, затраченное на выполнение всех потоков в процессе. |
Время выполнения потока - совокупное время, затраченное на выполнение потока в пользовательском режиме и режиме ядра. |
Счётчик ввода/вывода - переменные, в которые заносятся сведения о количестве и типе операций ввода/вывода, выполненных потоками процесса. |
Статус извещения (оповещения) – этот флаг, который указывает, следует ли потоку выполнять асинхронный вызов процедуры. |
Счётчик операций с виртуальной памятью – это переменные, в которые заносятся сведения о количестве и типе операций с виртуальной памятью выполненных потоками процесса. |
Счётчик приостановок – в нём указывается, сколько раз выполнение потока было приостановлено без последующего возобновления. |
Квоты – максимальное количество страничной памяти и процессорного времени доступного процессу |
Маркеры режима анонимного воплощения – это временный признак доступа. |
Порты исключения/отладки – это каналы обмена информацией между процессами, в которые диспетчер процессов должен отправлять сообщения при возникновении исключительных ситуаций одного из потоков процесса. |
Порт завершения – это канал обмена информацией между процессами, куда диспетчер процессов отправляет сообщения при завершении потока. |
Статус выхода – причины завершения процесса |
Статус выхода – причины завершения потока |
Все потоки процесса совместно используют код, глобальные переменные, строки окружения и ресурсы процесса [3]. Каждый поток планируется независимо. Поток включает следующие элементы:
стек вызова процедур, переменных, обработчиков исключений и автоматических данных;
локальная память потока – это массивы указателей, которые дают возможность процессу выделить память для создания собственного уникального окружения данных потока;
структура контекста, управляемая ядром, содержащая значение аппаратных регистров.
Некоторые атрибуты потока подобны атрибутам процессов. Значениия таких атрибутов потока извлекаются из значений атрибутов процесса. Например, в многопроцессорной системе родственные процессоры по потоку – это множество процессоров, на которых может выполняться данный поток. Оно совпадает с множеством процессоров родственных по процессу или является его подмножеством. Информация, содержащаяся в контексте потока, позволяет ОС приостанавливать и возобновлять потоки [9]. Основные функции управления процессами и потоками показаны в табл.3.
Сервисы процесса и потока в Windows Таблица 3
Процесс |
Поток |
Создание процесса CreateProcess(). |
Создание потока CreateThread(). |
Открытие процесса OpenProcess(). |
Открытие потока OpenThread() |
Информация по запросу процесса |
Информация по запросу потока |
Информация по наладке процесса |
Информация по наладке потока |
Текущий процесс GetCurrentProcessID() |
Текущий поток GetCurrentThreadID() |
Прекращение процесса ExitProcess() |
Завершение потока ExitThread() |
|
Получение контекста |
Установка контекста |
|
Приостановка Delay() |
|
Возобновление |
|
Извещение потоков |
|
Проверка извещения потока |
|
Порт регистрации завершения. |
Основной функцией для управления процессом win32 является функция CreateProcess(). Она создаёт процесс с одним потоком. Так как процесс требует наличие кода, то в вызове функции CreateProcess() необходимо указывать имя исполняемого файла программы. Функция имеет 10 параметров и при успешном выполнении возвращает дескрипторы для процесса и для первичного потока. Дополнительные потоки можно создать функцией CreateThread(). Для Windows все процессы одинаковы, и она не различает дочерние и родительские, в отличие от Unix.
Жизненный цикл потока в Windows (рис 23) проходит следующие шесть состояний [3]:
Готовый к выполнению: это поток, который может быть направлен на выполнение, у него есть все необходимые ресурсы кроме процессорного времени. Диспетчер микроядра отслеживает, все готовые потоки и осуществляет их планирование в соответствии с их приоритетом.
Резервный ‑ это поток, который будет запущен следующим на данном процессоре. Поток находится в этом состоянии до тех пор, пока процессор не освободится. Если приоритет резервного потока достаточно высок, то он может вытеснить выполняющийся в данный момент поток, иначе он ждёт, пока не произойдёт блокировка выполняющегося потока или пока не истечёт выделенный ему квант времени.
Рис. 23. Жизненный путь потока в Windows
Выполняющийся: как только микроядро переключит поток, резервный поток перейдёт в состояние выполнения и будет в нём находится, пока не произойдёт одно из событий: поток будет вытеснен более приоритетным потоком, если закончится квант времени, будет блокирован или завершён.
Ожидающее: поток входит в состояние ожидания, если он блокирован каким-либо событием (например, операцией ввода/вывода); он добровольно ждёт синхронизации; среда подсистемы предписывает потоку, чтобы он сам себя остановил. После удовлетворения условий ожидания, поток переходит в состояние готовности, если все его ресурсы доступны.
Переходное: поток готов к выполнению, но не все ресурсы необходимые ему для работы доступны. При доступности всех ресурсов он переходит в состояние готовности.
Завершающее: завершение потока может быть инициировано самим потоком, другим процессом или может произойти вместе с завершением родительского процесса.
После завершения необходимых операций освобождения ресурсов поток удаляется из операционной системы.