从UNIX到IBM主机系统的程序移植探讨_第1页
从UNIX到IBM主机系统的程序移植探讨_第2页
从UNIX到IBM主机系统的程序移植探讨_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

从UNIX到IBM主机系统的程序移植探讨

摘要:本文介绍了UNIX平台与IBM主机系统平台之间的差异,并对跨平台移植过程中应考虑的主要问题和解决方法进行了探讨。

关键词:IBM主机系统;移植;作业控制语言;初始化器

1引言

IBM主机系统,又称IBM大型机,是20世纪60年代发展起来的计算机系统,在全世界各大国家中肩负着银行、保险、证券、通讯等行业的数据与信息处理工作,因为其独具的高安全性、高稳定性和强大的数据处理能力,迄今无可替代。

近几年来,主机系统的前景不断看好。从1994年起,IBM开始对大型机进行深入的技术改造,采用了新的CMOS技术,极大地缩小了大型机的系统体积,降低了能耗和散热成本,提高了性能价格比。另一方面,分布式计算开始变得庞杂起来,许多公司的管理费用激增,而且由于数据分散,在数据的互访和集中管理方面,安全和准确性都不够高,许多企业开始转向使用大型机。大型机在总体拥有成本上已经比分布计算廉价,制造业、保险、航空、运输及大型零售企业的大量事务处理对大型机的要求越来越高,这是大型机重新被人们认可的原因之一。

2分布式与大型机

分布式计算在短期内给企业带来了高效,但随着时间的延续,企业系统扩大,数据分散存放在上百台服务器上,数据的查询成为问题,数据的互访和对大量数据的开采利用变得困难起来,一个新的趋势——再集中开始出现。如何将分布处理和集中计算结合起来,成为许多企业考虑的问题。大型机的系统完整性和大存储量的优势显示出来,开始承担用户再集中需求的任务。

在总体拥有成本上,随着时间的推移,小型机系统渐渐显现出极高的使用成本。或许人们在使用一年UNIX后,会说UNIX性价比高,但随着业务的增加,系统变得分散庞杂起来,维护费用增加。大型机挺过了关键的10年暗淡期,终于峰回路转。因此,越来越多的企业开始关注IBM主机系统,将自己的系统移植到主机系统上来。

3移植平台间的差异

3.1主机操作系统Z/OS与UNIX

目前IBM主机的主流操作系统Z/OS是使用最广泛的基于64位Z体系结构大型机操作系统,它给在大型机上的应用程序员提供了稳定、安全和可持续运行的环境。

从本质上来说,UNIX是一个计算密集型的操作系统,CPU利用率较高,更适用于需要大量计算的环境;而主机操作系统Z/OS依赖于其强大的硬件后盾,除了强大的计算能力之外,更突出的是它强大的I/O处理能力,依托硬件上的FICON、ESCON等光纤通道,可同时应对大规模的并发用户,因此它是一个I/O密集型的操作系统。两种系统在很多内容上有着不同但又类似之处。

3.2进程与地址空间

在UNIX下,一个程序的执行通常称为一个进程,操作系统为每个进程分配一定的CPU、内存资源,使其运行,进程与进程之间可以通过信号量机制协同工作实现并发;而在Z/OS下没有进程的概念,与之对应的是地址空间(AddressSpace)的概念,任何用户的登录、程序的执行、作业的提交,系统都会为其生成一个地址空间。地址空间之间在批处理方式下一般没有通信,而通过联机交易处理方式实现程序间通信。

在UNIX下通常会有守护进程(daemon)的概念,在主机环境中通常是一个长时间运行的作业的提交,可以从控制台为这个守护作业提供输入输出对象处理。

3.3文件的组织与编辑方式

从文件和数据格式上来说,UNIX系统是树状的目录结构,数据的组织以文件夹与文件的方式保存、管理;而在主机上,数据都保存在数据集里,数据集分顺序数据集、分区数据集与VSAM数据集,其组织方式没有多层树状结构,分区数据集下可包含称为member的顺序数据集,顺序数据集或VSAM数据集存储实际的数据。

数据的格式在UNIX下是面向字节,而在Z/OS下是面向记录的。数据的编辑在UNIX下通常是用VI;而在Z/OS下用的是ISPF编辑器。

3.4交互系统的区别

UNIX下用户登录并在Shell环境下执行Shell会话,可以通过发送远程登录rlogin命令或者远程登录telnet命令连接系统,一个用户可以同时打开多个用户会话。在主机环境下,用户通过TSO/E和它的菜单驱动接口ISPF登录系统,一个用户一次只能有一个活动的会话。

在UNIX系统中,用户可以通过后缀Shell命令观察处理进程和线程,可通过Kill命令结束一个任务。在主机环境中,用户通过作业处理子系统提供的SDSF查看他们提交作业的执行情况,并可以终止作业任务的执行。

4移植实例

下面以一个实际项目实例来阐述一套移植过程中要考虑的具体问题。项目以一个在UNIX平台上实际应用的后台结息系统为移植对象,考虑系统处理的各种运行机制和平台差异,最终将整个系统移植到Z/OS下。

原系统的操作系统为AIX5.0,数据库为INFORMIX10X,开发语言为C语言,移植后的操作系统为Z/OS1.5,数据库为DB2版本8,开发语言为C语言。

4.1针对多进程考虑

在原系统中有一个主控程序设计,主控程序是一个主调度程序,主要负责控制并发的进程数量及状态,系统支持的并发数量由主控程序的参数设置,通常设置为30。主控程序控制的每一个并发进程代表一个部门结息流程。假设一次性有1000个部门运行结息过程,主控程序负责调度,它轮寻所有进程,当一个进程结束时启动下一个进程,直到所有部门完成。

在Z/OS上没有进程的概念,针对这种后台批处理的结息方式,我们通过作业的方式实现,方案是为每个部门的结息准备一个JCL作业。所谓JCL(JobControlLanguage)是作业控制语言,通过它写一段作业脚本提交给系统,可以让系统执行相应的程序或进行相关的工作。为每个部门结息准备一个JCL作业,再准备一个主JCL作业,这个主JCL的任务就是去提交所有部门的JCL作业。

把结息过程定义为作业的好处是,在Z/OS里控制作业的并发数量以及作业调度的任务都可以由系统里的作业处理子系统JES2自动完成。在JES2里,有多个被称为Initiator的地址空间,每个Initiator都相当于UNIX下的一个守护进程,专门处理提交的作业。

Z/OS中的Intiator是一个自动调度和处理提交的多个作业的地址空间,它主要负责处理如下任务:

(1)确保同时运行的各项作业不会产生数据集使用上的冲突;

(2)为作业分配必要的硬件设备,如磁带等;

(3)从库中找到每个作业需要调用的可执行程序;

(4)当一个作业运行完毕之后,在作业队列中清除该作业并要求处理下一个作业。

每个Initiator在同一时刻可以处理一个作业,而多个Intiator可以并发处理多个作业,各个Initiator并发处理各个作业都是在保证不出现死锁的前提下进行的。Initiator的数量可以在系统中设置,这样一来就自动实现了并发数的控制。比如我希望将并发数控制为50,我们在系统中设置50个Initiator,然后提交主JCL作业,主JCL作业再一次性提交1000个部门的作业,这些作业由JES自动调度给50个Initiator,并实现负载的均衡。

4.2Makefile的替代

在UNIX平台上,通常会在准备好源代码之后使用make工具进行编译,在执行make之前,需要一个命名为Makefile的特殊文件来告诉make需要做什么,该怎么做。通常make工具主要被用来进行工程编译和程序链接。

当使用make工具进行编译时,以下几种文件在执行make时将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论