當(dāng)前位置:首頁 > 智能硬件 > 智能硬件
[導(dǎo)讀]摘 要:本文介紹了UNIX平臺與IBM主機系統(tǒng)平臺之間的差異,并對跨平臺移植過程中應(yīng)考慮的主要問題和解決方法進(jìn)行了探討。關(guān)鍵詞:IBM主機系統(tǒng);移植;作業(yè)控制語言;初始化器1 引言IBM主機系統(tǒng),又稱IBM大型機,是20世

摘 要:本文介紹了UNIX平臺與IBM主機系統(tǒng)平臺之間的差異,并對跨平臺移植過程中應(yīng)考慮的主要問題和解決方法進(jìn)行了探討。

關(guān)鍵詞:IBM主機系統(tǒng);移植;作業(yè)控制語言;初始化器

1 引言

IBM主機系統(tǒng),又稱IBM大型機,是20世紀(jì)60年代發(fā)展起來的計算機系統(tǒng),在全世界各大國家中肩負(fù)著銀行、保險、證券、通訊等行業(yè)的數(shù)據(jù)與信息處理工作,因為其獨具的高安全性、高穩(wěn)定性和強大的數(shù)據(jù)處理能力,迄今無可替代。

近幾年來,主機系統(tǒng)的前景不斷看好。從1994年起,IBM開始對大型機進(jìn)行深入的技術(shù)改造,采用了新的CMOS技術(shù),極大地縮小了大型機的系統(tǒng)體積,降低了能耗和散熱成本,提高了性能價格比。另一方面,分布式計算開始變得龐雜起來,許多公司的管理費用激增,而且由于數(shù)據(jù)分散,在數(shù)據(jù)的互訪和集中管理方面,安全和準(zhǔn)確性都不夠高,許多企業(yè)開始轉(zhuǎn)向使用大型機。大型機在總體擁有成本上已經(jīng)比分布計算廉價,制造業(yè)、保險、航空、運輸及大型零售企業(yè)的大量事務(wù)處理對大型機的要求越來越高,這是大型機重新被人們認(rèn)可的原因之一。

2 分布式與大型機

分布式計算在短期內(nèi)給企業(yè)帶來了高效,但隨著時間的延續(xù),企業(yè)系統(tǒng)擴大,數(shù)據(jù)分散存放在上百臺服務(wù)器上,數(shù)據(jù)的查詢成為問題,數(shù)據(jù)的互訪和對大量數(shù)據(jù)的開采利用變得困難起來,一個新的趨勢——再集中開始出現(xiàn)。如何將分布處理和集中計算結(jié)合起來,成為許多企業(yè)考慮的問題。大型機的系統(tǒng)完整性和大存儲量的優(yōu)勢顯示出來,開始承擔(dān)用戶再集中需求的任務(wù)。

在總體擁有成本上,隨著時間的推移,小型機系統(tǒng)漸漸顯現(xiàn)出極高的使用成本?;蛟S人們在使用一年UNIX后,會說UNIX性價比高,但隨著業(yè)務(wù)的增加,系統(tǒng)變得分散龐雜起來,維護(hù)費用增加。大型機挺過了關(guān)鍵的10年暗淡期,終于峰回路轉(zhuǎn)。因此,越來越多的企業(yè)開始關(guān)注IBM主機系統(tǒng),將自己的系統(tǒng)移植到主機系統(tǒng)上來。

3 移植平臺間的差異

3.1 主機操作系統(tǒng)Z/OS與UNIX

目前IBM主機的主流操作系統(tǒng)Z/OS是使用最廣泛的基于64位Z體系結(jié)構(gòu)大型機操作系統(tǒng),它給在大型機上的應(yīng)用程序員提供了穩(wěn)定、安全和可持續(xù)運行的環(huán)境。

