Рефераты

Моделирование ЭВМ

Моделирование ЭВМ

Государственный комитет Российской Федерации по высшему образованию

Казанский Государственный Технический Университет имени А.Н. Туполева

----------------------------------------------------------------------------

---------------------------

Кафедра Электронно - вычислительных машин

Пояснительная записка

к курсовой работе по дисциплине “Моделирование”

Выполнил : студент

группы 4301 Базуев Ю.А.

Руководитель :

доцент кафедры ЭВМ Захаров В.М.

Оценка:5(отл.)

Казань 1996

Содержание

1.Задание...................................................................

.............................3

2. Формализация концептуальной

модели................................................4

2.1. Построение формальной схемы функционирования системы........4

2.2. Определение параметров и переменных

модели.............................5

2.3. Определение единицы модельного

времени....................................6

2.4. Определение закона функционирования

системы...........................6

3. Алгоритмизация модели и ее машинная

реализация.............................7

3.1. Выбор программных средств

моделирования.................................7

3.2. Описание моделирующей

программы.............................................7

3.3. Проверка достоверности

программы..............................................8

3.4. Моделирование случайных

воздействий.........................................9

3.4.1. Моделирование случайных воздействий, имеющих

равномерное

распределение.......................................................9

3.4.1.1. Аппаратный

способ..............................................................9

3.4.1.2. Программный

способ..........................................................12

3.4.1.3. Выбор генератора

РРПСЧ...................................................13

3.4.2. Моделирование случайных воздействий, имеющих

неравномерное

распределение.................................................14

3.5. Описание моделирующей программы для стохастической

модели......................................................................

.......................18

4. Получение и интерпретация результатов моделирования...................19

5. Литература

............................................................................

................20

2. Формализация концептуальной модели

2.1. Построение формальной схемы функционирования

системы

Построим формальную схему (Q-схему) заданной вычислительной системы.

И1

О

И2

К

И3

Рис. 1 Q - схема вычислительной системы

Здесь:

К - ЭВМ

О - Очередь

И1 - И3 - Сетевые машины

2.2.Определение параметров и переменных модели

tp - интервал между приходами пользователей

tgz1 - время подготовки задания 1-ым пользователем

tgz2 - время подготовки задания 2-ым пользователем

tgz3 - время подготовки задания 3-им пользователем

tm - время выполнения задания на ЭВМ

k - количество промоделированных на ЭВМ заданий

nz - наличие заявки на входе системы:

nz=0 - нет заявок

___

nz=i - наличие заявки на i-ой сетевой машине ( i=1-3 )

pz1 - подготовка задания сетевой машине 1

pz1=1 - идет подготовка задания на сетевой машине 1

pz1=0 - сетевая машина 1 не занята

pz2 - подготовка задания сетевой машине 2

pz2=1 - идет подготовка задания на сетевой машине 2

pz2=0 - сетевая машина 2 не занята

pz3 - подготовка задания сетевой машине 3

pz3=1 - идет подготовка задания на сетевой машине 3

pz3=0 - сетевая машина 3 не занята

znw - наличие заявки на выполнение задания

znw=0 - заявки отсутствуют ___

znw=i - наличие заявки от сетевой машины i ( i=1-3 )

wz - выполнение задания на ЭВМ

wz=0 - ЭВМ свободна

wz=i - ЭВМ выполняет заявку i

ocher[50] - очередь

в очереди хранятся номера сетевых машин с которых получены

заявки

n - индекс свободного элемента в очереди

w2 - количество вып. заданий от 2-го пользователя

На первом этапе имитационного моделирования создадим детерминированную

модель заданной вычислительной системы, заменяя стохастические потоки их

математическими ожиданиями:

- интервал между приходами пользователей 10 мин

- вероятность прихода каждого из пользователей 0.33

- время подготовки задания 1-ым пользователем 16 мин

- время подготовки задания 2-ым пользователем 17 мин

