Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Управление процессами в ОС Windows




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

 

  • Структура данных, содержащая всю информацию о процессе, в том числе список открытых дескрипторов различных системных ресурсов, уникальный идентификатор процесса, различную статистическую информацию и т.д.;
  • Адресное пространство - диапазон адресов виртуальной памяти, которым может пользоваться процесс;
  • Исполняемая программа и данные, проецируемые на виртуальное адресное пространство процесса.
  • Новые процессы создаются при помощи функции Win32 API (ApplicationProgrammingInterface – интерфейс прикладного программирования, или набор функций, которые операционная система предоставляет программисту) CreateProcessWithLogonW и происходит в несколько этапов:
    открывается файл образа (ЕХЕ), который будет выполняться в процессе. Если исполняемый файл не является Win32 приложением, то ищется образ поддержки (supportimage) для запуска этой программы. Например, если исполняется файл с расширением .bat, запускается cmd.exe и т.п.
  • Создается объект Win32 «процесс».
  • Создается первичный поток (стек, контекст и объект «поток»).
  • Подсистема Win32 уведомляется о создании нового процесса и потока.
  • Начинается выполнение первичного потока.
  • В контексте нового процесса и потока инициализируется адресное пространство (например, загружаются требуемые DLL) и начинается выполнение программы.

 

У этой функции 10 параметров, каждый из которых может задаваться в различных вариантах:

1. Указатель на имя исполняемого файла.
2. Сама командная строка (непроанализированная)

3. Указатель на описатель защиты процесса.
4. Указатель на описатель защиты для начального потока.
5. Бит, управляющий наследованием дескрипторов.
6. Разнообразные флаги (например, режим ошибки, приоритет, отладка, консоли).
7. Указатель на строки окружения.
8. Указатель на имя текущего рабочего каталога нового процесса.
9. Указатель на структуру, описывающую начальное окно на экране.
10. Указатель на структуру, возвращающую вызывающему процессу 18 значений.
Создание потоков

 

Первичный поток создается автоматически при создании процесса. Остальные потоки создаются функциями CreateRemoteThread.
Завершение потоков
Поток завершается если
- Функция потока возвращает управление.
- Поток самоуничтожается, вызвав ExitThread.
- Другой поток данного или стороннего процесса вызывает TerminateThread.
- Завершается процесс, содержащий данный поток.
Завершение процессов
Функция ExitProcess – завершить текущий процесс и все его потоки
Процесс завершается если:
- Входная функция первичного потока возвратила управление.
- Один из потоков процесса вызвал функцию ExitProcess.
- Поток другого процесса вызвал функцию TerminateProcess.
Когда процесс завершается, все User- и GDI-объекты, созданные процессом, уничтожаются (если их не использует другой процесс), адресное пространство процесса уничтожается










Последнее изменение этой страницы: 2018-04-12; просмотров: 449.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...