文潔++張正中



摘 要: 為了提高大型服務器的并行處理能力,進行軟件嵌入式開發優化設計,提出一種基于分散控制和多線程并行調度的大型服務器軟件開發技術。對服務器軟件系統的網絡管理模塊、文件信息存儲模塊、總線控制模塊和內核接口模塊等子系統進行設計描述,在Linux/Windows CE開發平臺下進行服務器的嵌入式設計,實現服務器信息處理的分散控制和多線程并行調度,提高服務器的運行效率。實驗結果表明,該軟件系統能提高服務器的并行處理效率,性能優于傳統方法。
關鍵詞: 大型服務器; 軟件開發; 嵌入式設計; 多線程并行調度
中圖分類號: TN911?34; TP311 文獻標識碼: A 文章編號: 1004?373X(2017)18?0062?04
Embedded development and improved design of software for large?scale server
WEN Jie1, ZHANG Zhengzhong2,3
(1. WuHan Business University Department of Information Engineering, Wuhan 430000, China;
2. Suzhou Institute of Industrial Technology, Suzhou 215104, China;
3. Nano Science and Technology Institute, University of Science and Technology of China, Suzhou 215123, China)
Abstract: In order to improve the parallel processing ability of large?scale servers, the embedded development optimization design of software is carried out, and a large?scale server software development technology based on distributed control and multithreading parallel scheduling is proposed. The network file management module, information storage module, bus control module and kernel interface module of the server software system is designed and described. The embedded design of the server was conducted on the Linux/WindowsCE platform to realize the decentralized control and multithreading parallel scheduling for the information processing of the server, improve the operating efficiency of the server. The experimental results show that the software system can improve the parallel processing efficiency of the server, and its performance is better than the traditional method.
Keywords: large?scale server; software development; embedded design; multithreading parallel scheduling
0 引 言
服務器是提供計算服務的設備,服務器的構成包括處理器、硬盤、內存、系統總線等。隨著計算機信息處理規模的擴大,對服務器計算和處理的效率和能力提出了更高的要求,大型服務器在滿足大數據信息計算中發揮了重要的價值。大型服務器采用Unix和其他專用操作系統,進行文件管理、數據庫服務和程序管理以及網絡服務等[1]。當前的大型服務器主要有IBM公司的POWER和PowerPC處理器,該類服務器采用的是通用的計算機架構,在系統的處理器、硬盤、內存、系統總線等配置上不能有效滿足高效率并行處理的計算要求,需要進行服務器開發改進設計。對此本文采用嵌入式設計技術,提出一種基于分散控制和多線程并行調度的大型服務器軟件開發技術,實現服務器的嵌入式開發設計,取得較好的應用性能。
1 系統開發總體構架
為了實現對大型服務器的軟件系統設計和嵌入式開發,首先分析大型服務器的軟件系統的總體結構模型,采用CAN_IMASK并行總線處理技術進行服務器的并行調度處理,服務器開發主要有數據庫開發、并行計算程序開發和Web接口開發等。大型服務器需要完成數據庫存儲、文件管理和網絡管理等功能,在嵌入式系統中配置常用服務器,采用IEEE 488.2標準下的Bus采集機制進行PowerPC處理器的遠程控制[2]。大型服務器的DNS解析模式采用的是集中式的域名解析方式。服務器的知識點本體匹配采用節點匹配、邊匹配和結構匹配三種匹配方式進行學習資源本體的進程管理、內存管理和文件系統管理。根據3層循環嵌套的子圖模式進行數據存儲管理,大型服務器的嵌入式設計模塊主要有程序加載模塊、數據存儲模塊、交叉編譯模塊、網絡通信模塊。為了提高服務器的計算能力、用戶的響應速度以及數據存儲能力和信息交互能力,在客戶/服務器計算(Client/Server Computing,C/S計算)或者瀏覽器/服務器計算(Brower/Server Computing,B/S計算)架構模式下進行云計算/云存儲的服務器設計,在“瘦客戶機、胖服務器”策略下進行服務器的嵌入式開發[3],得到本文設計的大型服務器軟件開發的區域資源配置的關系模型如圖1所示。endprint
圖1 大型服務器的關系模型
根據圖1所示的大型服務器的模塊化關系模型,可知大型服務器在進行資源配置和服務器域名解析中,通過多線程的任務調度和網絡拓撲,在泛知識云模型下構建信息發布模塊(Information Advertising Module),服務器的上層網絡是高速以太網,設備驅動采用雙網絡的輸入/輸出系統,下層網絡采用IEEE 488.2標準下的雙網絡結構。網關/服務器平臺采用嵌入式 ARM?Linux 平臺,微處理器 STC12C5A60S通過載波匯聚節點進行連接建立并實現數據傳輸,若采控節點響應,匯聚節點(主節點)通過引導程序(Bootloader)與嵌入式STM32宿機連接,采用串行接口方式配置4路組聯合Cache,在X86?Win 平臺上將服務器工作任務發送至ARM?Linux平臺[4],進行服務器的并行處理調度,在PLC匯聚節點中采用特定的 UUID 進行數據服務配置,根據上述設計原理分析,得到本文構建的大型服務器的軟件系統的總體構架如圖2所示。
圖2 大型服務器的軟件系統的總體構架
2 網關/服務器設計
在Linux/Windows CE開發平臺下進行服務器的嵌入式設計,需要對服務器的網絡進行嵌入式設計。網關采用的是SOS操作系統,包括一個通用內核和若干個可動態裝載模塊,SOS的消息隊列使用優先級順序進行多線程控制,內核通過一個加載模塊進行子系統動態管理,消息處理函數由 init handler,final handler等組成。為了降低編程復雜性,網關/服務器用三星 S5PV210 處理器作為控制系統的集成處理器。從采控節點搜集數據后通過 Internet 或以太網進行優先級調度,依次獲得消息隊列的消息并進行管理用戶任務,移植 Linux 3.0.8 操作系統提供一個簡單、統一的系統調用接口。在網關的節點設計中,采用基于層次關系的節點定位分布模型進行路由節點設計,構建大型服務器的嵌入式網關模型,使得網絡進程能夠有效地通過網絡節點連接到另一個網絡的“關口”。主機和交換集線器采用X2.5,IEEE 802.11a,802.11b,802.11g的協議網關[5]。首先隨機選擇一個
網絡節點的本體,采用本體RDF圖表示方法得到網絡堆棧協議,基于錨點匹配進行子圖抽取,基于金屬同構子圖本體匹配方法得到網絡之間的協議轉換模式。根據上述的嵌入式大型服務器的網關/服務器節點匹配設計步驟,進行服務器的網關硬件平臺設計,如圖3所示。在以太網設備驅動下,采用DM9000AEP 以太網控制提供10 Mb/s,100 Mb/s的網絡連接,網關使用 S3C2440作為系統控制核心,硬件平臺在BLE中嵌入OSAL采控節點,Abstraction Layer 操作系統抽象層通過外設驅動發送帶符號數給網關/服務器,網關采用以ARM920T為核心的32位的RISC微處理器接收路由節點數據,并在JTAG接口調試程序下在線完成程序修改和多線程的并行數據調度和信息處理。通過JTAG接口訪問服務器CPU的內部寄存器,在ADI的HPPCI仿真器中進行UART、定時器、GPIO等模塊設計,通過 Internet 或以太網查詢實時內核,使用Download & Run 功能將其轉換成統一的格式,最后通過網絡啟動整個系統,進行大型服務器的軟件系統嵌入式開發。
圖3 服務器的網關硬件平臺
3 大型服務器的軟件嵌入式開發模塊化設計
根據對大型服務器的總體設計規劃和網關設計描述,進行服務器的嵌入式開發。通過模塊化開發設計,在Supervivi菜單模式下,構建32 位的SDRAM存儲器系統。服務器軟件系統主要包括網絡管理模塊、文件信息存儲模塊、總線控制模塊和內核接口模塊等子系統,對各個模塊分別進行設計,描述如下。
3.1 網絡管理模塊
大型服務器的網絡管理模塊是整個嵌入式服務器和網關控制的核心。服務器的嵌入式軟件設計實現串口數據和網絡數據的轉發,采用模塊化的設計方案,構建TCP服務進程和數據分發緩存進程。在Linux內置的TCP/IP協議棧下對服務器的處理進程數據進行協議轉換和數據收發[6],構建RS 485網絡進行源節點的數據轉發和進程調度。網絡管理模塊連接網絡的API接口,在TCP服務進程指引下使用戶人員通過Internet來對客戶端進行連接,由此構建網絡管理模塊的軟件開發流程如圖4所示。
圖4 網絡管理模塊的程序開發流程
3.2 文件信息存儲模塊
文件信息存儲模塊采用的是erialcomm.cpp串口通信進行信息存儲和內存空間配置,采用控制函數virgrg igrt readFgfr(ifrgt fd, chgtrr *bughger, gr cogrt, ingt *erg4r) 讀取一定長度的數據,執行大型服務器的嵌入式讀寫和I/O端口的調度命令,向指定的設備寫入串口相關的存儲信息。在文件信息存儲和讀取中,用兩個線程來進行讀寫:readerThread和writerThread,運行代碼為:
bool readPagrgket(SFvrhgrket &pfrgket);
bool wfvrgackgrgr(SFPafrght &pPahgtket);
大型服務器的軟件系統的輸入/輸出系統由三個線程構成:serverThfred,reagrerThregrd和writgrThrehgr[7]。當緩存數據從串口到達數據包,文件信息存儲模塊進行時鐘頻率初始化、存儲器初始化。通過DMA中斷控制程序判斷服務器的上電加載程序是否寫入,對緩沖區的查詢中斷標志位進行峰值判斷,進行控制程序的收發轉換和A/D加載。隨著緩沖區寫入數據的擴大,數據指針指向緩沖區0,如果不能滿足緩沖區中數據存儲池的規模要求,進行CAN初始化、PPI初始化,繼續判斷A/D采樣是否完成。在執行了時鐘初始化和存儲器初始化程序的如下關鍵函數后:
SFPacket deqhytue();
bool enqjyejukrohyt(Sjkuket &pPajulket);
bool enqujykick(SFPafrket &pPagret);
從文件信息存儲系統隊列的首部取出數據包,確認是否從大型服務器的客戶端傳過來的命令,等服務器空閑時,進行TCP服務進程的調整,提高大型服務器的并行調度能力。根據上述設計,得到文件信息存儲模塊的程序處理流程如圖5所示。
圖5 大型服務器文件信息存儲模塊的程序處理流程
3.3 總線控制模塊及接口模塊設計
大型服務器設計采用的是32通道的嵌入式現場總線控制技術。首先將大型服務器文件管理和數據庫調度總線數據首址賦給地址指針,進入循環體,總循環32次,采集的MVB總線控制的寄存數據,引導加載程序Sfcontrol.cpp在線燒寫客戶端傳過來命令或配置參數。基于分散控制和多線程并行調度方法與客戶端進行連接[8],接收從客戶端過來的控制命令或配置參數,使用多線程技術讀寫進程與客戶端之間進行的數據流,并加載到數據包緩存中,建立MineComm.cp函數RS 485網絡進行通信。在總線控制模塊設計中,使用如下接口程序進行系統配置,并通過局部總線發送FLASH設備上的文件系統內核:
interface Thgrer
interface Rgf4ytad
//Rhgrthyuk voltjjykige 上電加載
interface ReahtjStrejuk
//Read prhtyjre sensfrhg data,DIP封裝
interface Lehyt; //Indhytion
在程序加載的基礎上,設定嵌入式大型服務器的控制系統的VXI總線數據采樣通道8通道,驅動程序的D/A轉換速率設定為200 kHz,初始化靜態變量(Static Variables)由HP E1562E提供一對SCSI總線,實現總線控制設計[9]。最后進行大型服務器的接口設計,接口設計在嵌入式ARM環境下配置qt?embedded?arm,并進行接口程序的編譯和安裝,得到服務器接口數據部分和數據結構的構成見表1。
4 服務器調試測試分析
通過上述分析,實現了在Linux/Windows CE開發平臺下進行服務器的嵌入式設計,最后為了測試服務器的運行性能,對設計的大型服務器軟件系統進行信息處理的分散控制和多線程并行調度性能分析。首先調用 addLinkEstHeade執行程序加載和數據寫入,在總線控制模塊中測試服務器的并行運行效率,分析服務器的處理時間與數據規模大小的關系,并與傳統的服務器進行對比,得到測試結果如圖6所示。分析圖6結果得知,采用本文設計的大型服務器進行數據計算,運行時間開銷較短,處理效率得到大幅提升。
5 結 語
本文進行了大型服務器的軟件嵌入式開發優化設計,提出一種基于分散控制和多線程并行調度的大型服務器軟件開發技術。進行系統總體構架分析,設計網關/服務器,采用S5PV210 處理器作為網關控制芯片,在網絡管理設計中,構建TCP服務進程和數據分發緩存進程,在Linux/Windows CE開發平臺下進行服務器的嵌入式總線控制設計,采用32通道的嵌入式現場總線控制技術,實現服務器信息處理的分散控制和多線程并行調度。本文設計的服務器軟件系統的并行處理效率較高,計算開銷較小。
參考文獻
[1] 蔣欣,程博,張偉棟,等.基于FC總線協議和FTP協議的通用化FPGA配置方法[J].現代電子技術,2015,38(11):57?60.
[2] 張璐,呂昂.一種雙網絡智能家居嵌入式網關/服務器[J].物聯網技術,2015,5(7):72?75.
[3] SUN L, GUO C H. Incremental affinity propagation clustering based on message passing [J]. IEEE transactions on knowledge and data engineering, 2014, 26(11): 2731?2744.
[4] EI?SAYED A M A, ELSAID A, NOUR H M, et al. Dynamical behavior, chaos control and synchronization [J]. Communication in nonlinear science and numerical simulation, 2013, 18(1): 148?170.
[5] 陸興華,吳恩燊,黃冠華.基于Android的智能家居控制系統軟件設計研究[J].物聯網技術,2015,5(11):14?16.
[6] 王靈芝,葉美霞,張建造.基于 ZigBee及BOA 服務器的嵌入式智能家居的設計[J].閩南師范大學學報(自然科學版),2014,12(3):69?73.
[7] MAHBOUBI H, MOEZZI K, AGHDAM A G, et al. Distributed deployment algorithms for improved coverage in a network of wireless mobile sensors [J]. IEEE transactions on industrial informatics, 2014, 10(1): 163?174.
[8] MAHBOUBI H. Distributed deployment algorithms for efficient coverage in a network of mobile sensors with nonidentical sensing capabilities [J]. IEEE transactions on vehicular technology, 2014, 63(8): 3998?4016.
[9] 劉國柱.Virtools嵌入式服務器與虛擬現實協同設計平臺[J].科技通報,2012,28(2):13?16.