- время подготовки задания 3-им пользователем 18 мин

- время выполнения задания на ЭВМ 0.8 мин

2.3. Определение единицы модельного времени

За единицу модельного времени (emb) принимается минимальный интервал

реального времени, в течение которого система не меняет своего состояния. В

данной задаче за emb целесообразно принять время равное

0.1 мин.

2.4. Определение закона функционирования системы

Работу данной вычислительной системы отразим временными диаграммами.

пользователь

emb

160

И1

170

И2

180

И3

ЭВМ

Рис 2. Временные диаграммы работы системы

В машинный зал с интервалом 100 emb приходит один из пользователей.

В начале приходит первый, и начинает подготовку своего задания на это ему

потребуется 160 emb. Через 100 emb приходит второй пользователь и тоже

начинает подготовку задания на это ему отведено 170 emb. Вскоре после

прихода 2-го пользователя (через 60 emb) заканчивает подготовку задания

первый пользователь и выполняет его на ЭВМ в течении 8 emb. Через 100 emb

после прихода второго пользователя приходит третий пользователь, при этом

второй продолжает подготовку. Спустя 70 emb после прихода третьего

пользователя заканчивает подготовку второй и выполняет свое задание на ЭВМ

за 8 emb. Третий пользователь заканчивает подготовку спустя 180 emb после

своего прихода, в это время

снова приходит первый пользователь на этом заканчивается первый цикл работы

системы и все повторяется снова.

Таким образом за каждый цикл с периодом Т=300 emb выполняется три

задания от каждого пользователя. Все они выполняются сразу же после

подготовки и не задерживают друг друга, т. к. ЭВМ к моменту поступления

этих заявок свободна. Все время работы очередь остается пустой. За время

цикла выполняется одно задание от 2-го пользователя, следовательно процент

выполненных заданий, поступивших от второго пользователя равен 33,3 %.

Нам нужно смоделировать выполнение 500 заданий, следовательно общее

время работы системы равно (500/3)*300=50.000 emb. За это время ЭВМ

проработала 500*8=4000 emb , следовательно загрузка ЭВМ равна 8%.

3. Алгоритмизация модели и ее машинная реализация

3.1. Выбор программных средств моделирования

Для написания программы мы выбираем язык программирования Borland C++.

Этот язык хорошо зарекомендовал себя эффективностью, лаконичностью,

стройностью программ. Во многих случаях программы, написанные на языке С++

сравнимы по скорости с программами, написанными на языке Ассемблера, при

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

языка С++ входит много библиотек, в том числе библиотеки нужных нам

стандартных функций.

Программа для детерминированной модели приведена в Приложении № 1.

3.2. Описание моделирующей программы для

детерминированного варианта модели

Параметры и переменные данной программы описаны в пункте 2.2.

Так как в выбранном языке программирования нельзя создать параллельные

процессы, то мы применим принцип псевдораспараллеливания.

В программе организуем очередь ocher[50] в ячейках которой мы запоминаем

адрес заявки (номер сетевой машины). Также вводим ряд вспомогательных

переменных ( ztgz1, ztgz2, ztgz3, ztm, zk ) необходимых для хранения

значений исходных параметров системы.

Данная моделирующая программа работает следующим образом:

Вначале программа запрашивает значения параметров системы. Далее

организуется основной цикл, который выполняется k раз. Первым действием в

цикле является оператор прибавления единицы машинного времени t=t+emb.

После проверяем не пришел ли пользователь, если пришел то определяем какой

( конструкция switch (cikl) ). Далее в программе идет конструкция switch

(nz) устанавливающая соответствующие флажки подготовки задания. После идет

группа условий выполняющая уменьшение времени подготовки задания. Если

задание подготовлено то подается запрос на выполнение. В этом блоке

программы определяется не пуста ли очередь, если не пуста то выполняем

задание из очереди иначе выполняем заявку с сетевой машины. Перед

