Процессы и потоки в ОС Windows

Автор работы: Пользователь скрыл имя, 01 Мая 2016 в 14:38, реферат

Описание работы

В разных ОС процессы реализованы по-разному. Они различаются своим представлением (структурами данных), способами именования и защиты, а также отношениями между собой. Базовые процессы Windows имеют ряд характеристик, отличающих их от процессов других ОС:
процессы реализованы как объекты, и доступ к ним осуществляется посредством объектных сервисов;
в адресном пространстве процесса может исполняться несколько потоков;
объект-процесс и объект-поток имеют встроенные возможности синхронизации.

Содержание работы

Введение……………………………………………………………
Структура ОС Windows…………………………………………………
Подсистема Win32………………………………………………………
Объекты ядра…………………………………………………………
Процессы и потоки в ОС Windows………………………………………..
Заключение…………………………………………………………………
Список литературы………………………………………………………

Файлы: 1 файл

Реферат ОС.docx

— 334.28 Кб (Скачать файл)

Государственное образовательное учреждение

высшего профессионального образования

ОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

имени Ф. М. Достоевского

 

 

 

 

 

 

 

 

Реферат

по дисциплине «Операционные системы»

на тему: «Процессы и потоки в ОС Windows»

 

 

 

 

Выполнила:

Студентка 3-го курса

гр. СИБ-301У

Плотникова Т.М.

 

 

 

 

 

 

 

 

 

2016 г. 
Содержание

Введение…………………………………………………………

  1. Структура ОС Windows…………………………………………………
  2. Подсистема Win32………………………………………………………
  3. Объекты ядра…………………………………………………………
  4. Процессы и потоки в  ОС Windows………………………………………..

Заключение…………………………………………………………………

Список литературы……………………………………………………

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

 

В однозадачной ОС пользователь может запустить одновременно не более одной программы и только после того как она закончит работу можно будет запустить другую. В многозадачной ОС пользователи могут одновременно запускать несколько программ или даже несколько копий одной программы.

В чем разница между программой и процессом? Программа – это статическая последовательность команд, а процесс  – это программа и системные ресурсы, необходимые для ее выполнения. Процесс является субъектом владения ресурсами и единицей работы. ОС выделяет каждому процессу порцию системных ресурсов и гарантирует, что программа каждого процесса будет направляться на исполнение в определенном порядке и своевременно.

ОС содержит блок кода, управляющий созданием и удалением процессов, а также отношениями между ними. Этот код называется структурой процессов и в ОС Windows  реализован диспетчером процессов. Его основная задача предоставить набор базовых сервисов процесса, которые подсистемы среды могли бы использовать для эмуляции своих собственных уникальных структур процессов.[1]

В разных ОС процессы реализованы по-разному. Они различаются своим представлением (структурами данных), способами именования и защиты, а также отношениями между собой. Базовые процессы Windows  имеют ряд характеристик, отличающих их от процессов других ОС:

  • процессы реализованы как объекты, и доступ к ним осуществляется посредством объектных сервисов;

  • в адресном пространстве процесса может исполняться несколько потоков;

  • объект-процесс и объект-поток имеют встроенные возможности синхронизации.

 

 

 

 

 

 

 

 

 

 

 

    1. Структура ОС Windows

 

Рис 1. Структура ОС Windows

Первые версии системы имели микроядерный дизайн, основанный на микроядре Mach, которое было разработано в университете Каренги-Меллона. Архитектура более поздних версий системы микроядерной уже не является.

Большой объем системного кода (управление системными вызовами и экранная графика) был перемещен из адресного пространства пользователя в пространство ядра и работает в привилегированном режиме.

Рис 2. Структура ОС Windows