從本質(zhì)上來說,UNIX是一個計算密集型的操作系統(tǒng), CPU利用率較高,更適用于需要大量計算的環(huán)境;而主機操作系統(tǒng)Z/OS依賴于其強大的硬件后盾,除了強大的計算能力之外,更突出的是它強大的I/O處理能力,依托硬件上的FICON、ESCON等光纖通道,可同時應(yīng)對大規(guī)模的并發(fā)用戶,因此它是一個I/O密集型的操作系統(tǒng)。兩種系統(tǒng)在很多內(nèi)容上有著不同但又類似之處。

3.2 進(jìn)程與地址空間

在UNIX下,一個程序的執(zhí)行通常稱為一個進(jìn)程,操作系統(tǒng)為每個進(jìn)程分配一定的CPU、內(nèi)存資源,使其運行,進(jìn)程與進(jìn)程之間可以通過信號量機制協(xié)同工作實現(xiàn)并發(fā);而在Z/OS下沒有進(jìn)程的概念,與之對應(yīng)的是地址空間(Address Space)的概念,任何用戶的登錄、程序的執(zhí)行、作業(yè)的提交,系統(tǒng)都會為其生成一個地址空間。地址空間之間在批處理方式下一般沒有通信,而通過聯(lián)機交易處理方式實現(xiàn)程序間通信。

在UNIX下通常會有守護(hù)進(jìn)程(daemon)的概念,在主機環(huán)境中通常是一個長時間運行的作業(yè)的提交,可以從控制臺為這個守護(hù)作業(yè)提供輸入輸出對象處理。

3.3 文件的組織與編輯方式

從文件和數(shù)據(jù)格式上來說,UNIX系統(tǒng)是樹狀的目錄結(jié)構(gòu),數(shù)據(jù)的組織以文件夾與文件的方式保存、管理;而在主機上,數(shù)據(jù)都保存在數(shù)據(jù)集里,數(shù)據(jù)集分順序數(shù)據(jù)集、分區(qū)數(shù)據(jù)集與VSAM數(shù)據(jù)集,其組織方式?jīng)]有多層樹狀結(jié)構(gòu),分區(qū)數(shù)據(jù)集下可包含稱為member的順序數(shù)據(jù)集,順序數(shù)據(jù)集或VSAM數(shù)據(jù)集存儲實際的數(shù)據(jù)。

數(shù)據(jù)的格式在UNIX下是面向字節(jié),而在Z/OS下是面向記錄的。數(shù)據(jù)的編輯在UNIX下通常是用VI;而在Z/OS下用的是ISPF編輯器。

3.4 交互系統(tǒng)的區(qū)別

UNIX下用戶登錄并在Shell環(huán)境下執(zhí)行Shell會話,可以通過發(fā)送遠(yuǎn)程登錄rlogin命令或者遠(yuǎn)程登錄telnet命令連接系統(tǒng),一個用戶可以同時打開多個用戶會話。在主機環(huán)境下,用戶通過TSO/E和它的菜單驅(qū)動接口ISPF登錄系統(tǒng),一個用戶一次只能有一個活動的會話。

在UNIX系統(tǒng)中,用戶可以通過后綴Shell命令觀察處理進(jìn)程和線程,可通過Kill命令結(jié)束一個任務(wù)。在主機環(huán)境中,用戶通過作業(yè)處理子系統(tǒng)提供的SDSF查看他們提交作業(yè)的執(zhí)行情況,并可以終止作業(yè)任務(wù)的執(zhí)行。

4 移植實例

下面以一個實際項目實例來闡述一套移植過程中要考慮的具體問題。項目以一個在UNIX平臺上實際應(yīng)用的后臺結(jié)息系統(tǒng)為移植對象,考慮系統(tǒng)處理的各種運行機制和平臺差異,最終將整個系統(tǒng)移植到Z/OS下。