выполнением заявки проверяем занята ли ЭВМ, если занята то ставим заявку в

очередь. Далее если на ЭВМ выполняемся задача то уменьшаем время выполнения

этой задачи. После чего цикл повторяется. После завершения цикла производим

подсчет процента выполненных заданий, поступивших от второго пользователя.

3.3. Проверка достоверности программы

Смоделируем работу системы с параметрами указанными в задании.

Протокол работы программы:

Введите интервал между приходами пользователей 100

Введите время подготовки задания 1-ым пользователем 160

Введите время подготовки задания 2-ым пользователем 170

Введите время подготовки задания 3-ым пользователем 180

Введите время выполнения задания на ЭВМ 8

Введите количество промоделированных на ЭВМ заданий 500

Процент вып. заданий, поступ. от 2-го польз.= 33%

Вывод:

Результаты работы моделирующей программы совпадают с рассчитанными

теоретически, следовательно программа написана и работает правильно.

Определим оптимальную структуру вычислительной системы: оптимальная

структура вычислительной системы обеспечивающая минимальное время простоя

оборудования достигается при следующих параметрах: интервал между

приходами пользователей 2

время подготовки задания 1-ым пользователем 1

время подготовки задания 2-ым пользователем 1

время подготовки задания 3-ым пользователем 1

время выполнения задания на ЭВМ

1

3.4. Моделирование случайных воздействий

3.4.1. Моделирование случайных воздействий имеющих

равномерное распределение

3.4.1.1. Аппаратный способ

При аппаратном способе случайные или псевдослучайные числа

вырабатываются специальной электронной приставкой - генератором, который

является внешним устройством ЭВМ либо входит в состав процессора.

Наибольшее распространение на практике нашли генераторы псевдослучайных

чисел (ГПСЧ), построенные на основе регистра сдвига с реализацией некоторой

логической функции в цепи обратной связи (ОС) (в нашем случае это сумматор

по модулю два).

Поскольку проведение натуральных опытов с разными схемами ГПСЧ

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

строить и исследовать различные ГПСЧ на программных моделях. Для этих целей

подходят автоматизированная система подготовки и обработки статистической

информации (АСПОСИ), которая представляет собой комплекс программных

средств, позволяющих строить математические модели различных ГПСЧ и

исследовать их характеристики.

Для получения ПСЧ будем пользоваться программой gener.

Работая в диалоговом режиме с ПВМ мы определяем структуру генератора, т.

е. некоторую исходную информацию: разрядность регистра сдвига ГПСЧ, вид ОС,

количество и номера подключенных в цепь ОС разрядов регистра, количество

генерируемых чисел и др.

Полученные числа записываются в файл и анализируются (строится

гистограмма) с помощью программы analize.

Для генерации чисел мы выбрали 3 различные структуры ГПСЧ:

1) Файл vihod1.dat

Разрядность: 50

Обратная связь: 30

Количество чисел: 1000

Разрядность числа: 25

Число сдвигов: 2

2) Файл vihod2.dat

Разрядность: 50

Обратная связь: 30

Количество чисел: 1000

Разрядность числа: 25

Число сдвигов: 3

3) Файл vihod3.dat

Разрядность: 70

Обратная связь: 35

Количество чисел: 1000

Разрядность числа: 25

Число сдвигов: 6

Проверим качество чисел в файлах программой analize.

Построим гистограммы:

vihod1.dat

vihod2.dat

vihod3.dat

Проверка соответствия чисел в последовательностях требуемому

распределению дает следующие результаты: теоретические и статистические

данные во всех 3-х файлах по критериям Колмогорова и Х2 не согласуются.

Определение числовых характеристик

|№ |Характеристика |vihod1.dat |vihod2.dat |vihod3.dat |

| 1|наименьшее значение | 0.02 | 0.005 | 0.00059 |

| 2|наибольшее значение | 0.96 | 0.996 | 0.999 |

