Скачиваний:
57
Добавлен:
06.02.2016
Размер:
524.8 Кб
Скачать

Лабораторные работы 5-6

Перед выполнением упражнения 1.1 внимательно прочитайте § 8.5 в книге Емельянов А.А., Власова Е.А., Дума Р.В. Имитационное моделирование экономических процессов: Учеб. Пособие. М.: Финансы и статистика, 2004. – 368с.

    1. Модель управления ресурсами в локальной вычислительной сети.

Описание моделируемого процесса

Локальная вычислительная сеть (ЛВС) имеет один процессор, один винчестер и несколько пользовательских терминалов. Пользователи посылают операционной системе OS UNIX запросы на выполнение своих прикладных задач, которые содержат некоторое количество операций ввода-вывода (I/O). Посланный запрос поступает на обработку процессором (CPU). По каждому запросу создается процесс, который начинает работать в ЛВС. Созданному процессу OS UNIX выделяет участок памяти (RAM) и затем несколько буферов I/O (ресурсы ЛВС). Процессы, требующие меньший объем ресурса, имеют больший приоритет при его выделении. Если ресурсов ЛВС недостаточно для очередного процесса, он ожидает освобождения ресурса другими процессами. После этого процесс получает доступ к винчестеру (HDD) для выполнения одной операции I/O. Процесс, завершивший свою работу, освобождает занимаемые им ресурсы, возвращая их операционной системе.

После выделения ресурса и выполнения каждой операции ввода-вывода CPU определяет очередной этап обработки процесса. Если при очередной проверке состояния процесса необходимое количество операций I/O окажется выполненным, пользователю направляется сигнал о выполнении его запроса. Получив сигнал, пользователь обдумывает и посылает следующий запрос.

Параметры модели

Параметр

Среднее

значение

Количество пользователей

50

Время обдумывания запроса пользователем

10 сек

Время обработки запроса (процесса) в CPU

0.1 сек

Время доступа к винчестеру (операция I/O) минимальное

0.05 сек

Время доступа к винчестеру (операция I/O) максимальное

0.15 сек

Время доступа к винчестеру (операция I/O)

наиболее вероятное

0.1 сек

Максимальный объем выделяемой RAM

64 Мбайт

Максимальное число выделяемых буферов I/O

10

Вероятность завершения процесса I/O

0.2

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

8 ч

Описание работы модели

В модели транзакт имеет несколько состояний:

- обдумываемый пользователем запрос;

- посланный пользователем запрос на организацию процесса

ввода-вывода;

- созданный OS UNIX-V процесс I/O;

- процесс, получивший RAM;

- процесс, получивший буферы I/O;

- процесс, выполнивший хотя бы одну операцию I/O;

-сигнал пользователю о выполнении запроса.

Текущее состояние транзакта заносится в его параметр и является критерием перехода из сервера, имитирующего работу процессора. Изменение состояния транзакта осуществляется в узлах, имитирующих терминалы пользователей, работу CPU, обращение к HDD, выделение RAM и буферов I/O. Имена используемых параметров транзактов переопределены операторами #define.

Модель является замкнутой. С помощью схемы зарядки (узлы 9, 10 и 11) генерируется семейство транзактов количеством USERS (число терминалов пользователей). Устройство схемы зарядки описано в п.4.6. настоящего пособия. Сгенерированные транзакты поступают в сервер (8), имитирующий пользовательские терминалы. Число каналов сервера равно константе USERS. Время обслуживания есть время обдумывания пользователем запроса к OS UNIX.

Рис. 22. Схема модели работы ЛВС под OS UNIX.

Перед входом в узел состояние транзакта (параметр PROCESS_STATUS) получает значение RAM. Это значит, что транзакт, выйдя из сервера, будет играть роль запроса на создание процесса I/O, и ему нужно будет выделить память.

Из сервера транзакт переходит в очередь (1), имитирующую очередь к процессору, и далее в сервер (2), имитирующий процессор. Перед входом в узел на основании значения параметра PROCESS_STATUS принимается решение о дальнейшей обработке транзакта. Если состояние транзакта имеет значение HDD, это значит, что данный транзакт имитирует уже созданный процесс I/O.

