999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

支持跨系統(tǒng)的軟件運行平臺設(shè)計

2018-11-22 00:47:12鄒云峰張昕李撈扒
微型電腦應(yīng)用 2018年11期
關(guān)鍵詞:進程環(huán)境系統(tǒng)

鄒云峰, 張昕, 李撈扒

(1.國網(wǎng)江蘇省電力公司 電力科學(xué)研究院,南京 210019;2.河海大學(xué) 計算機與信息學(xué)院,南京 211100)

0 引言

軟件運行平臺是一組軟件基礎(chǔ)設(shè)施,屬于系統(tǒng)軟件的范疇[],為應(yīng)用軟件的運行提供各種必要的支撐。從系統(tǒng)角度來看,軟件運行平臺負(fù)責(zé)管理和協(xié)調(diào)底層軟硬件資源,有效地橋接各種異構(gòu)環(huán)境下的資源調(diào)用,增加互操作性,從而充分發(fā)揮軟硬件資源的計算能力[2]。從應(yīng)用角度來說,軟件運行平臺抽象了操作系統(tǒng)底層的細節(jié),封裝了系統(tǒng)現(xiàn)有的應(yīng)用接口函數(shù),為用戶提供了上層應(yīng)用的軟件編程模式與簡單易用的人機交互界面。隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,軟件平臺需要連接并管理網(wǎng)絡(luò)上功能結(jié)構(gòu)各異、數(shù)量眾多的軟硬件資源,因此,具有協(xié)調(diào)和整合能力的中間件逐漸演變成為網(wǎng)絡(luò)環(huán)境中典型的軟件運行平臺[3]。

然而,作為軟件平臺的中間件存在諸多局限,如它們的運行環(huán)境相對封閉、靜態(tài)與固定,而互聯(lián)網(wǎng)環(huán)境則為開放、動態(tài)且多變[3],這就對軟件運行平臺提出了更高的要求。

在實際應(yīng)用中,軟件運行平臺也面臨這樣的挑戰(zhàn)。在一些互聯(lián)網(wǎng)產(chǎn)品的IT型企業(yè)中,隨著業(yè)務(wù)需求的不斷拓展,越來越多的與新業(yè)務(wù)對應(yīng)的功能需要整合到現(xiàn)有的軟件系統(tǒng)架構(gòu)之中。企業(yè)為了節(jié)約運營成本,必須考慮如何將原有系統(tǒng)與新系統(tǒng)協(xié)同作業(yè),因此基于中間件構(gòu)建的應(yīng)用系統(tǒng)如何實現(xiàn)跨異構(gòu)平臺的互操作成為了平臺技術(shù)研究的重點和難點。目前軟件平臺類型多樣,但沒有統(tǒng)一的通信協(xié)議,為實現(xiàn)跨平臺的互操作,需要解決不同平臺間的進程通信問題,這是軟件平臺開發(fā)中所涉及的關(guān)鍵問題之一。

針對這一問題,本文設(shè)計了一種具有高效可靠進程間通信機制和可移植性的軟件運行平臺。其本質(zhì)是作為消息中間件,用來建立連接、接收和轉(zhuǎn)發(fā)消息等,屏蔽了不同操作系統(tǒng)的細節(jié)差異,為平臺所支撐的上層服務(wù)端應(yīng)用提供可靠的運行環(huán)境,從而大大減輕了上層應(yīng)用的開發(fā)復(fù)雜度,有效縮短了開發(fā)流程,提高工作效率。本文主要從3個方面介紹跨系統(tǒng)軟件運行平臺的實現(xiàn)技術(shù)。首先,建立高效可靠的進程間通信機制;其次,封裝系統(tǒng)API函數(shù),提供部分通用的服務(wù)和管理程序;最后,編寫自動化編譯部署腳本,實現(xiàn)平臺源代碼的定制化編譯,并部署到操作系統(tǒng)環(huán)境中。

1 平臺框架設(shè)計

平臺分成四個模塊,分別是功能區(qū)、通信機制、被封裝的API庫、定制化編譯部署。功能區(qū)以API庫和通信機制為基礎(chǔ),配置文件提供配置參數(shù)和全局變量,初始化進程、監(jiān)控進程、通信進程、交互進程和通用服務(wù)實現(xiàn)系統(tǒng)初始化、進程監(jiān)控、消息接收和轉(zhuǎn)發(fā)及定時器等功能;通信機制模塊實現(xiàn)進程通信功能;被封裝的API庫提供統(tǒng)一的上層接口;定制化編譯部署用于在不同操作系統(tǒng)上部署本平臺。平臺框架,如圖1所示。