| 3|Мат. ожидание | 0.39 | 0.51 | 0.49 |

| 4|Дисперсия | 0.078 | 0.086 | 0.085 |

| 5|Среднеквадратич.отклон. | 0.279 | 0.294 | 0.292 |

| 6|Эксцесс | -1.92 | -1.024 | -1.12 |

Определение характеристик корреляции

?(?) ?(?)

1 1

0 ? 0

?

5

5

vihod1.dat

vihod2.dat

?(?)

1

0 ?

5

vihod3.dat

Вывод:

1) С увеличением числа сдвигов характеристики чисел улучшаются.

2) Из приведенных 3-ех файлов самые качественные числа находятся в

файле vihod3.dat , т. к. числа в последовательности достаточно

независимы. Но в то же время нет согласованности по обеим

критериям.

3.4.1.2. Программный способ

При программном способе псевдослучайные числа нам необходимо

сформировать методом умножения.

Суть метода: выбирается два n - разрядных числа X1 и X2. X1> 0 |

| |? > 0 | |

|Числовые | m | 1/? |

|m характеристики |? |1/? |

|D | | |

|Алгоритм получения | ______ | 1 |

|случайной величины |xi=?-2 ln z1 cos2? z2 |xi=- ---- ln zi |

| |xi+1=?-2 ln z1 cos2? |? |

| |z2 | |

| |( m=0; D=1 ) | |

|Область значений | | |

|случайной величины | | |

Исследование последовательности нормально распределенных ПСЧ.

(Программа в приложении № 3)

Определение числовых характеристик

| | |Теоретическое|Статистическое |

|№ |Характеристика | | |

| | |значение |значение |

| 1|Мин.знач.совокупности | 11 | 12.31 |

| 2|Макс.знач.совокуп-ти | 24 | 25.23 |

| 3|Мат. ожидание | 16 | 16.02 |

| 4|Дисперсия | 2 | 2.07 |

| 5|Сред.квадр.отклонение | 1 | 1.439 |

| 6|Коэфф.ассиметрии | 0 | 0.35 |

| 7|Эксцесс | 0 | 2.716 |

Аппроксимация стат. распределения теоретической функцией.

Проверка соответствия чисел последовательности требуемому

распределению дает следующие результаты:

Критерий Хи-Квадрат:

Х2=0.0000813

С доверительной вероятностью 0.999 можно утверждать о согласованности

теоретических и статистических данных.

Критерий Колмогорова:

Максимальная разность max| F(x)-F*(x) | = 0.0823

С доверительной вероятностью 0.999 можно утверждать о согласованности

теоретических и статистических данных.

Определение характеристик корреляции

?(?)

1

0 ?

5

Рис. 4. График изменения коэффициента корреляции.

Вывод:

Полученная последовательность ПСЧ, имеющая нормальный закон

распределения, удовлетворяет предъявленным требованиям по качеству и может

быть использована в задачах моделирования, т. к.

- числовые характеристики имеют незначительное отклонение от

теоретических значений,

- по критериям согласия получены удовлетворительные значения

доверительных вероятностей,

- числа последовательности достаточно независимы, о чем свидетельствует

график (Рис. 4.)

Последовательности ПСЧ для 2-го и 3-го пользователей генерируются

аналогично, с той лишь разницей, что мат. ожидание у них 17 и 18

соответственно.

Исследование последовательности экспоненциально распределенных ПСЧ

(Программа в приложении № 3)

Определение числовых характеристик

| | |Теоретическое|Статистическое|

|№ |Характеристика | | |

| | |значение |значение |

| 1|Мин.знач.совокупности | 0.5 | 0.8 |

| 2|Макс.знач.совокуп-ти | 3.5 | 2.358 |

| 3|Мат. ожидание | 0.8 | 1.06 |

| 4|Дисперсия | 0.08 | 0.066 |

| 5|Сред.квадр.отклонение | 0.5 | 0.2575 |

