Процессы и потоки в ОС Windows
Государственное образовательное учреждение
высшего профессионального образования
ОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
имени Ф. М. Достоевского
Реферат
по дисциплине «Операционные системы»
на тему: «Процессы и потоки в ОС 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]
Заключение
Многозадачность увеличивает объем работы, выполняемой системой, потому что большинство потоков не могут исполняться непрерывно. Периодически поток прекращает выполнение и ждет пока другой поток, например, освободит ресурс необходимый первому. Благодаря многозадачности, пока один поток ожидает, может выполняться другой поток, и время процессора не расходуется впустую.
Вытесняющая многозадачность (preemptive multitasking) – это разновидность многозадачности, при которой ОС не ждет, пока поток добровольно предоставит процессор другим потокам. Вместо этого ОС прерывает поток, после того как он выполнялся в течение заранее заданного периода времени, так называемого кванта времени (time quantum), или когда готов к выполнению поток с большим приоритетом. Вытеснение предотвращает монополизацию процессора одним потоком и предоставляет другим потокам их долю процессорного времени. Windows NT – это система с вытесняющей многозадачностью. В невытесняющих системах, поток должен был добровольно передавать управление процессором. Плохие программы могут захватить процессор и нарушить работу других приложений или всей системы.
Список литературы:
1. М. Русинович, Д. Соломин Внутреннее устройство Windows : Windows Server 2003, Windows XP, Windows 2000. Мастер-класс. / Пер. с анг. – 4 -е изд. – М. : Издательско-торговый дом «Русская редакция» ; СПб. : Питер, 2005. – 992 с.
2. Э. Таненбаум Современные операционные системы. 3 -е изд. ; СПб. : Питер, 2010. – 1120 с.
3. Источник: http://5fan.ru/ wievjob.php?id=11513
4. http://rudocs.exdat.com/docs2/ index-602886.html?page=9
5. https://av239.wordpress.com/ 2011/B2-windows/

- Процессы и проблемы разгосударствления и приватизации в России
- Процессы и производственные линии замораживания продуктов растительного происхождения (овощи)
- Процессы межличностного взаимодействия
- Процессы нагревания и охлаждения воздуха
- Процессы над ведьмами
- Процессы над ведьмами в Вале
- Процессы памяти: запоминание, сохранение, воспроизведение, забывание. Виды памяти
- Процессы и аппараты
- Процессы и аппараты измельчения при производстве портландцемента по мокрому способу
- Процессы и аппараты химического производства
- Процессы и закономерности памяти
- Процессы и механизм обеспечения экономической безопасности торгового предприятия
- Процессы и механизм обеспечения экономической безопасности торгового предприятия
- Процессы интернационализации и интеграции в мировой экономике