什么是“加载模块”?

Posted

技术标签:

【中文标题】什么是“加载模块”?【英文标题】:What is a "Load Module"? 【发布时间】:2017-07-26 05:30:23 【问题描述】:

我一直在阅读有关链接和加载的内容(操作系统主题之一,不特定于任何语言),并且我遇到过“加载模块”这个术语,但之前没有任何参考。据我了解它的使用方式,它似乎是编译和链接后的最终产品(可能是可执行文件)。我试过谷歌,这个术语似乎与 COBOL 语言有关,并且没有特定于 COBOL 的规范,所以,我在这里发布这个,以了解你们中是否有人以前听说过这个并启发我。

【问题讨论】:

另见en.wikipedia.org/wiki/… 你说得对。它是一个可以运行的程序。通常它是链接器的产物。它不是 Cobol 特定的,程序可以是 Cobol、Fortran、C、.... 程序。见dictionary.com/browse/load-module 【参考方案1】:

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

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

所以你说得对,它是可以被 z/OS 执行的 Binder(以前称为 Linkage Editor)的最终输出。

一些补充说明:

该术语不限于 COBOL,Binder 输入是可以由 z/OS 上的许多可用编译器生成的对象模块,即 C、COBOL、PL/I、已编译的 REXX 甚至汇编程序(其中没有编译器,只有一个汇编器)。 在严格遵循定义时,请务必注意上述引用中的术语“分区数据集程序库”。存储在 PDSE 或 z/OS Unix 文件中的可执行程序称为“程序对象”。但是您经常会看到“加载模块”也用于那些,因为许多人只是使用他们知道的旧术语并且不费心去做出改变(比如在谈论 Binder 时使用“链接编辑器”)

【讨论】:

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

以上是关于什么是“加载模块”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥你永远不应该重新加载模块? [复制]

求高手解决啊 关于apache启动加载模块错误

linux驱动静态加载模块和动态加载模块的入口函数分别是啥?

Linux 系统 怎样查看已加载模块的状态

在 Perl 中,加载模块的 use 和 require 有啥区别?

thinkphp3.2 无法加载模块