原系統(tǒng)的操作系統(tǒng)為AIX5.0,數(shù)據(jù)庫為INFORMIX 10X,開發(fā)語言為C語言,移植后的操作系統(tǒng)為Z/OS 1.5,數(shù)據(jù)庫為DB2版本8,開發(fā)語言為C語言。

4.1 針對多進(jìn)程考慮

在原系統(tǒng)中有一個主控程序設(shè)計,主控程序是一個主調(diào)度程序,主要負(fù)責(zé)控制并發(fā)的進(jìn)程數(shù)量及狀態(tài),系統(tǒng)支持的并發(fā)數(shù)量由主控程序的參數(shù)設(shè)置,通常設(shè)置為30。主控程序控制的每一個并發(fā)進(jìn)程代表一個部門結(jié)息流程。假設(shè)一次性有1000個部門運行結(jié)息過程,主控程序負(fù)責(zé)調(diào)度,它輪尋所有進(jìn)程,當(dāng)一個進(jìn)程結(jié)束時啟動下一個進(jìn)程,直到所有部門完成。

在Z/OS上沒有進(jìn)程的概念,針對這種后臺批處理的結(jié)息方式,我們通過作業(yè)的方式實現(xiàn),方案是為每個部門的結(jié)息準(zhǔn)備一個JCL作業(yè)。所謂JCL(Job Control Language)是作業(yè)控制語言,通過它寫一段作業(yè)腳本提交給系統(tǒng),可以讓系統(tǒng)執(zhí)行相應(yīng)的程序或進(jìn)行相關(guān)的工作。為每個部門結(jié)息準(zhǔn)備一個JCL作業(yè),再準(zhǔn)備一個主JCL作業(yè),這個主JCL的任務(wù)就是去提交所有部門的JCL作業(yè)。

把結(jié)息過程定義為作業(yè)的好處是,在Z/OS里控制作業(yè)的并發(fā)數(shù)量以及作業(yè)調(diào)度的任務(wù)都可以由系統(tǒng)里的作業(yè)處理子系統(tǒng)JES2自動完成。在JES2里,有多個被稱為Initiator的地址空間,每個Initiator都相當(dāng)于UNIX下的一個守護(hù)進(jìn)程,專門處理提交的作業(yè)。

Z/OS中的Intiator是一個自動調(diào)度和處理提交的多個作業(yè)的地址空間,它主要負(fù)責(zé)處理如下任務(wù):

(1) 確保同時運行的各項作業(yè)不會產(chǎn)生數(shù)據(jù)集使用上的沖突;

(2) 為作業(yè)分配必要的硬件設(shè)備,如磁帶等;

(3) 從庫中找到每個作業(yè)需要調(diào)用的可執(zhí)行程序;

(4) 當(dāng)一個作業(yè)運行完畢之后,在作業(yè)隊列中清除該作業(yè)并要求處理下一個作業(yè)。

每個Initiator在同一時刻可以處理一個作業(yè),而多個Intiator可以并發(fā)處理多個作業(yè),各個Initiator并發(fā)處理各個作業(yè)都是在保證不出現(xiàn)死鎖的前提下進(jìn)行的。Initiator的數(shù)量可以在系統(tǒng)中設(shè)置,這樣一來就自動實現(xiàn)了并發(fā)數(shù)的控制。比如我希望將并發(fā)數(shù)控制為50,我們在系統(tǒng)中設(shè)置50個Initiator,然后提交主JCL作業(yè),主JCL作業(yè)再一次性提交1000個部門的作業(yè),這些作業(yè)由JES自動調(diào)度給50個Initiator,并實現(xiàn)負(fù)載的均衡。

4.2 Makefile的替代

在UNIX平臺上,通常會在準(zhǔn)備好源代碼之后使用make工具進(jìn)行編譯,在執(zhí)行make之前,需要一個命名為Makefile的特殊文件來告訴make需要做什么,該怎么做。通常make工具主要被用來進(jìn)行工程編譯和程序鏈接。

