文潔++張正中
摘 要: 為了提高大型服務(wù)器的并行處理能力,進(jìn)行軟件嵌入式開發(fā)優(yōu)化設(shè)計,提出一種基于分散控制和多線程并行調(diào)度的大型服務(wù)器軟件開發(fā)技術(shù)。對服務(wù)器軟件系統(tǒng)的網(wǎng)絡(luò)管理模塊、文件信息存儲模塊、總線控制模塊和內(nèi)核接口模塊等子系統(tǒng)進(jìn)行設(shè)計描述,在Linux/Windows CE開發(fā)平臺下進(jìn)行服務(wù)器的嵌入式設(shè)計,實現(xiàn)服務(wù)器信息處理的分散控制和多線程并行調(diào)度,提高服務(wù)器的運行效率。實驗結(jié)果表明,該軟件系統(tǒng)能提高服務(wù)器的并行處理效率,性能優(yōu)于傳統(tǒng)方法。
關(guān)鍵詞: 大型服務(wù)器; 軟件開發(fā); 嵌入式設(shè)計; 多線程并行調(diào)度
中圖分類號: TN911?34; TP311 文獻(xiàn)標(biāo)識碼: 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 引 言
服務(wù)器是提供計算服務(wù)的設(shè)備,服務(wù)器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線等。隨著計算機(jī)信息處理規(guī)模的擴(kuò)大,對服務(wù)器計算和處理的效率和能力提出了更高的要求,大型服務(wù)器在滿足大數(shù)據(jù)信息計算中發(fā)揮了重要的價值。大型服務(wù)器采用Unix和其他專用操作系統(tǒng),進(jìn)行文件管理、數(shù)據(jù)庫服務(wù)和程序管理以及網(wǎng)絡(luò)服務(wù)等[1]。當(dāng)前的大型服務(wù)器主要有IBM公司的POWER和PowerPC處理器,該類服務(wù)器采用的是通用的計算機(jī)架構(gòu),在系統(tǒng)的處理器、硬盤、內(nèi)存、系統(tǒng)總線等配置上不能有效滿足高效率并行處理的計算要求,需要進(jìn)行服務(wù)器開發(fā)改進(jìn)設(shè)計。對此本文采用嵌入式設(shè)計技術(shù),提出一種基于分散控制和多線程并行調(diào)度的大型服務(wù)器軟件開發(fā)技術(shù),實現(xiàn)服務(wù)器的嵌入式開發(fā)設(shè)計,取得較好的應(yīng)用性能。
1 系統(tǒng)開發(fā)總體構(gòu)架
為了實現(xiàn)對大型服務(wù)器的軟件系統(tǒng)設(shè)計和嵌入式開發(fā),首先分析大型服務(wù)器的軟件系統(tǒng)的總體結(jié)構(gòu)模型,采用CAN_IMASK并行總線處理技術(shù)進(jìn)行服務(wù)器的并行調(diào)度處理,服務(wù)器開發(fā)主要有數(shù)據(jù)庫開發(fā)、并行計算程序開發(fā)和Web接口開發(fā)等。大型服務(wù)器需要完成數(shù)據(jù)庫存儲、文件管理和網(wǎng)絡(luò)管理等功能,在嵌入式系統(tǒng)中配置常用服務(wù)器,采用IEEE 488.2標(biāo)準(zhǔn)下的Bus采集機(jī)制進(jìn)行PowerPC處理器的遠(yuǎn)程控制[2]。大型服務(wù)器的DNS解析模式采用的是集中式的域名解析方式。服務(wù)器的知識點本體匹配采用節(jié)點匹配、邊匹配和結(jié)構(gòu)匹配三種匹配方式進(jìn)行學(xué)習(xí)資源本體的進(jìn)程管理、內(nèi)存管理和文件系統(tǒng)管理。根據(jù)3層循環(huán)嵌套的子圖模式進(jìn)行數(shù)據(jù)存儲管理,大型服務(wù)器的嵌入式設(shè)計模塊主要有程序加載模塊、數(shù)據(jù)存儲模塊、交叉編譯模塊、網(wǎng)絡(luò)通信模塊。為了提高服務(wù)器的計算能力、用戶的響應(yīng)速度以及數(shù)據(jù)存儲能力和信息交互能力,在客戶/服務(wù)器計算(Client/Server Computing,C/S計算)或者瀏覽器/服務(wù)器計算(Brower/Server Computing,B/S計算)架構(gòu)模式下進(jìn)行云計算/云存儲的服務(wù)器設(shè)計,在“瘦客戶機(jī)、胖服務(wù)器”策略下進(jìn)行服務(wù)器的嵌入式開發(fā)[3],得到本文設(shè)計的大型服務(wù)器軟件開發(fā)的區(qū)域資源配置的關(guān)系模型如圖1所示。endprint
圖1 大型服務(wù)器的關(guān)系模型
根據(jù)圖1所示的大型服務(wù)器的模塊化關(guān)系模型,可知大型服務(wù)器在進(jìn)行資源配置和服務(wù)器域名解析中,通過多線程的任務(wù)調(diào)度和網(wǎng)絡(luò)拓?fù)?,在泛知識云模型下構(gòu)建信息發(fā)布模塊(Information Advertising Module),服務(wù)器的上層網(wǎng)絡(luò)是高速以太網(wǎng),設(shè)備驅(qū)動采用雙網(wǎng)絡(luò)的輸入/輸出系統(tǒng),下層網(wǎng)絡(luò)采用IEEE 488.2標(biāo)準(zhǔn)下的雙網(wǎng)絡(luò)結(jié)構(gòu)。網(wǎng)關(guān)/服務(wù)器平臺采用嵌入式 ARM?Linux 平臺,微處理器 STC12C5A60S通過載波匯聚節(jié)點進(jìn)行連接建立并實現(xiàn)數(shù)據(jù)傳輸,若采控節(jié)點響應(yīng),匯聚節(jié)點(主節(jié)點)通過引導(dǎo)程序(Bootloader)與嵌入式STM32宿機(jī)連接,采用串行接口方式配置4路組聯(lián)合Cache,在X86?Win 平臺上將服務(wù)器工作任務(wù)發(fā)送至ARM?Linux平臺[4],進(jìn)行服務(wù)器的并行處理調(diào)度,在PLC匯聚節(jié)點中采用特定的 UUID 進(jìn)行數(shù)據(jù)服務(wù)配置,根據(jù)上述設(shè)計原理分析,得到本文構(gòu)建的大型服務(wù)器的軟件系統(tǒng)的總體構(gòu)架如圖2所示。
圖2 大型服務(wù)器的軟件系統(tǒng)的總體構(gòu)架
2 網(wǎng)關(guān)/服務(wù)器設(shè)計
在Linux/Windows CE開發(fā)平臺下進(jìn)行服務(wù)器的嵌入式設(shè)計,需要對服務(wù)器的網(wǎng)絡(luò)進(jìn)行嵌入式設(shè)計。網(wǎng)關(guān)采用的是SOS操作系統(tǒng),包括一個通用內(nèi)核和若干個可動態(tài)裝載模塊,SOS的消息隊列使用優(yōu)先級順序進(jìn)行多線程控制,內(nèi)核通過一個加載模塊進(jìn)行子系統(tǒng)動態(tài)管理,消息處理函數(shù)由 init handler,final handler等組成。為了降低編程復(fù)雜性,網(wǎng)關(guān)/服務(wù)器用三星 S5PV210 處理器作為控制系統(tǒng)的集成處理器。從采控節(jié)點搜集數(shù)據(jù)后通過 Internet 或以太網(wǎng)進(jìn)行優(yōu)先級調(diào)度,依次獲得消息隊列的消息并進(jìn)行管理用戶任務(wù),移植 Linux 3.0.8 操作系統(tǒng)提供一個簡單、統(tǒng)一的系統(tǒng)調(diào)用接口。在網(wǎng)關(guān)的節(jié)點設(shè)計中,采用基于層次關(guān)系的節(jié)點定位分布模型進(jìn)行路由節(jié)點設(shè)計,構(gòu)建大型服務(wù)器的嵌入式網(wǎng)關(guān)模型,使得網(wǎng)絡(luò)進(jìn)程能夠有效地通過網(wǎng)絡(luò)節(jié)點連接到另一個網(wǎng)絡(luò)的“關(guān)口”。主機(jī)和交換集線器采用X2.5,IEEE 802.11a,802.11b,802.11g的協(xié)議網(wǎng)關(guān)[5]。首先隨機(jī)選擇一個
網(wǎng)絡(luò)節(jié)點的本體,采用本體RDF圖表示方法得到網(wǎng)絡(luò)堆棧協(xié)議,基于錨點匹配進(jìn)行子圖抽取,基于金屬同構(gòu)子圖本體匹配方法得到網(wǎng)絡(luò)之間的協(xié)議轉(zhuǎn)換模式。根據(jù)上述的嵌入式大型服務(wù)器的網(wǎng)關(guān)/服務(wù)器節(jié)點匹配設(shè)計步驟,進(jìn)行服務(wù)器的網(wǎng)關(guān)硬件平臺設(shè)計,如圖3所示。在以太網(wǎng)設(shè)備驅(qū)動下,采用DM9000AEP 以太網(wǎng)控制提供10 Mb/s,100 Mb/s的網(wǎng)絡(luò)連接,網(wǎng)關(guān)使用 S3C2440作為系統(tǒng)控制核心,硬件平臺在BLE中嵌入OSAL采控節(jié)點,Abstraction Layer 操作系統(tǒng)抽象層通過外設(shè)驅(qū)動發(fā)送帶符號數(shù)給網(wǎng)關(guān)/服務(wù)器,網(wǎng)關(guān)采用以ARM920T為核心的32位的RISC微處理器接收路由節(jié)點數(shù)據(jù),并在JTAG接口調(diào)試程序下在線完成程序修改和多線程的并行數(shù)據(jù)調(diào)度和信息處理。通過JTAG接口訪問服務(wù)器CPU的內(nèi)部寄存器,在ADI的HPPCI仿真器中進(jìn)行UART、定時器、GPIO等模塊設(shè)計,通過 Internet 或以太網(wǎng)查詢實時內(nèi)核,使用Download & Run 功能將其轉(zhuǎn)換成統(tǒng)一的格式,最后通過網(wǎng)絡(luò)啟動整個系統(tǒng),進(jìn)行大型服務(wù)器的軟件系統(tǒng)嵌入式開發(fā)。
圖3 服務(wù)器的網(wǎng)關(guān)硬件平臺
3 大型服務(wù)器的軟件嵌入式開發(fā)模塊化設(shè)計
根據(jù)對大型服務(wù)器的總體設(shè)計規(guī)劃和網(wǎng)關(guān)設(shè)計描述,進(jìn)行服務(wù)器的嵌入式開發(fā)。通過模塊化開發(fā)設(shè)計,在Supervivi菜單模式下,構(gòu)建32 位的SDRAM存儲器系統(tǒng)。服務(wù)器軟件系統(tǒng)主要包括網(wǎng)絡(luò)管理模塊、文件信息存儲模塊、總線控制模塊和內(nèi)核接口模塊等子系統(tǒng),對各個模塊分別進(jìn)行設(shè)計,描述如下。
3.1 網(wǎng)絡(luò)管理模塊
大型服務(wù)器的網(wǎng)絡(luò)管理模塊是整個嵌入式服務(wù)器和網(wǎng)關(guān)控制的核心。服務(wù)器的嵌入式軟件設(shè)計實現(xiàn)串口數(shù)據(jù)和網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)發(fā),采用模塊化的設(shè)計方案,構(gòu)建TCP服務(wù)進(jìn)程和數(shù)據(jù)分發(fā)緩存進(jìn)程。在Linux內(nèi)置的TCP/IP協(xié)議棧下對服務(wù)器的處理進(jìn)程數(shù)據(jù)進(jìn)行協(xié)議轉(zhuǎn)換和數(shù)據(jù)收發(fā)[6],構(gòu)建RS 485網(wǎng)絡(luò)進(jìn)行源節(jié)點的數(shù)據(jù)轉(zhuǎn)發(fā)和進(jìn)程調(diào)度。網(wǎng)絡(luò)管理模塊連接網(wǎng)絡(luò)的API接口,在TCP服務(wù)進(jìn)程指引下使用戶人員通過Internet來對客戶端進(jìn)行連接,由此構(gòu)建網(wǎng)絡(luò)管理模塊的軟件開發(fā)流程如圖4所示。
圖4 網(wǎng)絡(luò)管理模塊的程序開發(fā)流程
3.2 文件信息存儲模塊
文件信息存儲模塊采用的是erialcomm.cpp串口通信進(jìn)行信息存儲和內(nèi)存空間配置,采用控制函數(shù)virgrg igrt readFgfr(ifrgt fd, chgtrr *bughger, gr cogrt, ingt *erg4r) 讀取一定長度的數(shù)據(jù),執(zhí)行大型服務(wù)器的嵌入式讀寫和I/O端口的調(diào)度命令,向指定的設(shè)備寫入串口相關(guān)的存儲信息。在文件信息存儲和讀取中,用兩個線程來進(jìn)行讀寫:readerThread和writerThread,運行代碼為:
bool readPagrgket(SFvrhgrket &pfrgket);
bool wfvrgackgrgr(SFPafrght &pPahgtket);
大型服務(wù)器的軟件系統(tǒng)的輸入/輸出系統(tǒng)由三個線程構(gòu)成:serverThfred,reagrerThregrd和writgrThrehgr[7]。當(dāng)緩存數(shù)據(jù)從串口到達(dá)數(shù)據(jù)包,文件信息存儲模塊進(jìn)行時鐘頻率初始化、存儲器初始化。通過DMA中斷控制程序判斷服務(wù)器的上電加載程序是否寫入,對緩沖區(qū)的查詢中斷標(biāo)志位進(jìn)行峰值判斷,進(jìn)行控制程序的收發(fā)轉(zhuǎn)換和A/D加載。隨著緩沖區(qū)寫入數(shù)據(jù)的擴(kuò)大,數(shù)據(jù)指針指向緩沖區(qū)0,如果不能滿足緩沖區(qū)中數(shù)據(jù)存儲池的規(guī)模要求,進(jìn)行CAN初始化、PPI初始化,繼續(xù)判斷A/D采樣是否完成。在執(zhí)行了時鐘初始化和存儲器初始化程序的如下關(guān)鍵函數(shù)后:
SFPacket deqhytue();
bool enqjyejukrohyt(Sjkuket &pPajulket);
bool enqujykick(SFPafrket &pPagret);
從文件信息存儲系統(tǒng)隊列的首部取出數(shù)據(jù)包,確認(rèn)是否從大型服務(wù)器的客戶端傳過來的命令,等服務(wù)器空閑時,進(jìn)行TCP服務(wù)進(jìn)程的調(diào)整,提高大型服務(wù)器的并行調(diào)度能力。根據(jù)上述設(shè)計,得到文件信息存儲模塊的程序處理流程如圖5所示。
圖5 大型服務(wù)器文件信息存儲模塊的程序處理流程
3.3 總線控制模塊及接口模塊設(shè)計
大型服務(wù)器設(shè)計采用的是32通道的嵌入式現(xiàn)場總線控制技術(shù)。首先將大型服務(wù)器文件管理和數(shù)據(jù)庫調(diào)度總線數(shù)據(jù)首址賦給地址指針,進(jìn)入循環(huán)體,總循環(huán)32次,采集的MVB總線控制的寄存數(shù)據(jù),引導(dǎo)加載程序Sfcontrol.cpp在線燒寫客戶端傳過來命令或配置參數(shù)?;诜稚⒖刂坪投嗑€程并行調(diào)度方法與客戶端進(jìn)行連接[8],接收從客戶端過來的控制命令或配置參數(shù),使用多線程技術(shù)讀寫進(jìn)程與客戶端之間進(jìn)行的數(shù)據(jù)流,并加載到數(shù)據(jù)包緩存中,建立MineComm.cp函數(shù)RS 485網(wǎng)絡(luò)進(jìn)行通信。在總線控制模塊設(shè)計中,使用如下接口程序進(jìn)行系統(tǒng)配置,并通過局部總線發(fā)送FLASH設(shè)備上的文件系統(tǒng)內(nèi)核:
interface Thgrer
interface Rgf4ytad
//Rhgrthyuk voltjjykige 上電加載
interface ReahtjStrejuk
//Read prhtyjre sensfrhg data,DIP封裝
interface Lehyt; //Indhytion
在程序加載的基礎(chǔ)上,設(shè)定嵌入式大型服務(wù)器的控制系統(tǒng)的VXI總線數(shù)據(jù)采樣通道8通道,驅(qū)動程序的D/A轉(zhuǎn)換速率設(shè)定為200 kHz,初始化靜態(tài)變量(Static Variables)由HP E1562E提供一對SCSI總線,實現(xiàn)總線控制設(shè)計[9]。最后進(jìn)行大型服務(wù)器的接口設(shè)計,接口設(shè)計在嵌入式ARM環(huán)境下配置qt?embedded?arm,并進(jìn)行接口程序的編譯和安裝,得到服務(wù)器接口數(shù)據(jù)部分和數(shù)據(jù)結(jié)構(gòu)的構(gòu)成見表1。
4 服務(wù)器調(diào)試測試分析
通過上述分析,實現(xiàn)了在Linux/Windows CE開發(fā)平臺下進(jìn)行服務(wù)器的嵌入式設(shè)計,最后為了測試服務(wù)器的運行性能,對設(shè)計的大型服務(wù)器軟件系統(tǒng)進(jìn)行信息處理的分散控制和多線程并行調(diào)度性能分析。首先調(diào)用 addLinkEstHeade執(zhí)行程序加載和數(shù)據(jù)寫入,在總線控制模塊中測試服務(wù)器的并行運行效率,分析服務(wù)器的處理時間與數(shù)據(jù)規(guī)模大小的關(guān)系,并與傳統(tǒng)的服務(wù)器進(jìn)行對比,得到測試結(jié)果如圖6所示。分析圖6結(jié)果得知,采用本文設(shè)計的大型服務(wù)器進(jìn)行數(shù)據(jù)計算,運行時間開銷較短,處理效率得到大幅提升。
5 結(jié) 語
本文進(jìn)行了大型服務(wù)器的軟件嵌入式開發(fā)優(yōu)化設(shè)計,提出一種基于分散控制和多線程并行調(diào)度的大型服務(wù)器軟件開發(fā)技術(shù)。進(jìn)行系統(tǒng)總體構(gòu)架分析,設(shè)計網(wǎng)關(guān)/服務(wù)器,采用S5PV210 處理器作為網(wǎng)關(guān)控制芯片,在網(wǎng)絡(luò)管理設(shè)計中,構(gòu)建TCP服務(wù)進(jìn)程和數(shù)據(jù)分發(fā)緩存進(jìn)程,在Linux/Windows CE開發(fā)平臺下進(jìn)行服務(wù)器的嵌入式總線控制設(shè)計,采用32通道的嵌入式現(xiàn)場總線控制技術(shù),實現(xiàn)服務(wù)器信息處理的分散控制和多線程并行調(diào)度。本文設(shè)計的服務(wù)器軟件系統(tǒng)的并行處理效率較高,計算開銷較小。
參考文獻(xiàn)
[1] 蔣欣,程博,張偉棟,等.基于FC總線協(xié)議和FTP協(xié)議的通用化FPGA配置方法[J].現(xiàn)代電子技術(shù),2015,38(11):57?60.
[2] 張璐,呂昂.一種雙網(wǎng)絡(luò)智能家居嵌入式網(wǎng)關(guān)/服務(wù)器[J].物聯(lián)網(wǎng)技術(shù),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的智能家居控制系統(tǒng)軟件設(shè)計研究[J].物聯(lián)網(wǎng)技術(shù),2015,5(11):14?16.
[6] 王靈芝,葉美霞,張建造.基于 ZigBee及BOA 服務(wù)器的嵌入式智能家居的設(shè)計[J].閩南師范大學(xué)學(xué)報(自然科學(xué)版),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嵌入式服務(wù)器與虛擬現(xiàn)實協(xié)同設(shè)計平臺[J].科技通報,2012,28(2):13?16.