Лаб. работа "Управление процессами в Windows"

Цель лабораторной работы

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

Задачи лабораторной работы

  • Ознакомиться с документацией по функциям WinAPI для работы с процессами.
  • Создать программы на языке C/C++, использующие Windows API для выполнения операций с процессами.
  • Провести отладку написанных программ с использованием инструментов Visual Studio.
  • Научиться правильно обрабатывать ошибки при выполнении операций с процессами.
  • Оформить отчет о выполненной работе, включающий описание поставленных задач, исходный код программ и результаты тестирования.

Порядок выполнения работы

  1. Изучить теорию по теме Управление процессами в Windows
  2. Изучить основы управления процессами в Windows API.
  3. Написать программу, которая создает новый процесс с помощью функции CreateProcess. Новый процесс должен выполнять простую консольную программу, которую также необходимо написать.
  4. Расширить предыдущую программу, добавив возможность передачи аргументов командной строки новому процессу.
  5. Написать программу, которая получает информацию о текущем процессе с помощью функции GetCurrentProcess.
  6. Написать программу, которая получает идентификатор текущего процесса с помощью функции GetCurrentProcessId и выводит его на экран.
  7. Написать программу, которая получает дескриптор текущего процесса и использует его для изменения приоритета процесса с помощью функции SetPriorityClass.
  8. Написать программу, которая завершает работу другого процесса с помощью функции TerminateProcess. Для этого необходимо получить дескриптор процесса с помощью функции OpenProcess.
  9. Написать программу, которая создает новый поток в текущем процессе с помощью функции CreateThread. Новый поток должен выполнять простую функцию, которую также необходимо написать.
  10. Написать программу, которая синхронизирует работу нескольких потоков с помощью событий (функции CreateEvent, SetEvent, WaitForSingleObject или WaitForMultipleObjects).
  11. Написать программу, которая использует функции GetExitCodeProcess и GetExitCodeThread для получения кодов завершения процесса и потока.

Контрольные вопросы

  1. Основные понятия:

    • Что такое процесс в операционной системе Windows?
    • Какие атрибуты характеризуют процесс?
  2. Создание процессов:

    • Какую функцию Windows API используют для создания нового процесса?
    • Какие параметры необходимо передать функции CreateProcess для успешного создания процесса?
    • Чем отличаются синхронное и асинхронное создание процесса?
  3. Получение информации о процессах:

    • Какие функции Windows API используются для получения идентификатора текущего процесса и информации о других процессах?
    • Как получить информацию о времени работы процесса (начало, пользовательское время, системное время)?
  4. Завершение процессов:

    • Какая функция используется для завершения процесса?
    • Какие параметры необходимы для завершения процесса с использованием функции TerminateProcess?
    • Как корректно завершить процесс, чтобы избежать утечек ресурсов?
  5. Приостановка и возобновление процессов:

    • Какие функции Windows API используются для приостановки и возобновления процессов?
    • В каких случаях может потребоваться приостановка процесса?
    • Какой эффект может иметь приостановка основного потока процесса на его выполнение?
  6. Мониторинг процессов:

    • Какие утилиты и инструменты в Windows можно использовать для мониторинга состояния процессов?
    • Как можно программно реализовать мониторинг активных процессов в системе?
    • Какие параметры процессов являются ключевыми для мониторинга?
  7. Безопасность и защита процессов:

    • Какие методы защиты процессов от несанкционированного доступа существуют в Windows?
    • Как ограничить права доступа к процессу?
    • Какие функции и параметры Windows API используются для реализации безопасности процессов?
  8. Практические аспекты:

    • Как определить, что процесс успешно завершился?
    • Какие возможные ошибки могут возникнуть при управлении процессами, и как их диагностировать?
    • Как проверить, что процесс находится в ожидающем (приостановленном) состоянии?
  9. Отладка процессов:

    • Какие средства и функции Windows API могут использоваться для отладки процессов?
    • Как программно осуществить пошаговое выполнение процесса?
    • Какие методы можно использовать для анализа причин сбоя процесса?
← Лаб. работа "Операции с файлами в Windows" Лаб. работа "Работа с виртуальной машиной … →