當(dāng)使用make工具進(jìn)行編譯時,以下幾種文件在執(zhí)行make時將會被編譯或重新編譯:

(1) 所有的源文件沒有被編譯過,則對各個C源文件進(jìn)行編譯并進(jìn)行鏈接,生成最后的可執(zhí)行程序;

(2) 每一個在上次執(zhí)行make之后修改過的C源代碼文件在本次執(zhí)行make時將會被重新編譯;

(3) 頭文件在上一次執(zhí)行make之后被修改,則所有包含此頭文件的C源文件在本次執(zhí)行make時將會被重新編譯。

Makefile文件是一個非常有效的文件,而在Z/OS平臺中,沒有類似的文件可用,通常的編譯都是通過使用一個JCL作業(yè)去調(diào)用系統(tǒng)相關(guān)的針對編程語言的編譯器去執(zhí)行。

考慮到Makefile文件的對應(yīng)參數(shù)、編譯流程、依賴關(guān)系與JCL作業(yè)有很多相似點,我們的方案是還是使用JCL作業(yè)去編譯程序,但將相關(guān)的源程序?qū)懺谕粋€JCL作業(yè)中。在Z/OS環(huán)境下一個JCL作業(yè)可以有多個作業(yè)步,每個作業(yè)步可以指定進(jìn)行不同的操作或調(diào)用不同的程序,一個作業(yè)最多可以有255個作業(yè)步。因此,我們可以將相關(guān)聯(lián)的源程序或者頭文件放到同一個作業(yè)的不同作業(yè)步中,用于編譯、鏈接,當(dāng)有程序做了修改需要重新編譯鏈接時,還是提交同一個編譯作業(yè)就可完成。

4.3 信號量機制的考慮

在實際結(jié)息流程中,通常每個進(jìn)程都需要從數(shù)據(jù)庫表里申請一個唯一的編號作為結(jié)息流程的流水號,最終保存到數(shù)據(jù)庫。流水號是一個遞增數(shù)列,無論進(jìn)程執(zhí)行是否成功,此流水號都必須唯一且不可讓其他進(jìn)程使用,即使進(jìn)程執(zhí)行失敗,此流水號也必須作廢而不可給后續(xù)進(jìn)程使用。

在UNIX平臺下,允許進(jìn)程間通信,信號量機制就是用來解決進(jìn)程同步與互斥問題的。通過P、V操作,保證并發(fā)進(jìn)程互斥地訪問數(shù)據(jù)庫里的流水號資源。

而在Z/OS平臺下,特別針對后臺批處理方式下,用戶的程序之間,作業(yè)與作業(yè)之間一般不允許相互通信,資源的互斥使用是通過Initiator調(diào)度實現(xiàn)的。

考慮到進(jìn)程使用的流水號最終需要保存到數(shù)據(jù)庫,而且流水號要求是遞增數(shù)列,我們針對DB2數(shù)據(jù)庫直接操作,DB2里面有個Sequence Object,它是一個遞增數(shù)列,其遞增幅度與初始值都可以在建立的時候設(shè)定。我們可以針對不同類型的流水號建立一個或多個Sequence Object,之后在任何需要用到流水號的地方,通過調(diào)用Sequence Object的next value取其當(dāng)前值的下一個值,這樣不管多少進(jìn)程并發(fā),在同一時刻其next value永遠(yuǎn)不可能重復(fù),保證流水號的唯一性。

4.4 程序的準(zhǔn)備

移植初期首先需要將程序與數(shù)據(jù)導(dǎo)入到Z/OS環(huán)境下。