| 6|Коэфф.ассиметрии | 0 | 1.682 |

| 7|Эксцесс | 0 | 1.097 |

Аппроксимация стат. распределения теоретической функцией

Проверка соответствия чисел последовательности требуемому закону

распределения дает следующие результаты:

Критерий Хи-Квадрат:

Значение Х2=2310

С доверительной вероятностью 0.999 можно утверждать о согласованности

теоретических и статистических данных.

Критерий Колмогорова:

Максимальная разность max| F(x)-F*(x) | = 0.023

С доверительной вероятностью 0.91 можно утверждать о согласованности

теоретических и статистических данных.

Определение характеристик корреляции

?(?)

1

0 ?

5

Рис. 5. График изменения коэффициента корреляции.

Вывод:

Полученная последовательность ПСЧ, имеющих экспоненциальный закон

распределения, удовлетворяет предъявленным требованиям по качеству и может

быть использована в задачах моделирования, т. к.

- числовые характеристики имеют незначительное отклонение от

теоретических значений,

- по критериям согласия получены удовлетворительные значения

доверительных вероятностей,

- числа последовательности достаточно независимы, о чем свидетельствует

график (Рис. 5.)

3.5. Описание моделирующей программы для

стохастической модели

Преобразуем ранее созданную детерминированную модель вычислительной

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

детерминированной программы:

- вставим программный генератор РРПСЧ - встроенную функцию random( )

возвращающую РРПСЧ в интервале (0,1) - для определения времени

между приходами пользователей.

- файл norm-1.dat , имеющий нормальный закон распределения с m=16 , D=2

для определения времени подготовки задания на 1-ой сетевой машине.

- файл norm-2.dat , имеющий нормальный закон распределения с m=17 , D=2

для определения времени подготовки задания на 2-ой сетевой машине.

- файл norm-3.dat , имеющий нормальный закон распределения с m=18 , D=2

для определения времени подготовки задания на 3-ей сетевой машине.

- файл expon.dat , имеющий экспоненциальный закон распределения с m=0.8

для определения времени выполнения задания на ЭВМ.

- уберем функции ввода с клавиатуры которые использовались для ввода

параметров системы.

Стохастическая моделирующая программа приведена в Приложении № 4.

4. Получение и интерпретация результатов

моделирования

Значения выходных характеристик, полученные при прогонках модели с

различными случайными воздействиями.

| № |% выполненных заданий,|

|прогона|поступ. от 2-го |

| |пользователя |

| 1 | 9 % |

| 2 | 9 % |

| 3 | 9 % |

| 4 | 9 % |

| 5 | 9 % |

| 6 | 9 % |

| 7 | 9 % |

| 8 | 9 % |

| 9 | 9 % |

| 10 | 9 % |

|сред.зн| 9 % |

|. | |

Вывод:

Усредненные значения выходной характеристики подтверждают данные

детерминированной модели т.к. с введением вероятности прихода второго

пользователя равной 0.1 в детерминированную модель теоретическое значение

процента выполненных заданий поступивших от второго пользователя становится

равным 10 % .

Литература

1. Разработка САПР. № 9

В.М. Черненький. Имитационное моделирование.

2. Лекции по курсу “Моделирование”.

3. Б. Страуструп. Язык программирования С++.

4. Шрайбер Г.Д. Моделирование на GPSS.

5. Е.И. Козелл. от Си к С++.

Приложение № 1

// ЗАДАНИЕ 15. Детерминированная модель системы.

#include

#include

const emb=1; //единица машинного времени

main()

