Процессы и потоки в ОС Windows
Реферат, 01 Мая 2016, автор: пользователь скрыл имя
Описание работы
В разных ОС процессы реализованы по-разному. Они различаются своим представлением (структурами данных), способами именования и защиты, а также отношениями между собой. Базовые процессы Windows имеют ряд характеристик, отличающих их от процессов других ОС:
процессы реализованы как объекты, и доступ к ним осуществляется посредством объектных сервисов;
в адресном пространстве процесса может исполняться несколько потоков;
объект-процесс и объект-поток имеют встроенные возможности синхронизации.
Содержание работы
Введение……………………………………………………………
Структура ОС Windows…………………………………………………
Подсистема Win32………………………………………………………
Объекты ядра…………………………………………………………
Процессы и потоки в ОС Windows………………………………………..
Заключение…………………………………………………………………
Список литературы………………………………………………………
Файлы: 1 файл
Реферат ОС.docx
— 334.28 Кб (Скачать файл)Государственное образовательное учреждение
высшего профессионального образования
ОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
имени Ф. М. Достоевского
Реферат
по дисциплине «Операционные системы»
на тему: «Процессы и потоки в ОС Windows»
Выполнила:
Студентка 3-го курса
гр. СИБ-301У
Плотникова Т.М.
2016 г.
Содержание
Введение…………………………………………………………
- Структура ОС Windows…………………………………………………
- Подсистема Win32………………………………………………………
- Объекты ядра…………………………………………………………
- Процессы и потоки в ОС Windows………………………………………..
Заключение……………………………………………………
Список литературы……………………………………………………
Введение
В однозадачной ОС пользователь может запустить одновременно не более одной программы и только после того как она закончит работу можно будет запустить другую. В многозадачной ОС пользователи могут одновременно запускать несколько программ или даже несколько копий одной программы.
В чем разница между программой и процессом? Программа – это статическая последовательность команд, а процесс – это программа и системные ресурсы, необходимые для ее выполнения. Процесс является субъектом владения ресурсами и единицей работы. ОС выделяет каждому процессу порцию системных ресурсов и гарантирует, что программа каждого процесса будет направляться на исполнение в определенном порядке и своевременно.
ОС содержит блок кода, управляющий созданием и удалением процессов, а также отношениями между ними. Этот код называется структурой процессов и в ОС Windows реализован диспетчером процессов. Его основная задача предоставить набор базовых сервисов процесса, которые подсистемы среды могли бы использовать для эмуляции своих собственных уникальных структур процессов.[1]
В разных ОС процессы реализованы по-разному. Они различаются своим представлением (структурами данных), способами именования и защиты, а также отношениями между собой. Базовые процессы Windows имеют ряд характеристик, отличающих их от процессов других ОС:
процессы реализованы как объекты, и доступ к ним осуществляется посредством объектных сервисов;
в адресном пространстве процесса может исполняться несколько потоков;
объект-процесс и объект-поток имеют встроенные возможности синхронизации.
- Структура ОС Windows
Рис 1. Структура ОС Windows
Первые версии системы имели микроядерный дизайн, основанный на микроядре Mach, которое было разработано в университете Каренги-Меллона. Архитектура более поздних версий системы микроядерной уже не является.
Большой объем системного кода (управление системными вызовами и экранная графика) был перемещен из адресного пространства пользователя в пространство ядра и работает в привилегированном режиме.
Рис 2. Структура ОС Windows
В результате в ядре ОС Windows переплетены элементы микроядерной архитектуры и элементы монолитного ядра (комбинированная система). Основные компоненты ядра Windows располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений (микроядерна архитектура). В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром.[3]
- Подсистема Win32
Рис 3. Подсистема Win32
Основные компоненты Win 32:
- Ntoskrnl.exe – исполнительная система и ядро;
- Ntdll.dll – внутренние функции поддержки и интерфейсы диспетчера системных сервисов с функциями исполнительной системы;
- Hal.dll – уровень абстрагирования от оборудования;
- Win32k.sys – часть подсистемы Win32, работающая в режиме ядра;
- Kernel32.dll, advapi32.dll, user32.dll, gdi32.dll – основные dll подсистемы win32.
При вызове приложением одной из win32 –функций может возникнуть одна из трех ситуаций:
- Функция полностью выполняется внутри dll (шаг 1)
- Для выполнения функции привлекается сервер csrss, для чего ему посылается сообщение (шаг 2а, за которым обычно следуют шаги 2b и 2c)
- Данный вызов транслируется в системный сервис (системный вызов), который обрабатывается в модуле ntdll.dll (шаги 3а и 3b). Например, win32 –функция ReadFile выполняется с помощью недокументированного серсива NtReadFile. [4]
- Объекты ядра
Для работы с важными системными ресурсами ОС Windows создает объекты, управление которыми осуществляет менеджер объектов.
- ядро поддерживает базовые объекты двух типов: объекты диспетчера (события, мьютексы, семафоры, потоки ядра, таймеры и др.) и управляющие (DPC, APC, прерывания, процессы, профили и др.)
- Над объектами ядра находятся
объекты исполнительной
- Процессы и потоки в ОС Windows
Процесс является динамическим объектом, описывающим выполнение программы. Процессу выделяются системные ресурсы: закрытое адресное пространство, семафоры, коммуникационные порты, файлы и т.д. Процесс характеризуется текущим состоянием (выполнение, ожидание, готовность и т.д.).
Задача ОС состоит в том, чтобы организовать их поддержку, которая подразумевает, что каждый процесс получит все необходимые ему ресурсы.
Независимые процессы не должны влиять друг на друга, а процессы, которым необходимо обмениваться информацией, должны иметь возможность сделать это путем межпроцессного взаимодействия.
В Windows процесс – это объект, создаваемый и уничтожаемый менеджером объектов. Процесс содержит потоки, учетную информацию и ссылки на ресурсы, которые обобществляются всеми потоками процесса.
Процесс в Windows состоит из следующих компонентов:
- структура данных, содержащая
всю информацию о процессе, в
том числе список открытых
дескрипторов различных
- адресное пространство - диапазон адресов виртуальной памяти, которым может пользоваться процесс;
- исполняемая программа и
Поток — некая сущность внутри процесса, получающая процессорное время для выполнения. Без потока программа процесса не может выполняться. Поток включает следующие наиболее важные элементы:
- содержимое набора регистров процессора, отражающих состояние процессора;
- два стека, один из которых
используется потоком при
- закрытую область памяти, называемую локальной памятью потока и используемую подсистемами, библиотеками исполняющих систем и DLL;
- уникальный идентификатор
- иногда потоки обладают своим
контекстом защиты, который обычно
используется многопоточными
Выбор текущего потока из нескольких активных потоков, пытающихся получить доступ к процессору называется планированием.
Выбранный для выполнения поток работает в течение некоего периода, называемого квантом, по истечении которого поток вытесняется. Предполагается, что поток не знает, в какой момент он будет вытеснен. Поток также может быть вытеснен даже, если его квант еще не истек.
Процедура планирования обычно связана с весьма затратной процедурой диспетчеризации - переключением процессора на новый поток, поэтому планировщик должен заботиться об эффективном использовании процессора. Принадлежность потоков к процессу при планировании не учитывается, то есть единицей планирования в ОС Windows является именно поток.[2]
Создание процессов
Создание Win32 процесса осуществляется вызовом одной из таких функций, как CreateProcess, CreateProcessAsUser и CreateProcessWithLogonW и происходит в несколько этапов:
- Открывается файл образа (EXE), который
будет выполняться в процессе.
Если исполняемый файл не
- Создается объект Win32 «процесс».
- Создается первичная нить (стек, контекст и объект «нить»).
- Подсистема Win32 уведомляется о создании нового процесса и нити.
- Начинается выполнение
- В контексте нового процесса
и потока инициализируется
Сервисы процесса и потока в Windows (Таблица 1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
|
Основной функцией
для управления процессом win32 является
функция CreateProcess(). Она создаёт процесс
с одним потоком. Так как процесс требует
наличие кода, то в вызове функции CreateProcess()
необходимо указывать имя исполняемого
файла программы. Функция имеет 10 параметров
и при успешном выполнении возвращает
дескрипторы для процесса и для первичного
потока. Дополнительные потоки можно создать
функцией CreateThread(). Для Windows все процессы
одинаковы, и она не различает дочерние
и родительские, в отличие от Unix.
Жизненный цикл потока
в Windows (Рис. 4) проходит следующие шесть
состояний [3]:
Готовый к выполнению: это поток,
который может быть направлен на выполнение,
у него есть все необходимые ресурсы кроме
процессорного времени. Диспетчер микроядра
отслеживает, все готовые потоки и осуществляет
их планирование в соответствии с их приоритетом.
Резервный
это поток, который
будет запущен следующим на данном процессоре.
Поток находится в этом состоянии до тех
пор, пока процессор не освободится. Если
приоритет резервного потока достаточно
высок, то он может вытеснить выполняющийся
в данный момент поток, иначе он ждёт, пока
не произойдёт блокировка выполняющегося
потока или пока не истечёт выделенный
ему квант времени.
Рис. 4. Жизненный путь
потока в Windows
Выполняющийся: как только микроядро
переключит поток, резервный поток перейдёт
в состояние выполнения и будет в нём находится,
пока не произойдёт одно из событий: поток
будет вытеснен более приоритетным потоком,
если закончится квант времени, будет
блокирован или завершён.
Ожидающее: поток входит в состояние
ожидания, если он блокирован каким-либо
событием (например, операцией ввода/вывода);
он добровольно ждёт синхронизации; среда
подсистемы предписывает потоку, чтобы
он сам себя остановил. После удовлетворения
условий ожидания, поток переходит в состояние
готовности, если все его ресурсы доступны.
Переходное: поток готов к выполнению,
но не все ресурсы необходимые ему для
работы доступны. При доступности всех
ресурсов он переходит в состояние готовности.
Завершение процессов
Выполняющийся: как только микроядро переключит поток, резервный поток перейдёт в состояние выполнения и будет в нём находится, пока не произойдёт одно из событий: поток будет вытеснен более приоритетным потоком, если закончится квант времени, будет блокирован или завершён.
Ожидающее: поток входит в состояние ожидания, если он блокирован каким-либо событием (например, операцией ввода/вывода); он добровольно ждёт синхронизации; среда подсистемы предписывает потоку, чтобы он сам себя остановил. После удовлетворения условий ожидания, поток переходит в состояние готовности, если все его ресурсы доступны.
Переходное: поток готов к выполнению, но не все ресурсы необходимые ему для работы доступны. При доступности всех ресурсов он переходит в состояние готовности.
Процесс завершается если:
- Входная функция первичной нити возвратила управление.
- Одна из нитей процесса
- Нить другого процесса вызвала функцию TerminateProcess.
Когда процесс завершается, все User- и GDI_объекты, созданные процессом, уничтожаются, объекты ядра закрываются (если их не использует другой процесс), адресное пространство процесса уничтожается.[5]