程序的導(dǎo)入可以通過FTP上傳或3270終端直接上傳的方式。首先需要在主機上針對不同屬性的文件建立不同屬性的數(shù)據(jù)集。由于主機上不是樹狀文件系統(tǒng)結(jié)構(gòu),所以要建立幾個分區(qū)數(shù)據(jù)集,將相關(guān)文件保存成為相關(guān)數(shù)據(jù)集的member。如源文件可以建立一個數(shù)據(jù)集,名為userid.SRC,庫文件可以建立為userid.LIB等,數(shù)據(jù)集的大小根據(jù)實際情況指定,我們的項目考慮可擴展性,建立的每個分區(qū)數(shù)據(jù)集以M為分配單位,初次分配量為300,再次分配量為100,目錄空間大小為100。

將文件保存成文本格式上傳,如果上傳后都成了順序數(shù)據(jù)集,可以寫一個簡單的JCL,使用IEBGENER將其拷貝到分區(qū)數(shù)據(jù)集里。

4.5 數(shù)據(jù)的導(dǎo)入

對于數(shù)據(jù)庫的導(dǎo)出導(dǎo)入,我們的方案是先將數(shù)據(jù)庫創(chuàng)建腳本導(dǎo)入到數(shù)據(jù)集,使用主機上的SPUFI運行腳本創(chuàng)建好數(shù)據(jù)庫、表空間和相關(guān)表、索引等。將原Infomix數(shù)據(jù)庫的數(shù)據(jù)以文本方式導(dǎo)出,再導(dǎo)入到主機,最后導(dǎo)入到數(shù)據(jù)庫。

在DB2里,數(shù)據(jù)庫的導(dǎo)入有Import和Load兩種方法。Import以SQL為基礎(chǔ),會寫日志,可以對視圖操作,表上定義的各種約束都將被檢查,可以在目標(biāo)表不存在的情況下通過ixf格式的文件創(chuàng)建表,不能在Import過程中搜集統(tǒng)計信息。Import成功后表就可以使用。

Load操作屬于偏底層的操作,不寫日志,不可以對視圖操作,除了唯一性約束之外的各種約束都不在Load過程中被檢查,不可以在目標(biāo)表不存在的情況下創(chuàng)建表,可以在Load過程中搜集統(tǒng)計信息。Load過程成功后也有可能將表空間置于pending等的特殊狀態(tài),管理相對比較復(fù)雜。

總的來說,由于Load操作底層,因此速度很快,適合用于大量數(shù)據(jù)的導(dǎo)入;Import速度慢但管理簡單,適用于少量數(shù)據(jù)導(dǎo)入。

由于我們的數(shù)據(jù)量非常大,因此選擇使用Load導(dǎo)入數(shù)據(jù)。我們將導(dǎo)出的數(shù)據(jù)保存到主機的數(shù)據(jù)集里,通過寫一個Load作業(yè),從相關(guān)數(shù)據(jù)集導(dǎo)入需要的數(shù)據(jù)。在Load過程中,可能會因為參數(shù)或數(shù)據(jù)出錯導(dǎo)致表空間置于reorganize pending狀態(tài),或者將某個表的Index置于rebuild pending狀態(tài),這時只需要將相應(yīng)的表空間做一個REORG或者對相應(yīng)的Index做一個rebuild就可以解決。

5 總結(jié)

在決定對一套應(yīng)用軟件進(jìn)行移植前,首先要明確移植的目的,選用適當(dāng)?shù)钠脚_和語言,然后充分地分析移植前后軟件運行環(huán)境的異同,決定要采取的技術(shù)和需要進(jìn)行的結(jié)構(gòu)調(diào)整,這樣就可以系統(tǒng)而有序地完成大中型軟件的移植工作,并可有效地提高軟件質(zhì)量,延長軟件生命期。通過幾個月的實踐,我們的方案在可行性上得到了驗證,作為實際的應(yīng)用,還有很多地方有待我們進(jìn)一步探討。

Abstract: This paper first introduces the main differences between UINX and IBM Mainframe platforms,and then discusses the main problems and the solutions on the program migration from UNIX to IBM Mainframe.

Key words: IBM Mainframe;migration;Job Control Language;Initiator

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