В результате в ядре ОС Windows переплетены элементы микроядерной архитектуры и элементы монолитного ядра (комбинированная система).   Основные компоненты ядра Windows располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений (микроядерна архитектура). В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром.[3]

 

    1. Подсистема 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 –функций может возникнуть одна из трех ситуаций:

  1. Функция полностью выполняется внутри dll (шаг 1)
  2. Для выполнения функции привлекается сервер csrss, для чего ему посылается сообщение (шаг 2а, за которым обычно следуют шаги 2b и 2c)
  3. Данный вызов транслируется в системный сервис (системный вызов), который обрабатывается в модуле ntdll.dll (шаги 3а и 3b). Например, win32 –функция ReadFile выполняется с помощью недокументированного серсива NtReadFile. [4]

 

    1. Объекты ядра

 

Для работы с важными системными ресурсами ОС Windows создает объекты, управление которыми осуществляет менеджер объектов.

 

 

- ядро поддерживает базовые  объекты двух типов: объекты диспетчера (события, мьютексы, семафоры, потоки ядра, таймеры и др.) и управляющие (DPC, APC, прерывания, процессы, профили и др.)

- Над объектами ядра находятся  объекты исполнительной системы, каждый из которых инкапсулирует  один или более объектов ядра. Объекты исполнительной системы  предназначены для управления  памятью, процессами и межпроцессроным обменом. К ним относятся такие объекты, как: процесс, поток, открытый файл, семафор, мьютекс, маркер доступа и ряд других. Эти объекты и называются объектами ядра в руководствах по программированию.[2]

 

    1. Процессы и потоки в ОС Windows

 

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

Задача ОС состоит в том, чтобы организовать их поддержку, которая подразумевает, что каждый процесс получит все необходимые ему ресурсы.

Независимые процессы не должны влиять друг на друга, а процессы, которым необходимо обмениваться информацией, должны иметь возможность сделать это путем межпроцессного взаимодействия.

В Windows процесс – это объект, создаваемый и уничтожаемый менеджером объектов. Процесс содержит потоки, учетную информацию и ссылки на ресурсы, которые обобществляются всеми потоками процесса.

Процесс в Windows состоит из следующих компонентов:

- структура данных, содержащая  всю информацию о процессе, в  том числе список открытых  дескрипторов различных системных  ресурсов, уникальный идентификатор  процесса, различную статистическую  информацию и т.д.;

- адресное пространство - диапазон  адресов виртуальной памяти, которым  может пользоваться процесс;

- исполняемая программа и данные, проецируемые на виртуальное  адресное пространство процесса.

Поток — некая сущность внутри процесса, получающая процессорное время для выполнения. Без потока программа процесса не может выполняться. Поток включает следующие наиболее важные элементы:

- содержимое набора регистров  процессора, отражающих состояние  процессора;

- два стека, один из которых  используется потоком при выполнении  в режиме ядра, а другой —  в пользовательском режиме;

- закрытую область памяти, называемую  локальной памятью потока и  используемую подсистемами, библиотеками  исполняющих систем и DLL;

- уникальный идентификатор потока;

- иногда потоки обладают своим  контекстом защиты, который обычно  используется многопоточными серверными  приложениями, подменяющими контекст  защиты обслуживаемых клиентов.

Выбор текущего потока из нескольких активных потоков, пытающихся получить доступ к процессору называется планированием.

Выбранный для выполнения поток работает в течение некоего периода, называемого квантом, по истечении которого поток вытесняется. Предполагается, что поток не знает, в какой момент он будет вытеснен. Поток также может быть вытеснен даже, если его квант еще не истек.

Процедура планирования обычно связана с весьма затратной процедурой диспетчеризации - переключением процессора на новый поток, поэтому планировщик должен заботиться об эффективном использовании процессора. Принадлежность потоков к процессу при планировании не учитывается, то есть единицей планирования в ОС Windows является именно поток.[2]

Создание процессов

Создание Win32 процесса осуществляется вызовом одной из таких функций, как CreateProcess, CreateProcessAsUser и CreateProcessWithLogonW и происходит в несколько этапов:

