


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
從UNIX到IBM主機系統的程序移植探討
摘要:本文介紹了UNIX平臺與IBM主機系統平臺之間的差異,并對跨平臺移植過程中應考慮的主要問題和解決方法進行了探討。
關鍵詞:IBM主機系統;移植;作業控制語言;初始化器
1引言
IBM主機系統,又稱IBM大型機,是20世紀60年代發展起來的計算機系統,在全世界各大國家中肩負著銀行、保險、證券、通訊等行業的數據與信息處理工作,因為其獨具的高安全性、高穩定性和強大的數據處理能力,迄今無可替代。
近幾年來,主機系統的前景不斷看好。從1994年起,IBM開始對大型機進行深入的技術改造,采用了新的CMOS技術,極大地縮小了大型機的系統體積,降低了能耗和散熱成本,提高了性能價格比。另一方面,分布式計算開始變得龐雜起來,許多公司的管理費用激增,而且由于數據分散,在數據的互訪和集中管理方面,安全和準確性都不夠高,許多企業開始轉向使用大型機。大型機在總體擁有成本上已經比分布計算廉價,制造業、保險、航空、運輸及大型零售企業的大量事務處理對大型機的要求越來越高,這是大型機重新被人們認可的原因之一。
2分布式與大型機
分布式計算在短期內給企業帶來了高效,但隨著時間的延續,企業系統擴大,數據分散存放在上百臺服務器上,數據的查詢成為問題,數據的互訪和對大量數據的開采利用變得困難起來,一個新的趨勢——再集中開始出現。如何將分布處理和集中計算結合起來,成為許多企業考慮的問題。大型機的系統完整性和大存儲量的優勢顯示出來,開始承擔用戶再集中需求的任務。
在總體擁有成本上,隨著時間的推移,小型機系統漸漸顯現出極高的使用成本?;蛟S人們在使用一年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
提交評論