Если при этом установлен флажок доступа к винчестеру (параметр транзакта HDD_ACCESS равен 1), значит, процесс выполнил хотя бы одну операцию ввода-вывода и с вероятностью 0.2 является завершенным (значение генератора rundum больше 0.8).

В этом случае транзакт отправляется в сервер (8) - OS UNIX посылает пользователю сигнал о выполнении его запроса. Если же либо значение HDD_ACCESS равно 0 (процесс не выполнил еще ни одной операции ввода-вывода), либо значение генератора rundum не превосходит 0.8 (процесс не завершен), то транзакт отправляется в очередь (3), имитирующую очередь к винчестеру на совершение операций I/O (процесс должен выполнить очередную операцию ввода-вывода).

Если состояние транзакта имеет значение BUFF, значит, процесс получил память и теперь должен получить буферы I/O. В этом случае транзакт отправляется на склад ресурсов (7), имитирующий выделение процессу буферов I/O. Если состояние транзакта имеет значение RAM, значит, транзакт имитирует только что пришедший запрос на создание процесса I/O. В этом случае транзакт отправляется на склад ресурсов (5), имитирующий выделение процессу памяти.

Число каналов сервера равно 1 - процессор одновременно обрабатывает один процесс (запрос). Время обслуживания есть время обработки процесса (запроса) процессором и имеет равномерный закон распределения.

Если вошедший в узел транзакт будет отправлен в сервер (8), сбрасывается флажок доступа к винчестеру HDD_ACCESS (он получает значение 0), и транзакт возвращает полученные им ресурсы (выполняются операции detach).

В очереди (3) устанавливается флажок доступа к винчестеру HDD_ACCESS, и транзакт переходит в сервер (4), имитирующий обращение к винчестеру - операцию I/O. Число каналов сервера равно 1 - одновременно выполняется одна операция I/O. Время обслуживания в сервере есть время доступа к винчестеру и задано с помощью beta-распределения с минимальным временем доступа 0.05 секунды, максимальным - 0.15 секунды и наиболее вероятным - 0.1 секунды. Из сервера транзакт переходит в очередь (1).

На складе ресурсов (5) транзакту выделяется ресурс “RAM”. Перед входом в узел определяется объем запрашиваемой памяти (параметр транзакта RAM_AMOUNT) как случайная доля от масимального выделяемого объема памяти.

Состояние транзакта PROCESS_STATUS получет значение BUFF - процесс помечается как ожидающий выделения буферов I/O. В описании узла параметр RAM_AMOUNT указывает количество запрашиваемого ресурса. Флажок учета приоритета запроса установлен (см. “Описание моделируемого процесса”). Далее транзакт переходит к управляющему складом (6), и оттуда в очередь (1).

На складе ресурсов (7) транзакту выделяется требуемое количество буферов I/O (параметр транзакта BUF_AMOUNT). Состояние транзакта получает значение HDD (процесс готов к выполнению операций I/O - доступ к винчестеру разрешен). В остальном узел (7) аналогичен узлу (5).

Текст модели

/* Модель управления ресурсами в ЛВС под UNIX/System-V */

/* Время измеряется в секундах */

#include <Pilgrim.h>

#define USERS 50 /* Количество пользователей */

#define RAM 0 /* Флаг создания процесса */

#define BUFF 1 /* Флаг захвата буферов I/O */

#define HDD 2 /* Флаг операции I/O */

#define MAX_RAM 64 /* Максимальный объем RAM */

#define MAX_BUFFERS 10 /* Максимальное число буферов */

#define PROCESS_STATUS t->iu0 /* Состояние транзакта */

#define RAM_AMOUNT t->iu1 /* Выделяемый объем RAM */

#define BUF_AMOUNT t->iu2 /*Число выделяемых буферов */

#define HDD_ACCESS t->iu3/*Флаг получения доступа к HDD*/

#define MEMORY 5 /* Узел выделения RAM */

#define IO_BUFFERS 7 /* Узел выделения буферов I/O */

#define MOD_TIME 28800.0 /*Время моделирования 8 часов */

Соседние файлы в папке Лабораторные_занятия