Лаб. работа “Управление процессами в Windows”
Системное программирование
Практика
Цель лабораторной работы
Изучение механизмов управления процессами в операционной системе Windows, приобретение навыков программирования для создания, завершения, приостановки и возобновления процессов, а также для получения информации о процессах с использованием системных вызовов Windows API.
Задачи лабораторной работы
- Ознакомиться с документацией по функциям WinAPI для работы с процессами.
- Создать программы на языке C/C++, использующие Windows API для выполнения операций с процессами.
- Провести отладку написанных программ с использованием инструментов Visual Studio.
- Научиться правильно обрабатывать ошибки при выполнении операций с процессами.
- Оформить отчет о выполненной работе, включающий описание поставленных задач, исходный код программ и результаты тестирования.
Порядок выполнения работы
- Изучить теорию по теме Управление процессами в Windows
- Изучить основы управления процессами в Windows API.
- Написать программу, которая создает новый процесс с помощью функции
CreateProcess
. Новый процесс должен выполнять простую консольную программу, которую также необходимо написать. - Расширить предыдущую программу, добавив возможность передачи аргументов командной строки новому процессу.
- Написать программу, которая получает информацию о текущем процессе с помощью функции
GetCurrentProcess
. - Написать программу, которая получает идентификатор текущего процесса с помощью функции
GetCurrentProcessId
и выводит его на экран. - Написать программу, которая получает дескриптор текущего процесса и использует его для изменения приоритета процесса с помощью функции
SetPriorityClass
. - Написать программу, которая завершает работу другого процесса с помощью функции
TerminateProcess
. Для этого необходимо получить дескриптор процесса с помощью функцииOpenProcess
. - Написать программу, которая создает новый поток в текущем процессе с помощью функции
CreateThread
. Новый поток должен выполнять простую функцию, которую также необходимо написать. - Написать программу, которая синхронизирует работу нескольких потоков с помощью событий (функции
CreateEvent
,SetEvent
,WaitForSingleObject
илиWaitForMultipleObjects
). - Написать программу, которая использует функции
GetExitCodeProcess
иGetExitCodeThread
для получения кодов завершения процесса и потока.
Контрольные вопросы
- Основные понятия:
- Что такое процесс в операционной системе Windows?
- Какие атрибуты характеризуют процесс?
- Создание процессов:
- Какую функцию Windows API используют для создания нового процесса?
- Какие параметры необходимо передать функции
CreateProcess
для успешного создания процесса? - Чем отличаются синхронное и асинхронное создание процесса?
- Получение информации о процессах:
- Какие функции Windows API используются для получения идентификатора текущего процесса и информации о других процессах?
- Как получить информацию о времени работы процесса (начало, пользовательское время, системное время)?
- Завершение процессов:
- Какая функция используется для завершения процесса?
- Какие параметры необходимы для завершения процесса с использованием функции
TerminateProcess
? - Как корректно завершить процесс, чтобы избежать утечек ресурсов?
- Приостановка и возобновление процессов:
- Какие функции Windows API используются для приостановки и возобновления процессов?
- В каких случаях может потребоваться приостановка процесса?
- Какой эффект может иметь приостановка основного потока процесса на его выполнение?
- Мониторинг процессов:
- Какие утилиты и инструменты в Windows можно использовать для мониторинга состояния процессов?
- Как можно программно реализовать мониторинг активных процессов в системе?
- Какие параметры процессов являются ключевыми для мониторинга?
- Безопасность и защита процессов:
- Какие методы защиты процессов от несанкционированного доступа существуют в Windows?
- Как ограничить права доступа к процессу?
- Какие функции и параметры Windows API используются для реализации безопасности процессов?
- Практические аспекты:
- Как определить, что процесс успешно завершился?
- Какие возможные ошибки могут возникнуть при управлении процессами, и как их диагностировать?
- Как проверить, что процесс находится в ожидающем (приостановленном) состоянии?
- Отладка процессов:
- Какие средства и функции Windows API могут использоваться для отладки процессов?
- Как программно осуществить пошаговое выполнение процесса?
- Какие методы можно использовать для анализа причин сбоя процесса?