
- •Курсовой проект
- •Выбор архитектуры вычислительной системы
- •3 Вытесняющая многозадачность и средства взаимодействия в ос windows хх и windows nt
- •События (events);
- •4 Проектирование командного языка ос
- •5 Определение состава и общей структуры системы
- •6 Формирование базы данных ос
- •7 Проектирование структуры и реализация логики управления файловой системы
- •8 Общее описание функционирования ос
3 Вытесняющая многозадачность и средства взаимодействия в ос windows хх и windows nt
В разделе составлена программа, которая реализует параллельное выполнение проекта в среде ОС Windows95 и WindowsNT.
Структура проекта задается двудольным графом (аналогичным сети Петри), в котором каждый узел представляет собой блок обработки, а переход – точку синхронизации и/или передачи данных. В зависимости от варианта, проект может иметь структуру одного из следующих типов:
Тип обработки для каждого узла зависит от номера варианта и берется из таблицы. Все блоки обработки имеют один вещественный аргумент и один вещественный результат. Аргумент формируется по формуле:
Arg = Σ Rez * Nblock * Nvar, где
Σ Rez сумма результатов входящих блоков;
Nblock номер блока в конфигурации;
Nvar номер варианта.
Результат обработки определяется типом обработчика:
“начало” — начинает выполнение проекта (результат всегда = 1);
“конец” — завершает выполнение проекта – выводит на экран свой аргумент, закрывает все потоки, освобождает ресурсы;
SC — SC(Arg) – вычисление суммы ряда Σ ABS(cos(i)) для i от 1 до модуля Arg;
IR — IR(Arg) – вычисление определенного интеграла ABS(cos(x)) на интервале от -Arg до +Arg методом правых прямоугольников с разбиением на 100*Arg интервалов;
IT — IT(Arg) – вычисление определенного интеграла ABS(cos(x)*sin(x)) на интервале от -Arg до +Arg методом трапеций с разбиением на 100*Arg интервалов;
Программная реализация проекта должна удовлетворять следующим требованиям:
необходимо исключить возможность одновременного выполнения в системе более чем одной копий проекта (при повторном запуске должно выдаваться соответствующее сообщение и прекращаться выполнение второй копии программы);
для каждого узла обработки (независимо от разбиения проекта на потоки) необходимо выводить в LOG-файл сообщения:
при входе в блок – сообщение о начале соответствующей обработки;
при завершении обработки – сообщение о прекращении обработки и результат.
LOG-файл – один, общий для всего проекта (его необходимо представить в отчете).
в любом случае проект не должен выполняться более 20 секунд – если за это время вычисления не были закончены, то необходимо принудительно завершить все потоки и выдать соответствующее сообщение на экран и в LOG-файл;
для взаимодействия потоков в программе, в зависимости от варианта, необходимо использовать различные синхронизирующие объекты WIN32 API. В случае, если для каких либо целей указанный тип синхронизирующих объектов не подходит – необходимо объяснить почему они не подходят для этих целей и обосновать выбор другого типа объектов. Используются следующие типы синхронизирующих объектов:
Критические секции (critical sections) и Потоки (threads) как синхронизирующие объекты;
Взаимоисключения (mutexes);
События (events);
Семафоры (semaphores).
Вариант:
-
Номер варианта
Номер конфигурации
Типы блоков обработки (Nblock)
1
2
3
4
5
6
7
8
35
2
SC
IT
IT
SC
IR
IT
IT
IT
Рисунок – Тип синхронизирующих объектов