Функция csrevw IBM Window Services (DWS) в MVS - PullRequest
0 голосов
/ 16 мая 2018

Я работаю над IBM MVS (z / OS) и пытаюсь заставить Windows Services работать.На функции CSREVW я не понимаю, какова цель параметра pfcount.В соответствии с документацией, оконным службам будет предложено прочитать более одного блока после того, как моя программа ссылается на блок, которого нет в моем окне.Но как оконным службам узнать, что я пытался ссылаться на данные, которых нет в моем окне?Я имею в виду, что он не может знать, что я читаю данные из своего окна, если я больше не буду звонить в CSREVW или CSRVIEW.

Может быть, моя главная проблема в том, что у меня проблемы с пониманием английского, но это кажетсямне ясно ...

Вот ссылка на документацию, это объясняется на страницах 23-24: http://publibz.boulder.ibm.com/epubs/pdf/iea3c102.pdf

Я знаю, что это очень специфическая проблема службы IBMи я прошу прощения за это.

Спасибо!Тим

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

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

По сути, различные оконные сервисы работают, чтобы дать вам то, что составляет «частный» набор данных страницы.Вы выделяете и ссылаетесь на хранилище, но объекты в этом виртуальном пространстве на самом деле не находятся в памяти - механизм сбоя страницы системы вызывает их, когда вы ссылаетесь на них.Так что да, вы получаете доступ к данным в «окне», но на самом деле данные, которые вы ожидаете увидеть, в этот момент могут не быть «разбиты на страницы».

Пройдя немного глубже, когда вы впервые выделяетеобъект, виртуальное хранилище, которому он сопоставлен, имеет все страницы, помеченные как «недействительные» в базовых записях таблицы страниц.Это означает, что как только вы коснетесь этого хранилища, произойдет прерывание сбоя страницы.В этот момент операционная система вступает в действие и устраняет ошибку страницы, помещая необходимые данные в память, затем ваша программа продолжает работу, не обращая внимания на всю эту обработку от вашего имени.Вы правы в том, что вы просто ссылаетесь на данные в окне, но под прикрытием есть многое, что поддерживает это.

Вот где приходит PFCOUNT ...

Давайтескажем, у вас есть структуры, которые, скажем, длиной 64 КБ внутри вашего виртуального окна.Было бы небрежно и медленно ссылаться на каждую страницу этой структуры и каждый раз вызывать сбой страницы.Гораздо лучше было бы использовать PFCOUNT, чтобы страница, на которую вы ссылаетесь, и все 15 других страниц, необходимых вашему объекту, были вставлены одной операцией.И наоборот, если ваши данные были небольшими, и вы были очень случайны в отношении того, как вы к ним обращаетесь, PFCOUNT вам не поможет - следующая страница, на которую вы ссылаетесь, может быть где угодно, и на самом деле расточительно иметь большой PFCOUNT, так как вы в конечном итоге приноситев большом количестве данных, которые вы никогда не используете.

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

0 голосов
/ 16 мая 2018

из руководства

, pfcount Определяет количество дополнительных блоков, которые вы хотите, чтобы оконные службы вносили в окно каждый раз, когда ваша программа ссылается на данные, которые уже не в окне. Указанный вами номер добавляется в минимум один блок, который всегда вносит оконная служба. если вы укажете значение 20, оконные службы принесут до 21. Количество дополнительных блоков колеблется от нуля до 255. Обратите внимание, что вы получаете 1 блок без запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...