Язык GPSS. Синхронизация транзактов. Работа с потоками данных. Лекция 4 презентация

Содержание

Слайд 2

Синхронизация транзактов
Размножение транзактов
Сбор транзактов
Синхронизация процессов
Синхронизация процессов возможна только с транзактами одного семейства!!!

Слайд 3

Размножение транзактов

SPLIT A,B,C
А – количество создаваемых копий
В – имя блока, куда направляются

копии
(по умолчанию – к следующему блоку)
С – имя/номер атрибута транзакта:
ASSIGN 2,5
SPLIT 3,,2 исходный транзакт Р2=5+1
копия 1 Р2=5+2
копия 2 Р2=5+3
копия 3 Р2=5+4

Одно семейство!!

Слайд 4

Сбор транзактов

ASSEMBLE A
GATHER A
A – количество собираемых транзактов
(транзакты задерживаются в блоке, пока не

соберутся А транзактов одного семейства)
ASSEMBLE – проходит 1 транзакт (остальные
уничтожаются)
GATHER – проходят ВСЕ транзакты

Слайд 5

Примеры сбора транзактов

Правильный сбор
SPLIT 3
. . .
ASSEMBLE 4
SPLIT 5
. . .
GATHER

2

Неправильный сбор
SPLIT 4
. . .
ASSEMBLE 4
здесь в каждом семействе
один транзакт задержится в
блоке ASSEMBLE
навсегда!!!

Слайд 6

Синхронизация транзактов

MATCH A
A – имя парного блока MATCH
Пример использования:
MET1 MATCH MET2 . .

.
MET2 MATCH MET1

Слайд 7

Пример 1 (постановка задачи)

Проводятся соревнования по решению головоломок.
В соревнованиях участвуют два человека.

Им обоим одновременно выдается по пакету одинаковых заданий.
Соревнование проходит в 7 этапов ( в пакете 7 задач). На каждом этапе тот участник, который решит задачу быстрее, получает очко.
К очередному этапу участники приступают всегда одновременно.
Время решения задачи на каждом этапе определяется (мин):
Зад1 Зад2 Зад3 Зад4 Зад5 Зад6 Зад7
Участник 1 3±2 6±3 6±2.5 3±1 7±2 5±1 4±2
Участник 2 4±1.5 5±2 5.5±2 5±2 8±4 6±2 3.5±1
Выигрывает тот участник, который в сумме набирает больше баллов.
Оценить вероятность выигрыша участника 1. Оценку получить на выборке, равной 100.

Слайд 8

Пример 1 (описание функций)

;время решения задачи 1-м участником на каждом этапе (записано в

обратном порядке!)
f1_t function P1,d7
1,4/2,5/3,7/4,3/5,6/6,6/7,3
;модификатор времени 1-го участника на каждом этапе
f1_m_t function P1,d7
1,2/2,1/3,2/4,1/5,2.5/6,3/7,2
;время решения задачи 2-м участником на каждом этапе
f2_t function P1,d7
1,3.5/2,6/3,8/4,5/5,5.5/6,5/7,4
;модификатор времени 2-го участника на каждом этапе
f2_m_t function P1,d7
1,1/2,2/3,4/4,2/5,2/6,2/7,1.5

Слайд 9

Пример 1 (модель)

sorevn storage 1
generate ,,,100
enter sorevn
assign 1,7
split 1,second
;работа участника

1
first advance (fn$f1_t),(fn$f1_m_t)
test e w$met2,1,ball1
transfer ,met1
ball1 savevalue sum1+,1
met1 match met2
loop 1,first
transfer ,next
itog savevalue ver,(x$sum/100)
terminate 1
start 1

;работа участника 2
second advance (fn$f2_t),(fn$f2_m_t)
test e w$met1,1,ball2
transfer ,met2
ball2 savevalue sum2+,1
met2 match met1
loop 1,second
next assemble 2
test g x$sum1,x$sum2,next2
savevalue sum+,1
next2 savevalue sum1,0
savevalue sum2,0
leave sorevn
savevalue member+,1
test ne x$member,100,itog
terminate

Слайд 10

Пример 1 (отчет)

SAVEVALUE RETRY VALUE
SUM1 0 0
SUM2 0 0

SUM 0 64.000
MEMBER 0 100.000
VER 0 0.640

Слайд 11

Пример 2 (постановка задачи)

Машины прибывают на автозаправочную станцию в среднем каждые 3 минуты.
Время

обслуживания в среднем составляет 5 минут.
(временные характеристики подчиняются экспоненциальному закону)
Доход от обслуживание каждой машины равен 3$
В конце рабочего дня 75$ забирает хозяин.
Стоимость содержания каждой колонки (с учетом зарплаты работникам) составляет 30$.
Определить оптимальное количество колонок на станции (по максимизации прибыли), если:
На станции можно поставить от 1 до 4 колонок;
Подъезд к колонкам организован таким образом, что очередь машин, ожидающих заправки максимально может составлять <количество колонок>+1.
Время работы станции равно 10 часам.

