Подсистема управления процессами
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
булевой переменной "gateOpen" (объявленной как volatile) в комбинации со "spin-sleeping" повторением проверок флага и ожидания в течении короткого промежутка времени.
ManualResetEvent может использоваться для сигнализации о завершении какой-либо операции или инициализации потока и готовности к выполнению работы[2].
1.3 Логическая структура программы
Основу программы составляет абстрактный класс Betaproc. В нем реализована абстрактная модель процесса, без спецификации выполняемых действий, с набором переменных и методов общих для всех процессов. Три процесса sinProc, FibbonProc и ProcRandom являются производными от этого класса и в каждом из них реализован лишь методы возвращающие тип процесса и сам метод выполняемый процессом. При этом каждый метод Base, в котором находится исполняемый код, имеет в своем теле общий для всех хэндл, который позволяет выполнять код лишь одному процессу, когда другие становятся в очередь и получают свое время на выполнение пропорционально приоритету. В момент начала работы стартует таймер, который обеспечивает одинаковый квант времени в 3 секунды для каждого процесса.
Однако процессы не висят в памяти компьютера просто так. Специально для управления процессами создан класс ProcManager. При создании процесса он и вся информация о нем заносится в массив, и в соответствии с номером ячейки, в которую записывается процесс, ему дается идентификатор, по которому к нему можно обратиться в процессе работы. Также в классе ProcManager реализовано графическое представление в памяти. Каждый важный элемент процесса выведен в специальную таблицу на форме, и при изменении одного из них вызывается событие, которое меняет запись в таблице в режиме реального времени, поэтому мы может наблюдать как красиво надпись "работает" бегает от одного процесса к другому.
- Руководство пользователя по работе с программой
2.1 Общие сведения и назначение программы
Программа написана в среде Visual Studio 2008 на языке C# и представляет собой менеджер управления процессами, построенный на современных средствах управления, с интуитивно понятным графическим интерфейсом. Программа является полностью автономной и не требует установки другого программного обеспечения. Вся справочная информация хранится в настоящем Руководстве и Техническом Проекте. В случае сбоев в работе программы необходимо обратиться к Автору для их устранения. В основной части руководства будут описаны возможности программы, описание основных характеристик и особенностей программы.
2.2 Графический интерфейс
После открытия программы пользователю предоставляется графический интерфейс.
рис 1.: главное окно программы после запуска
Область "Процесс" позволяет выбрать тот процесс, который нам необходимо запустить. Имеет три пункта: Числа Фибоначчи, Случайные числа и Рекурсивный синус.
Область "Приоритет" позволяет установить приоритет запускаемому процессу. Имеет 5 пунктов: Низкий, Ниже среднего, Средний, Выше среднего, Высокий.
Кнопка запуск служит для запуска процесса с выбранными параметрами.
Таблица в центральной части окна отображает состояние каждого из запущенных процессов. После добавления каждого процесса в нее автоматически добавляется одна строка. Имеет 5 полей:
- Номер процесса показывает порядковый номер процесса
- Тип процесса показывает действие, с которое выполняет данный процесс
- Состояние процесса показывает работает ли процесс в данный момент или нет. Также показывает, если процесс является остановленным, завершенным или только что возобновленным.
- Приоритет процесса показывает приоритет процесса, который был присвоен ему при создании.
- Процент процессорного времени отображает процент используемого процессорного времени.
В правой части окна программы расположено поле, в которое записывается результат выполнения работающего процесса в реальном времени.
В нижней части окна программы расположены элементы управления для работы с уже запущенными процессами.
Кнопка "Остановить" - останавливает выбранный процесс с возможностью его последующего перезапуска.
Кнопка "Возобновить" - вновь запускает остановленный процесс.
Кнопка "Завершить" - останавливает выбранный процесс без возможности его завершения.
Так же программа имеет стандартную строку состояния, с помощью которого можно свернуть, развернуть или закрыть рабочее окно программы.
2.3 Работа с программой
Запуск процессов выполняется с помощью кнопки "Запустить", однако перед этим следует установить параметры процесса.
Случайное число процесс генерирует случайное число в интервале от одного до ста и выводит его в поле вывода.
Числа Фибоначчи генерирует последовательность Фибоначчи, начиная с первого члена, и выводит их в поле вывода. Как только значение чисел последовательности превосходит тысячу значения сбрасываются до первых членов.
Рекурсивный синус генерирует значение синуса X. Первоначально X равен 1, позже ему присваиваются посчитанные значения sin(x). Значения, округленные до третьего знака выводятся в поле вывода.
Приоритет процесса показывает, насколько велики шансы процесса начать работу, если предыдущий процесс завершил работу. Например, если запустить три процесса с одинаковыми приоритетам, то количество раз, которое они будут работать, будет примерно одинак