圖1 平臺框架圖

2 進程間通信方法

2.1 跨平臺技術(shù)

跨平臺是軟件開發(fā)領(lǐng)域一個重要的概念,指應(yīng)用軟件不必依賴于某些特定的操作系統(tǒng)或編譯器,也不依賴于特定的硬件環(huán)境。它泛指程序語言、軟件或硬件設(shè)備可以在多種作業(yè)系統(tǒng)或不同硬件架構(gòu)的計算機上運作[4]。它能夠快速地移植到各種操作系統(tǒng)平臺上,在功能上類似于自適配通信環(huán)境(ACE)框架[5-7]的OS適配層。

2.2 IPC機制及選擇

IPC(Inter-Process Communication,進程間通信)是應(yīng)用程序中經(jīng)常涉及的重要問題,進程間的數(shù)據(jù)交互對于應(yīng)用軟件來說至關(guān)重要。不同的操作系統(tǒng)平臺IPC機制是有區(qū)別的,類UNIX系統(tǒng)(包括Linux)的IPC主要包括管道、信號、消息隊列、共享內(nèi)存、信號量;Windows系統(tǒng)的IPC主要包括文件映射、共享內(nèi)存、匿名管道、命名管道、郵件槽、剪貼板、動態(tài)數(shù)據(jù)交換(DDE)、套接字Socket[8]。

進程通信主要包括3個方面:進程內(nèi)線程通信;同主機進程間線程通信;不同主機進程間線程通信。通過對不同操作系統(tǒng)IPC機制的分析,本文選擇使用以消息隊列、共享內(nèi)存和Socket為組合的IPC機制。

消息隊列機制是在內(nèi)核中開辟的用于保存消息的鏈表,并作為一種競爭的共享資源,被有通信需求的多進程公用。消息來源為發(fā)送方的進程,隊列中已有的消息將由指定進程接收[9]。Windows系統(tǒng)可以運用消息緩沖通信來達到消息隊列的功能。

共享內(nèi)存機制允許兩個或多個進程共用指定的存儲區(qū),這一段存儲區(qū)可以被兩個或多個進程映射至自身的地址空間中[10],數(shù)據(jù)不需要在進程間復(fù)制,所以這是最快的一種IPC方式,它適用于通信數(shù)據(jù)量較大的場合。

Socket與一般IPC方式有所不同,它專門用于位于不同主機上的進程間網(wǎng)絡(luò)通信。網(wǎng)絡(luò)上的不同程序進行數(shù)據(jù)交換,一般通過一個雙向的通信連接實現(xiàn),這個雙向鏈路的一端就是一個Socket[11]。Socket的跨平臺性比其它IPC機制好得多,不但Linux和類UNIX系統(tǒng)可以使用,Windows系統(tǒng)同樣可以使用,同時Socket連接是網(wǎng)絡(luò)環(huán)境下進程間通信必不可少的方式[12-14]。

3 系統(tǒng)API封裝與功能區(qū)設(shè)計方法

3.1 系統(tǒng)API封裝方法

系統(tǒng)應(yīng)用程序編程接口API(Application Programming Interface)是由操作系統(tǒng)提供的函數(shù),供應(yīng)用程序訪問特定資源。API的封裝方法是在代碼的編寫過程中,使用條件編譯[15]。通常情況下,源程序所有行都會被編譯,為了實現(xiàn)跨平臺,本文使用#ifdef、#ifndef和#pragma等條件編譯指令以操作系統(tǒng)類型作為條件進行編譯。通過使用條件編譯將不同系統(tǒng)上功能相似的系統(tǒng)API函數(shù)統(tǒng)一起來,生成相同的開發(fā)接口,從而實現(xiàn)API封裝。

3.2 功能區(qū)設(shè)計方法

功能區(qū)以封裝的系統(tǒng)API和通信機制為基礎(chǔ),包括配置文件、初始化進程、監(jiān)控進程、通信進程、交互進程和通用服務(wù)。