Слайд 12

Пример 2 (организация очередей)

. . .

Слайд 13

Пример 2 (описание объектов)

Store1 EQU 1 ; присвоение значения имени
Store1 STORAGE 1
Store2

EQU 2
Store2 STORAGE 2
Store3 EQU 3
Store3 STORAGE 3
Store4 EQU 4
Store4 STORAGE 4
Net VARIABLE SC*1#3-75-30#R*1

Слайд 14

Пример 2 (модель)

Net variable SC*1#3-75-30#R*1
;таймер
GENERATE 600
;через 10 часов закрываем
;станцию
LOGIC S

Lock
;ждем дообслуживания
TEST E N$Goin,N$Done
SPLIT 3,,1
SAVEVALUE P1,V$Net
TERMINATE 1
START 4
;приезд машин
GENERATE (exponential(1,0,3))
;проверяем, открыта ли станция?
GATE LR Lock
SPLIT 3,,2
TEST LE Q*2,S*2,Bybye
Goin QUEUE P2
ENTER P2
DEPART P2
ADVANCE (exponential(1,0,5))
Done LEAVE P2
Bybye TERMINATE

Слайд 15

Пример 2 (отчет)
SAVEVALUE RETRY VALUE
1 0 204.000
2 0 408.000

3 0 450.000
4 0 423.000

Слайд 16

Работа с потоками данных

Потоки данных можно использовать для работы с текстовыми файлами,

создаваемыми на диске, или для хранения данных в памяти.
Операции для работы с потоками данных:
Создать поток данных
Уничтожить поток данных
Прочитать текстовую строку из потока данных
Записать текстовую строку в поток данных
Установить новую текущую позицию

Слайд 17

Создание потока данных (открытие/создание файла)

OPEN A,B,C
A – имя файла в виде текстовой строки
В –

числовой идентификатор потока
С – имя блока, куда направляется транзакт, если не удается создать поток
(если открывается существующий файл, то указатель устанавливается на начало файла )

Слайд 18

Уничтожение потока данных (закрытие файла)

CLOSE A,B,C
A – имя/номер атрибута транзакта, в который записывается код

ошибки
В – числовой идентификатор потока
С – имя блока, куда направляется транзакт, если код ошибки не равен нулю
(проанализировать код ошибки работы с потоком данных можно только после использования блока CLOSE с полем А)

Слайд 19

Чтение из файла

READ A,B,C
A – имя/номер атрибута транзакта, в который записывается прочитанная строка


В – числовой идентификатор потока
С – имя блока, куда направляется транзакт, если произошла ошибка чтения или дошли до конца файла
(после чтения указатель перемещается на следующую строку)

Слайд 20

Запись в файл

WRITE A,B,C,D
A – текстовая строка, которая записывается в поток данных
В

– числовой идентификатор потока
С – имя блока, куда направляется транзакт, если произошла ошибка записи
D – режим записи:
ON (режим вставки) (по умолчанию)
OFF (режим замены)

Слайд 21

Перемещение указателя

SEEK A,B,C
(устанавливается новая текущая позиция)
A – номер новой текущей позиции
В –

числовой идентификатор потока

Слайд 22

Возможные коды ошибок

0 – нет ошибки;
10 – ошибка OPEN (слишком длинное имя

файла – более 200 символов);
11 – ошибка OPEN (ошибка чтения внешнего файла – не смогли загрузить в память);
12 – ошибка OPEN (не хватило памяти для файла);
21 – ошибка READ (не хватило памяти);
22 – ошибка READ (поток не открыт);
31 – ошибка WRITE (не хватило памяти);
32 – ошибка WRITE (поток не открыт);
41 – ошибка CLOSE (не смогли записать файл на диск);
43 – ошибка CLOSE (поток не открыт);
51 – ошибка SEEK (поток не открыт).

Слайд 23

Пример 3 (постановка задачи)

Заявки поступают в систему в среднем каждые 4 минуты.
В системе

один канал обслуживания.
Время обслуживания в среднем равно 3 минуты.
Все временные характеристики подчиняются экспоненциальному закону.
Необходимо записать в файл время простоя каждой заявки в очереди.
Промоделировать 8 часов работы системы.

Слайд 24

Пример 3 (модель)

generate (exponential(1,0,4))
queue och
seize can
depart och
;М1 – СЧА транзакта, содержащий ;время его

нахождения в системе ;с момента рождения
write M1,1,error
advance (exponential(1,0,3))
release can
terminate

;открытие файла
generate ,,,1
open “t_och.txt",1,error
terminate
;таймер
generate 480
error close osh,1
savevalue 1,p$osh
terminate 1
start 1

Имя файла: Язык-GPSS.-Синхронизация-транзактов.-Работа-с-потоками-данных.-Лекция-4.pptx
Количество просмотров: 62
Количество скачиваний: 0