MVS上的IBM Window Services(DWS)csrevw函数

时间:2018-05-16 07:39:42

标签: zos mvs

我正在研究IBM MVS(z / OS)并尝试使Window Services正常工作。 关于功能CSREVW,我不明白参数pfcount的用途。 根据文档,在我的程序引用不在我窗口中的块之后,这将要求窗口服务读取多个块。 但是,窗口服务如何知道我试图引用不在我窗口中的数据?我的意思是,如果我再次打电话给CSREVW或CSRVIEW,我就无法知道我是否会从窗口读取数据。

也许我的主要问题是我无法理解英语,但这对我来说似乎很清楚......

以下是文档的链接,详见第23-24页: http://publibz.boulder.ibm.com/epubs/pdf/iea3c102.pdf

我知道这是关于IBM服务的一个非常具体的问题,我为此道歉。

谢谢! 添

2 个答案:

答案 0 :(得分:0)

来自手册

  

,pfcount       指定每次程序引用数据时窗口服务要带入窗口的其他块的数量   还没在窗口。您指定的号码将添加到   窗口服务总是带来的最少一个块。也就是说,   如果指定值20,则窗口服务最多可以输入21   附加块的数量范围从0到255。   请注意,您无需询问即可获得1个区块。

答案 1 :(得分:0)

我认为您遇到的问题是您需要了解一下窗口服务背后的底层对象如何在虚拟存储中工作。

核心是,各种窗口服务可以为您提供相当于“私有”页面数据集的功能。您可以分配和引用存储,但该虚拟空间中的对象实际上并不在内存中 - 系统的页面错误机制会在您引用它们时将它们引入。所以,是的,您正在访问“窗口”中的数据,但实际上,您希望看到的数据可能不会被“分页”。

更深入一点,当您第一次分配对象时,它映射到的虚拟存储器会在底层页表条目中将所有页面标记为“无效”。这意味着只要触摸此存储,就会发生页面错误中断。此时,操作系统通过将必要的数据存入内存来介入并解决页面错误,然后您的程序继续,代表您无视所有这些处理。你是正确的,你只是在窗口中引用数据,但是有很多内容正在支持这一点。

这是PFCOUNT的用武之地......

假设您的虚拟窗口中有64K长的结构。引用此结构的每个页面并且每次都会导致页面错误,这将是草率和缓慢的。更好的方法是使用PFCOUNT导致您引用的页面以及您的对象所需的所有其他15个页面通过单个操作进行分页。相反,如果您的数据很小并且您对如何访问它非常随机,那么PFCOUNT将不会对您有所帮助 - 您引用的下一页可能在任何地方,并且由于您最终带来了大量的PFCOUNT实际上是浪费你从来没有使用过很多数据。

希望这是有道理的 - 如果你想要一个挑战,你自己一个系统转储并在你引用数据时检查系统跟踪条目......你会看到一个非常明显的页面错误模式,I / O和恢复你的计划,希望这一切都对你有意义。