配置文件是一組.ini文件,用來保存平臺相關(guān)設(shè)置,平臺可以依據(jù)此文件加載系統(tǒng)所需要的環(huán)境設(shè)置和文件集合,從而方便程序的移植。

初始化進程用于讀取配置并初始化環(huán)境,實現(xiàn)上層應(yīng)用的啟動和統(tǒng)計,其流程圖,如下圖2所示。

圖2 初始化進程流程圖

監(jiān)控進程通過兩種方法檢查上層應(yīng)用的工作狀態(tài):目標(biāo)應(yīng)用是否異常結(jié)束;向目標(biāo)應(yīng)用發(fā)送測試消息,若不能及時收到響應(yīng),則認(rèn)為目標(biāo)應(yīng)用出現(xiàn)異常。若檢測到目標(biāo)應(yīng)用出現(xiàn)異常則重啟之。

通信進程通過創(chuàng)建子線程實現(xiàn)建立外部連接、接收外部消息、外部消息對內(nèi)分發(fā)、內(nèi)部消息對外分發(fā)功能,包括消息接收子線程和消息發(fā)送子線程。

交互進程實現(xiàn)平臺與上層應(yīng)用開發(fā)人員的交互功能,包括進程跟蹤、調(diào)試等功能,用于方便開發(fā)人員開發(fā)和調(diào)試程序。

通用服務(wù)主要包括定時器、消息發(fā)送與接收及進程信息獲取等功能。

4 定制化編譯部署方法

編譯之前,需要配置操作系統(tǒng)的環(huán)境變量等參數(shù),為了簡化環(huán)境變量的配置過程,本文創(chuàng)建了shell腳本——setenv.sh文件,用來配置編譯環(huán)境,為makefile自動化編譯提供所需的參數(shù)或變量,主要步驟如下:

a) 清理工作目錄

b) 設(shè)置全局環(huán)境變量

c) 判斷系統(tǒng)類型

d) 根據(jù)系統(tǒng)類型設(shè)置不同的參數(shù)

配置環(huán)境變量后,利用make工具將大型的開發(fā)項目分解成多個更加容易管理的模塊,對于包含眾多源文件的應(yīng)用程序,使用makefile可以簡明地理順各文件之間錯綜復(fù)雜的依賴關(guān)系,同時它還可以簡化編譯過程,實現(xiàn)自動化編譯。開發(fā)程序通常按照不同的模塊,分別存放在不同的目錄中,這樣需要編寫多個makefile文件。本軟件平臺對多級目錄使用makefile時,在總目錄和每個子目錄下均創(chuàng)建makefile,然后由主目錄makefile調(diào)用子makefile,編譯順序是由主目錄makefile決定的,這樣就使編譯過程變得清晰直觀。

5 安裝測試

不同操作系統(tǒng)的安裝流程略有區(qū)別,但總體步驟是一樣的:

a) 將源代碼復(fù)制到環(huán)境的工作目錄下

b) 進入程序主目錄

c) 對shell腳本賦予執(zhí)行權(quán)限

d) 執(zhí)行setenv腳本,設(shè)置環(huán)境變量

e) 清空前一次編譯生成的文件

f) 編譯并安裝部署

5.1 Linux系統(tǒng)環(huán)境安裝測試

系統(tǒng)類型:LINUX REDHAT,版本信息:Linux version 2.6.18,編譯器版本:gcc 4.1.2 20080704 (Red Hat 4.1.2-48),Make版本:make 3.79。

將源碼拷貝至PROJECT_DIR目錄下,進入程序主目錄,順序執(zhí)行以下命令:

chmodu+x*.sh #對shell腳本賦予執(zhí)行權(quán)限

./setenv_64.sh #設(shè)置環(huán)境變量

make Clean

make Install #編譯安裝

安裝完成后,在$PROJECT_DIR/bin生成可執(zhí)行程序和腳本,如圖3所示。

在PROJECT_DIR/lib生成庫文件,如圖4所示。

5.2 HP-UX系統(tǒng)環(huán)境安裝測試

系統(tǒng)類型:HP-UX,版本信息:HP-UX 11.31,Patch版本為高于或等于0803,編譯器:aCC 3.5以上,Make版本:make 3.79。

圖3 Linux系統(tǒng)環(huán)境下生成的可執(zhí)行程序和腳本

圖4 Linux系統(tǒng)環(huán)境下生成的庫文件

