什么是"加载模块"?

pas*_*sha 4 linker cobol mainframe zos

我一直在阅读有关链接和加载(操作系统主题之一,不是特定于任何语言)的内容,我在没有任何先前参考的情况下遇到过这个术语"加载模块".根据我对其使用方式的理解,它似乎是编译和链接后的最终产品(也许是可执行文件).我试过谷歌,这个术语似乎与COBOL语言有关,并且没有特定于COBOL的规范,所以,我在这里发布这个,以便知道你们之前是否有人听过这个并且启发我.

pie*_*t.t 7

根据IBM的"MVS程序管理:用户指南和参考",加载模块是

存储在分区数据集程序库中的可执行程序.

所以你是对的,它是可以由z/OS执行的Binder(以前称为链接编辑器)的最终输出.

一些补充说明:

  • 这个术语不仅限于COBOL,Binder-input是可以由z/OS上的许多可用编译器生成的对象模块,即C,COBOL,PL/I,编译的REXX甚至汇编程序(没有汇编程序)编译器,但汇编程序).
  • 严格遵循定义时,请务必注意上面引用中的术语"分区数据集程序库".存储在PDSE或z/OS Unix文件中的可执行程序称为"程序对象".但是你会经常看到"加载模块"也用于那些人,因为许多人只是使用他们所知道的旧术语,而且不用费心去做(如在谈论Binder时使用"Linkage Editor")

  • 为了略微放大,z/OS有几种不同格式的可执行程序,而加载模块是最老的.该名称来自LOAD系统服务,这是将可执行文件读入内存的最常用方法.加载模块的缺点是,关于可执行文件的某些信息存储在PDS目录本身中,而不是存储在构成可执行程序的数据中.这使得移动它们变得很麻烦,但是复杂的程序可以在实际加载程序之前通过读取PDS目录条目(例如它的大小)来获取有关程序的信息. (2认同)