{ int tp=100; //интервал между приходами пользователей

int tgz1=160; //время подготовки задания 1-ым пользователем

int tgz2=170; //время подготовки задания 2-ым пользователем

int tgz3=180; //время подготовки задания 3-им пользователем

int tm=8; //время выполнения задания на ЭВМ

int k=500; //количество промоделированных на ЭВМ заданий

int t=0; //время

char nz=0; //наличие заявки на входе системы

char cikl=0; //цикл прихода заявок

char pz1=0; //подготовка задания на сетевой машине 1

char pz2=0; //подготовка задания на сетевой машине 1

char pz3=0; //подготовка задания на сетевой машине 1

char znw=0; //наличие заявки на выполнение задания

char wz=0; //выполнение задания на ЭВМ

char ocher[50]; //очередь

char n=0; //индекс свободного элемента в очереди

int w2=0; //количество вып. заданий от 2-го пользователя

int ztgz1,ztgz2,ztgz3,ztm,zk; //перем.для запоминания параметров системы

printf("Введите интервал между приходами пользователей ");

scanf("%d",&tp);

printf("Введите время подготовки задания 1-ым пользователем ");

scanf("%d",&tgz1); ztgz1=tgz1;

printf("Введите время подготовки задания 2-ым пользователем ");

scanf("%d",&tgz2); ztgz2=tgz2;

printf("Введите время подготовки задания 3-ым пользователем ");

scanf("%d",&tgz3); ztgz3=tgz3;

printf("Введите время выполнения задания на ЭВМ "); scanf("%d",&tm);

ztm=tm;

printf("Введите количество промоделированных на ЭВМ заданий ");

scanf("%d",&k); zk=k;

//----------- моделирующий цикл -----------------------------------

while (k!=0)

{ t=t+emb;

//появление пользователя

if (t%tp==0)

switch (cikl)

{ case 0: nz=1; cikl=1; break;

case 1: nz=2; cikl=2; break;

case 2: nz=3; cikl=3; break;

case 3: nz=1; cikl=0;

}

//начало подготовки задания

switch (nz)

{ case 1: pz1=1; nz=0; break;

case 2: pz2=1; nz=0; break;

case 3: pz3=1; nz=0;

}

Приложение № 1 (продолжение)

//подготовка задания

if (pz1==1)

if (tgz1==0) {pz1=0; znw=1; tgz1=ztgz1;} else tgz1=tgz1-emb;

if (pz2==1)

if (tgz2==0) {pz2=0; znw=2; tgz2=ztgz2;} else tgz2=tgz2-emb;

if (pz3==1)

if (tgz3==0) {pz3=0; znw=3; tgz3=ztgz3;} else tgz3=tgz3-emb;

// запрос на выполнение

if (n!=0 && wz==0) { wz=ocher[n-1]; n--; } //если очередь не пуста а

ЭВМ свобода

// то выпол. заявку из

очереди

if (znw!=0) //если имеется заявка на выполнение

if (wz==0) { wz=znw; znw=0; } //если ЭВМ не занята

else //если ЭВМ занята, то ставим заявку в очередь

{ if (n>=50) { printf("\nПереполнение очереди!\n"); return 0; }

else { ocher[n]=znw; znw=0; n++; }

}

//выполнение задания на ЭВМ

switch (wz)

{ case 1: if (tm==0) {wz=0; k--; tm=ztm; } else tm=tm-emb; break;

case 2: if (tm==0) {wz=0; k--; w2++; tm=ztm; } else tm=tm-emb;

break;

case 3: if (tm==0) {wz=0; k--; tm=ztm; } else tm=tm-emb;

}

}

printf("\nПроцент вып. заданий, поступ. от 2-го польз.=%d%",100*w2/zk);

}

Приложение № 2

//Генерирование равномерно распределенных случайных величин

#include

long x=7533; //псевдослучайное число

long Rnd(long x) // процедура формирования очередного псевдослучайного

числа

{ int l=5169;

long k=65536;

return (l*x)%k;

}

void main()

