Воскресенье, 19.11.2017, 08:05
Приветствую Вас Гость | RSS
Главная | Синхронизация ресурсов - Форум | Регистрация | Вход
Форма входа
Логин:
Пароль:
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Технические форумы » MVS (OS/390, zOS) » Синхронизация ресурсов
Синхронизация ресурсов
XOpenДата: Вторник, 18.08.2009, 20:13 | Сообщение # 1
Генерал-майор
Группа: Администраторы
Сообщений: 322
Репутация: 4
Статус: Offline
Вот хочу, чтобы разные мои программы не работали с одинаковыми томами. Какие способы можете предложить? Например:
1. Выделить область CSA и писать туда используемые ССUU. Программы будут по ENQ/DEQ проверять область и редактировать. Минусы: права на правку CSA да и она не резиновая, томов может быть много.
2. USS shared memory+семафоры. Прав не надо, но POSIX(ON) вносит путаницу. Таже Си system() по другому работает и тд.
3. Сделать отдельный TCP сервер и все его будут спрашивать по TCP. Надо всегда запущенная прога и чтоб кто-то ее перестартовывал.

ваши идеи ? Какие еще способы общения? Подошел бы MQ идеально, но его нету. sad


Худая корова еще не газель!
 
slДата: Вторник, 18.08.2009, 21:25 | Сообщение # 2
Лейтенант
Группа: Проверенные
Сообщений: 55
Репутация: 0
Статус: Offline
А можно для тупых еще раз и медленно: чего хочется ?
 
XOpenДата: Вторник, 18.08.2009, 21:53 | Сообщение # 3
Генерал-майор
Группа: Администраторы
Сообщений: 322
Репутация: 4
Статус: Offline
мда, тогда уж тупой тот, кто невнятно написал. smile

Абстрактно. Есть прога 1 - она пишет файл 1. Есть прога 2 - она пишет файл 2. Нечто их рандомно запускает и дает диск параметром, чтобы они туда написали файл. Я не хочу, чтобы у меня на каком то диске появилось 2 файла сразу. Проверять наличие файла нельзя - они по разному называются в разное время. Проверять идет ли работа с диском - невозможно. Прога может закрыть файл, подумать и еще что то дописать. Могут лежать файлы вообще от 3х лиц. (тоесть не проверишь, диск просто пустой или нет)

Значит нужен механизм, чтобы проги могли говорить друг другу, которые диски уже используются. Тогда другие не будут ничего делать на тех же дисках.

Проги мои - имею право дописать любые функции и тд. Вопрос - через что это красивее сделать.


Худая корова еще не газель!
 
slДата: Вторник, 18.08.2009, 23:43 | Сообщение # 4
Лейтенант
Группа: Проверенные
Сообщений: 55
Репутация: 0
Статус: Offline
А почему нельзя просто ENQ "VOLUME" <vol_name> ?...
 
XOpenДата: Четверг, 20.08.2009, 19:47 | Сообщение # 5
Генерал-майор
Группа: Администраторы
Сообщений: 322
Репутация: 4
Статус: Offline
а если у меня задание JCL? Тогда первый шаг возмет ENQ, а ко второму автоматом выдастся DEQ. И тогда другой JCL сможет ухватиться, когда первый еще не закончился.

Добавлено (20.08.2009, 19:47)
---------------------------------------------
вопрос: я кстати прав, что ENQ делается только на шаг, а не на весь джоб ?


Худая корова еще не газель!
 
GregoryДата: Суббота, 22.08.2009, 00:40 | Сообщение # 6
Генерал-майор
Группа: Доверенные
Сообщений: 305
Репутация: 7
Статус: Offline
Quote (XOpen)
вопрос: я кстати прав, что ENQ делается только на шаг, а не на весь джоб ?

Если имеется в виду ENQ, выдаваемое системой (точнее инициатором) для набора данных в DD то нет.
Если имеется в виду ENQ выдаваемое программой, выполняемой в шаге задания то да.

Возможно, наиболее простой способ сделать то, что вы хотите есть вклбчение в задание
//RESERVE DD DSN=FORMAT4.DSCB,DISP=OLD,VOL=SER=volume,UNIT=unit
причем здесь имя набора данных значения не имеет и этот набор может не существовать (существование набора проверяется при открытии).
Или я что-то неправильно понимаю? Следующая ситуация должна допускаться или нет?
//JOB1
//STEP1 создает и записывает набор на томе 111111
//STEP2 дополняет набор на томе 222222

//JOB2
//STEP1 создает и записывает набор на томе 222222
//STEP2 дополняет набор на томе 111111

Вы вообще идеологически что хотите:
1) предложить пользователям схему корректной работы
или
2) принудить пользователей работать корректно?

Совместное использование наборов данных в z/OS сделано в стиле 1) за исключением VSAM, где это больше похоже на 2). Для таблицы СУБД это еще больше похоже на 2), но и для VSAM, и для таблицы принуждение все же имеет некоторые послабления (ISOLATION LEVEL UR aka Dirty Read например)


Сообщение отредактировал Gregory - Вторник, 25.08.2009, 01:44
 
slДата: Пятница, 28.08.2009, 23:21 | Сообщение # 7
Лейтенант
Группа: Проверенные
Сообщений: 55
Репутация: 0
Статус: Offline
Quote (Gregory)
Возможно, наиболее простой способ сделать то, что вы хотите есть вклбчение в задание
//RESERVE DD DSN=FORMAT4.DSCB,DISP=OLD,VOL=SER=volume,UNIT=unit

Поправка: в DSN надо включить имя тома , ибо само оно в ENQ не попадет smile
А вот на весь job или только на step это будет действовать - уже не помню...
 
GregoryДата: Суббота, 29.08.2009, 01:07 | Сообщение # 8
Генерал-майор
Группа: Доверенные
Сообщений: 305
Репутация: 7
Статус: Offline
Конечно, имя тома нужно включать в DSN, да и вообще, я неудачно выбрал имя в примере. Лучше использовать что-то вроде application_id.volume_serial. А VOL=SER=volume_serial в этом DD нужен для совершенно другого - чтобы не выполнялся поиск набора данных в каталоге, так как в результате получим jcl error - data set not found. Врочем, можно использовать и реально существующий набор, от этого ничего не меняется.
ENQ без сомнения будет действовать для всего задания, см. тему JCL где обсуждается этот факт.


Сообщение отредактировал Gregory - Суббота, 29.08.2009, 01:08
 
Форум » Технические форумы » MVS (OS/390, zOS) » Синхронизация ресурсов
Страница 1 из 11
Поиск: