Подсистема управления процессами

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

булевой переменной "gateOpen" (объявленной как volatile) в комбинации со "spin-sleeping" повторением проверок флага и ожидания в течении короткого промежутка времени.

ManualResetEvent может использоваться для сигнализации о завершении какой-либо операции или инициализации потока и готовности к выполнению работы[2].

 

1.3 Логическая структура программы

 

Основу программы составляет абстрактный класс Betaproc. В нем реализована абстрактная модель процесса, без спецификации выполняемых действий, с набором переменных и методов общих для всех процессов. Три процесса sinProc, FibbonProc и ProcRandom являются производными от этого класса и в каждом из них реализован лишь методы возвращающие тип процесса и сам метод выполняемый процессом. При этом каждый метод Base, в котором находится исполняемый код, имеет в своем теле общий для всех хэндл, который позволяет выполнять код лишь одному процессу, когда другие становятся в очередь и получают свое время на выполнение пропорционально приоритету. В момент начала работы стартует таймер, который обеспечивает одинаковый квант времени в 3 секунды для каждого процесса.

Однако процессы не висят в памяти компьютера просто так. Специально для управления процессами создан класс ProcManager. При создании процесса он и вся информация о нем заносится в массив, и в соответствии с номером ячейки, в которую записывается процесс, ему дается идентификатор, по которому к нему можно обратиться в процессе работы. Также в классе ProcManager реализовано графическое представление в памяти. Каждый важный элемент процесса выведен в специальную таблицу на форме, и при изменении одного из них вызывается событие, которое меняет запись в таблице в режиме реального времени, поэтому мы может наблюдать как красиво надпись "работает" бегает от одного процесса к другому.

 

  1. Руководство пользователя по работе с программой

 

2.1 Общие сведения и назначение программы

 

Программа написана в среде Visual Studio 2008 на языке C# и представляет собой менеджер управления процессами, построенный на современных средствах управления, с интуитивно понятным графическим интерфейсом. Программа является полностью автономной и не требует установки другого программного обеспечения. Вся справочная информация хранится в настоящем Руководстве и Техническом Проекте. В случае сбоев в работе программы необходимо обратиться к Автору для их устранения. В основной части руководства будут описаны возможности программы, описание основных характеристик и особенностей программы.

 

2.2 Графический интерфейс

 

После открытия программы пользователю предоставляется графический интерфейс.

 

рис 1.: главное окно программы после запуска

Область "Процесс" позволяет выбрать тот процесс, который нам необходимо запустить. Имеет три пункта: Числа Фибоначчи, Случайные числа и Рекурсивный синус.

Область "Приоритет" позволяет установить приоритет запускаемому процессу. Имеет 5 пунктов: Низкий, Ниже среднего, Средний, Выше среднего, Высокий.

Кнопка запуск служит для запуска процесса с выбранными параметрами.

Таблица в центральной части окна отображает состояние каждого из запущенных процессов. После добавления каждого процесса в нее автоматически добавляется одна строка. Имеет 5 полей:

  1. Номер процесса показывает порядковый номер процесса
  2. Тип процесса показывает действие, с которое выполняет данный процесс
  3. Состояние процесса показывает работает ли процесс в данный момент или нет. Также показывает, если процесс является остановленным, завершенным или только что возобновленным.
  4. Приоритет процесса показывает приоритет процесса, который был присвоен ему при создании.
  5. Процент процессорного времени отображает процент используемого процессорного времени.

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

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

Кнопка "Остановить" - останавливает выбранный процесс с возможностью его последующего перезапуска.

Кнопка "Возобновить" - вновь запускает остановленный процесс.

Кнопка "Завершить" - останавливает выбранный процесс без возможности его завершения.

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

 

2.3 Работа с программой

 

Запуск процессов выполняется с помощью кнопки "Запустить", однако перед этим следует установить параметры процесса.

Случайное число процесс генерирует случайное число в интервале от одного до ста и выводит его в поле вывода.

Числа Фибоначчи генерирует последовательность Фибоначчи, начиная с первого члена, и выводит их в поле вывода. Как только значение чисел последовательности превосходит тысячу значения сбрасываются до первых членов.

Рекурсивный синус генерирует значение синуса X. Первоначально X равен 1, позже ему присваиваются посчитанные значения sin(x). Значения, округленные до третьего знака выводятся в поле вывода.

Приоритет процесса показывает, насколько велики шансы процесса начать работу, если предыдущий процесс завершил работу. Например, если запустить три процесса с одинаковыми приоритетам, то количество раз, которое они будут работать, будет примерно одинак