{ FILE *fout; //выходной файл случайных величин

int i; //параметр цикла

fout=fopen("vi_gpsc1.dat","w");

for(i=1; i

#include

const emb=1; //единица машинного времени

FILE *ravn, *norm1, *norm2, *norm3, *exp;

float a;

int ravnom()

{ fscanf(ravn,"%f ",&a);

return int(a*5);

}

int normal1()

{ fscanf(norm1,"%f ",&a);

return int(a*10);

}

int normal2()

{ fscanf(norm2,"%f ",&a);

return int(a*10);

}

int normal3()

{ fscanf(norm3,"%f ",&a);

return int(a*10);

}

int expon()

{ fscanf(exp,"%f ",&a);

return int(a*10);

}

//------------------------- основная программа ----------------------

main()

{ int tp=100; //интервал между приходами пользователей

int tgz1=160; //время подготовки задания 1-ым пользователем

int tgz2=170; //время подготовки задания 2-ым пользователем

int tgz3=180; //время подготовки задания 3-им пользователем

int tm=8; //время выполнения задания на ЭВМ

int k=500; //количество промоделированных на ЭВМ заданий

int t=0; //время

char nz=0; //наличие заявки на входе системы

char cikl=0; //цикл прихода заявок

char pz1=0; //подготовка задания на сетевой машине 1

char pz2=0; //подготовка задания на сетевой машине 1

char pz3=0; //подготовка задания на сетевой машине 1

char znw=0; //наличие заявки на выполнение задания

char wz=0; //выполнение задания на ЭВМ

char ocher[50]; //очередь

char n=0; //индекс свободного элемента в очереди

int w2=0; //количество вып. заданий от 2-го пользователя

ravn=fopen("ravnomer.dat","r");

norm1=fopen("norm1.dat","r");

norm2=fopen("norm2.dat","r");

norm3=fopen("norm3.dat","r");

exp=fopen("exp.dat","r");

tgz1=normal1();

Приложение № 4 (продолжение)

tgz2=normal2();

tgz3=normal3();

tm=expon();

tp=10+ravnom();

//----------- моделирующий цикл -----------------------------------

while (k!=0)

{ t=t+emb;

//появление пользователя

if (t%tp==0)

{ tp=10+ravnom();

fscanf(ravn,"%f ",&a);

if (a0.4 && a0.5) nz=3;

}

//начало подготовки задания

switch (nz)

{ case 1: pz1=1; nz=0; break;

case 2: pz2=1; nz=0; break;

case 3: pz3=1; nz=0;

}

//подготовка задания

if (pz1==1)

if (tgz1==0) {pz1=0; znw=1; tgz1=normal1();} else tgz1=tgz1-

emb;

if (pz2==1)

if (tgz2==0) {pz2=0; znw=2; tgz2=normal2();} else tgz2=tgz2-

emb;

if (pz3==1)

if (tgz3==0) {pz3=0; znw=3; tgz3=normal3();} else tgz3=tgz3-

emb;

// запрос на выполнение

if (n!=0 && wz==0) { wz=ocher[n-1]; n--; } //если очередь не пуста а

ЭВМ свобода

// то выпол. заявку из очереди

if (znw!=0) //если имеется заявка на выполнение

if (wz==0) { wz=znw; znw=0; } //если ЭВМ не занята

else //если ЭВМ занята, то ставим заявку в очередь

{ if (n>=50) { printf("\nПереполнение очереди!\n"); return 0; }

else { ocher[n]=znw; znw=0; n++; }

}

//выполнение задания на ЭВМ

switch (wz)

{ case 1: if (tm==0) {wz=0; k--; tm=expon(); } else tm=tm-emb;

break;

case 2: if (tm==0) {wz=0; k--; w2++; tm=expon(); } else tm=tm-

emb; break;

case 3: if (tm==0) {wz=0; k--; tm=expon(); } else tm=tm-emb;

}

}

printf("\nПроцент вып. заданий, поступ. от 2-го польз.=%d%",100*w2/500);

fclose(ravn);

fclose(norm1);

fclose(norm2);

fclose(norm3);

fclose(exp);

}


© 2010 БИБЛИОТЕКА РЕФЕРАТЫ