將源碼拷貝至$PROJECT_DIR目錄下,進入程序主目錄,順序執(zhí)行以下命令:

chmodu+x*.sh #對shell腳本賦予執(zhí)行權(quán)限

./setenv_64.sh #設(shè)置環(huán)境變量

make Clean

make Install #編譯安裝

安裝完成后,在$PROJECT_DIR/bin生成可執(zhí)行程序和腳本,如圖5所示。

圖5 HP-UX系統(tǒng)環(huán)境下生成的可執(zhí)行程序和腳本

在$PROJECT_DIR/lib生成庫文件,如圖6所示。

圖6 HP-UX系統(tǒng)環(huán)境下生成的庫文件

6 總結(jié)

本文的主要工作是給出了一個基于跨系統(tǒng)進程間通信的軟件運行平臺設(shè)計方案。它基于跨系統(tǒng)技術(shù)實現(xiàn),利用通用的3種通信機制——消息隊列、共享內(nèi)存和Socket的組合實現(xiàn)消息傳遞,通過封裝系統(tǒng)API,屏蔽了異構(gòu)操作系統(tǒng)的細節(jié)差異,提供統(tǒng)一的訪問接口和部分通用的服務(wù)與管理程序,通過定制化編譯部署方法使之能夠適應(yīng)不同的操作系統(tǒng),為其支撐的上層應(yīng)用提供良好的運行環(huán)境。

猜你喜歡
進程環(huán)境系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
長期鍛煉創(chuàng)造體內(nèi)抑癌環(huán)境
一種用于自主學(xué)習(xí)的虛擬仿真環(huán)境
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
孕期遠離容易致畸的環(huán)境
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
環(huán)境
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
社會進程中的新聞學(xué)探尋
主站蜘蛛池模板: 亚洲视频免| 中文成人在线| 亚洲综合精品香蕉久久网| 欧美日韩专区| 国产激情第一页| 免费一级毛片在线播放傲雪网| 亚洲视频一区| 国产高清在线精品一区二区三区| 福利在线不卡一区| 综合网久久| 国产精品自拍合集| 又黄又爽视频好爽视频| 青青热久免费精品视频6| 日本午夜精品一本在线观看| 国产精品视频免费网站| 日韩高清一区 | 伊人成人在线| 亚洲日产2021三区在线| 国产天天色| 国产精品久久久久鬼色| 欧美在线精品一区二区三区| 成人av手机在线观看| 日韩性网站| 国产男人的天堂| 国产在线日本| 一本大道香蕉久中文在线播放| 欧美啪啪一区| 国产欧美另类| 亚洲美女视频一区| 婷婷成人综合| 五月激情综合网| 亚洲AV无码久久精品色欲| 狠狠做深爱婷婷久久一区| 秋霞一区二区三区| 日韩福利在线观看| www.狠狠| 国产成人福利在线视老湿机| 日韩毛片免费视频| 91av成人日本不卡三区| 无码高潮喷水专区久久| 丁香婷婷久久| 欧美国产在线看| 又黄又湿又爽的视频| 中文字幕自拍偷拍| 青青久久91| 久久久精品久久久久三级| 亚洲AV免费一区二区三区| 国产精品亚洲综合久久小说| 久久亚洲精少妇毛片午夜无码| 久久人人妻人人爽人人卡片av| 色悠久久久久久久综合网伊人| 午夜视频在线观看区二区| 狠狠色综合久久狠狠色综合| 久久国产黑丝袜视频| 亚洲欧美一区二区三区图片| 亚洲精品无码av中文字幕| 国产丝袜无码一区二区视频| 啊嗯不日本网站| 手机成人午夜在线视频| 日本免费一区视频| 国产久草视频| 久久毛片免费基地| 国产日韩丝袜一二三区| 91精品小视频| 亚洲欧美极品| 视频一区亚洲| 亚洲欧美不卡| 色偷偷综合网| 免费一级毛片在线观看| 国产黄视频网站| 青青青视频91在线 | 一级毛片a女人刺激视频免费| 国产精品99一区不卡| 伊人激情综合| 久久精品国产精品国产一区| 91国内在线视频| 日本午夜视频在线观看| 伊人成人在线| 欧美一级高清视频在线播放| 中文字幕乱码中文乱码51精品| 喷潮白浆直流在线播放| 青青热久麻豆精品视频在线观看|