- Открывается файл образа (EXE), который  будет выполняться в процессе. Если исполняемый файл не является Win32 приложением, то ищется образ  поддержки для запуска этой  программы. Например, если исполняется  файл с расширением .bat, запускается cmd.exe и т.п.

- Создается объект Win32 «процесс».

- Создается первичная нить (стек, контекст и объект «нить»).

- Подсистема Win32 уведомляется о  создании нового процесса и  нити.

- Начинается выполнение первичной  нити.

- В контексте нового процесса  и потока инициализируется адресное  пространство и начинается выполнение  программы.

Сервисы процесса и потока в Windows (Таблица 1)

 
Процесс

 
Поток

 
Создание процесса CreateProcess().

 
Создание потока CreateThread().

 
Открытие процесса OpenProcess().

 
Открытие потока OpenThread()

 
Информация по запросу процесса

 
Информация по запросу потока

 
Информация по наладке процесса

 
Информация по наладке потока

 
Текущий процесс GetCurrentProcessID()

 
Текущий поток GetCurrentThreadID()

 
Прекращение процесса ExitProcess()

 
Завершение потока ExitThread()

 

 

 
Получение контекста

 
Установка контекста

 
Приостановка Delay()

 
Возобновление

 
Извещение потоков

 
Проверка извещения потока

 
Порт регистрации завершения.


 

Основной функцией для управления процессом win32 является функция CreateProcess(). Она создаёт процесс с одним потоком. Так как процесс требует наличие кода, то в вызове функции CreateProcess() необходимо указывать имя исполняемого файла программы. Функция имеет 10 параметров и при успешном выполнении возвращает дескрипторы для процесса и для первичного потока. Дополнительные потоки можно создать функцией CreateThread(). Для Windows все процессы одинаковы, и она не различает дочерние и родительские, в отличие от Unix.  
 
Жизненный цикл потока в Windows (Рис. 4) проходит следующие шесть состояний [3]: 
 
Готовый к выполнению: это поток, который может быть направлен на выполнение, у него есть все необходимые ресурсы кроме процессорного времени. Диспетчер микроядра отслеживает, все готовые потоки и осуществляет их планирование в соответствии с их приоритетом. 
 
Резервный   это поток, который будет запущен следующим на данном процессоре. Поток находится в этом состоянии до тех пор, пока процессор не освободится. Если приоритет резервного потока достаточно высок, то он может вытеснить выполняющийся в данный момент поток, иначе он ждёт, пока не произойдёт блокировка выполняющегося потока или пока не истечёт выделенный ему квант времени. 
 
 
                                    Рис. 4. Жизненный путь потока в Windows 
 
Выполняющийся: как только микроядро переключит поток, резервный поток перейдёт в состояние выполнения и будет в нём находится, пока не произойдёт одно из событий: поток будет вытеснен более приоритетным потоком, если закончится квант времени, будет блокирован или завершён. 
 
Ожидающее: поток входит в состояние ожидания, если он блокирован каким-либо событием (например, операцией ввода/вывода); он добровольно ждёт синхронизации; среда подсистемы предписывает потоку, чтобы он сам себя остановил. После удовлетворения условий ожидания, поток переходит в состояние готовности, если все его ресурсы доступны. 
 
Переходное: поток готов к выполнению, но не все ресурсы необходимые ему для работы доступны. При доступности всех ресурсов он переходит в состояние готовности. 
 
                                           Завершение процессов

Процесс завершается если:

- Входная функция первичной  нити возвратила управление.

- Одна из нитей процесса вызвала  функцию ExitProcess.

- Нить другого процесса вызвала  функцию TerminateProcess.

Когда процесс завершается, все User- и GDI_объекты, созданные процессом, уничтожаются, объекты ядра закрываются (если их не использует другой процесс), адресное пространство процесса уничтожается.[5]

Информация о работе Процессы и потоки в ОС Windows