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

基于ARM-Linux嵌入式系統的多進程并發服務器設計

2014-09-23 03:19:04許文明
電子設計工程 2014年13期
關鍵詞:進程嵌入式

許文明

(南華大學 網絡信息中心,湖南 衡陽 421001)

基于ARM-Linux嵌入式系統的多進程并發服務器設計

許文明

(南華大學 網絡信息中心,湖南 衡陽 421001)

隨著物聯網、智能電網、智能移動設備的發展,我們將能在任何時候任何地方獲取我們所需的信息,本文設計一款基于ARM-Linux嵌入式系統的多進程并發服務器。它擁有傳統服務器的功能,可遠程訪問和操作,同時又具有體積小、噪聲低、低功耗、低成本的優勢,非常適合用于智能樓宇的家用服務器。

物聯網;ARM-Linux嵌入式系統;多進程并發服務器

目前大家所用的大多是X86服務器,其功能完善、運行速度快、軟件支持性好等優點,已被人們普遍認同。但其由于價格昂貴、功耗高、噪聲大等原因,一般只應用于工廠、企事業單位,但隨著互連網的發展,我們需要更多的小型服務器終端,因此,低成本、低功耗的嵌入式服務器將有極大的應用空間。

面向連接的并發服務器是目前Linux網絡服務器的主流形式。它采用主、從服務器的工作方式,能較好地解決了網絡中客戶進程的并發請求問題。目前在嵌入式領域,基于ARM技術的微處理器應用約占據了32位RISC微處理器80%以上的市場份額,同時,ARM處理器和嵌入式Linux的結合也正變得越來越緊密,在工業控制、消費類電子產品、通信系統、無線系統等各類產品市場都可以看到ARM與Linux相結合的身影[1]。因此,本文介紹了一種基于ARM-Linux嵌入式系統的多進程并發服務器設計。

1 并發服務器原理及框架

1.1 基本的C/S服務模型

相互通信的網絡程序通??梢苑譃榭蛻舳撕头掌鞫藘刹糠諿2]。簡單的C/S服務模式客戶端和服務器采用的是一對一的關系,而實際上一個客戶同時可以與多個服務器通信,一個服務器同時也能與多個客戶通信。

Linux下使用TCP套接字編程可以實現基于TCP/IP協議的面向連接的通信[3],它分為服務器端和客戶端兩部分,如圖1所示。服務器端與客戶端連接的步驟如下:

圖1 TCP服務器與客戶端的連接Fig.1 server and client connection by TCP

1)使用socket()函數創建套接字;

2)將創那的套接字綁定到指定的地址結構

3)Listen()函數設置套接字為監聽模式,使服務器進入被動打開的狀態

4)接受客戶端的連接請求,建立連接

5)終止連接

客戶端實現步驟:

1)使用socket()函數創建套接字

2)調用connect()函數建立一個TCP服務器的連接

3)發送數據請求,接收服務器的數據應答

4)終止連接

這樣就建立了最簡單的C/S連接模式,而所有基于TCP套接字的網絡服務也都是建立在這個基礎上的

1.2 多進程并發服務器模型

前面介紹了簡單的TCP客戶端/服務器概念和連接,其中服務器每次只能處理一個客戶的請求,它的實現雖然很簡單但效率卻很低,在實際應用中,這樣的服務器是不能滿足實際需求的。

在實際應用中為了讓一個服務器同時為多個客戶服務,處理多個客戶的請求,那么就需要用并發服務器。Linux下主要支持的并發服務器有進程、線程。創建線程要比進程快,但一個進程內的所有線程共享相同的內存空間、全局變量等信息,所以當一個線程崩潰時,它會影響同一進程中的其他線程[4]。

Linux系統中可以同時存在多個進程,但相對線程來說,進程是獨立的。它擁有獨立的地址空間、執行堆棧、文件描述符等,在未經允許的情況下,一個進程不能訪問另一個進程的資源,因此一個進程崩潰不會造成其他進程的崩潰。由于考慮遠程監控系統要求的安全性和穩定性,本系統設計為多進程并發服務器。圖2為并發服務器的基本模型圖。

圖2 并發服務器模型Fig.2 Model of concurrent server

1.3 多進程服務器原理

在多進程并發服務器中是通過調用fork或vfork函數來創建新進程。當父進程產生新的子進程后,父、子進程共享父進程在調用fork之前的所有描述符。接下來父進程只負責接收客戶請求,而子進程只負責處理客戶請求。

圖3說明父進程調用fork生成子進程后,父、子進程對客戶請求和描述符的操作過程。

1)當服務器調用accept()函數時,連接請求從客戶到達服務器時雙方狀態。

2)當客戶的請求被接受后。接下來服務器就會調用fork函數生成子進程。

3)最后父進程關閉已連接描述符,由子進程關閉監聽描述符,這樣既可以節省系統資源,又可以防止父、子進程同時對共享描述符進程操作。至此子進程處理與客戶的連接,父進程可以對監聽描述符再次調用accept,繼續處理下一個客戶的請求[5]。

圖3 新進程連接狀態圖Fig.3 New process connection state

2 功能代碼分析

網絡主程序設計其實主要也就是父進程所執行的程序,程序設計的流程圖如4所示。

圖4 服務器程序流程圖Fig.4 Program flow chart of server

linux中的網絡編程通過socket接口實現。socket既是一種特殊的I/O,它也是一種文件描述符。一個完整的socket包括協議、本地地址、本地端口、遠程地址、遠程端口;每一個socket有一個本地的唯一socket號,由操作系統自動分配。以下是建立TCP socket,其中 AF_INET為 IPv4,SOCK_STREAM為TCP協議,如建立失敗則返回-1。

listen_fd=socket(AF_INET,SOCK_STREAM,0)

調用bzero初始化套接字地址結構,并對地址結構中的成員賦值,代碼如下。

為了給調用socket()函數產生的套接字分配一個本地協議地址,建立地址與套接字的對應關系,就要用到綁定函數bind()。通過綁定后端口號保證了地址信息的唯一性。如失敗返回-1。

當調用socket()函數創建一個套接字時,默認情況下它是一個主動套接字。所以對于TCP服務器,在綁定操作后,必須要調用listen()函數,將這個未連接的套接字轉換。

成被動套接字,使它處在監聽模式下,指示內核應接受發向該套接字的連接請求。在調用listen()函數后,服務器的狀態從close轉換到listen狀態。Listen第二個狀態字代表的是最大連接數,本系統設置的最大連接數為10。

接受客戶連接,客戶協議地址和長度省略接收,失敗accept_fd=-1,置errno。如果建立連接,并且fork()=0,那么程序就進入子進程進行執行。

清除一個文件描述符集,并將一個新文件描述符加入文件描述符集中,其作用就是更新文件描述符。

函數select()是給出每個描述符我們所關心的條件:是否讀描述符、是否想寫描述符、是否描述符的異常條件。&tv指等待時間。FD_ISSET()測試該集中的一個給定位是否有變化、更新。

調用read()可以接收buffer數據緩沖區,1 024指接收數據緩沖區大小,n為接收字節數。

調用子程序modbus.c,執行相應操作,調用make_modbus_ack()生成回發數據,并通過send()回發給客戶端。

3 ARM-Linux多進程服務移植與實現

3.1 程序編譯移植

Makefile的作用就是讓編譯器知道要編譯一個文件需要依賴哪些文件,同時當那些依賴文件更新時,編譯器會自動發現最終生成的文件已經過時,而重新編譯相應模塊。Makefile定義了一系列規則來指定各文件,如依賴性、先后順序及是否需要更新等。

編譯譯基于ARM的modbus網絡程序如下圖,首先我們看到文件夾里沒有可執行文件arm-modbus-server,輸入:#make

執行 Makefile文件,進行編譯連接依賴文件:main.c、modbus.c、std_c.h。

然后生成我們所需要的文件arm-modbus-server。

3.2 并發服務器測試

本測試是基于ARM9的linux2.9內核平臺。首先使用chmod修改arm-modbus-server執行權限,然后運行./armmodbus-server即服務器程序已經啟動。

啟用兩個客戶端通過IP訪問服務器,可見如圖5所示,已顯示并發服務器運行正常。

圖5 并發服務器測試Fig.5 Concurrent server test

4 結論

本文詳細介紹了并發服務器的原理結構,分析了基于linux下的并發服務器程序代碼,并且移植到ARM平臺上運行,實現了小型嵌入式服務器的制作。這種低成本、低噪聲、低功耗、高穩定性、高安全性的嵌入式服務器,將在我們信息化發展中的智能樓宇、智能家電、智能移動設備中獲得應用。

[1]華清遠見嵌入式培訓中心.嵌入式Linux系統開發[M].北京:人民郵電出版社,2009.

[2]陳節省.面向嵌入式超聲檢測系統的圖形接口設計與應用[D].哈爾濱:哈爾濱工業大學,2008.

[3]陳開.工業以太網的節點開發及通信協議研究[D].武漢:華中科技大學,2009.

[4]寧勇.基于ARM&Linux的大壩安全遠程數據傳輸系統設計[D].長沙:湖南大學,2010.

[5]徐雷.基于Linux的無人機地面站設計與實現[D].廣州:華南理工大學,2010.

[6]甘剛,閆麗麗,盛志偉.Linux/UNIX網絡編程[M].北京:中國水利水電出版社,2008.

Design of the multi process concurrent server based on ARM-Linux embedded system

XU Wen-ming
(Network Information Center,University of South China,Hengyang 421001,China)

With the Internet of Things,smart grid,smart mobile devices development,we will be able to get information we need in anywhere at any time,we design an embedded system based on ARM-Linux multi-process concurrent server.it has a traditional server features that can remotely access and operate,but also has a small volume,low noise,low power,low cost advantage,is very suitable for intelligent building home server.

Internet of Things;embedded system based on ARM-Linux;multi-process concurrent server

TP368

A

1674-6236(2014)13-001-03

2013-10-11 稿件編號:201310050

湖南省教育廳科研課題項目(09C862)

許文明(1966—),男,湖南衡陽人,工程師。研究方向:計算機應用及開發。

猜你喜歡
進程嵌入式
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
主站蜘蛛池模板: 老色鬼欧美精品| 久久综合伊人77777| 欧美97色| 国产理论精品| 亚洲AV无码不卡无码 | 色综合狠狠操| 国产手机在线观看| 亚洲人成电影在线播放| 亚洲第一成年人网站| 香蕉久久国产超碰青草| 欧美日本一区二区三区免费| 亚洲视频四区| av午夜福利一片免费看| 亚洲天堂首页| 亚洲国产综合精品中文第一| 激情六月丁香婷婷四房播| 亚洲日产2021三区在线| 国产精品国产三级国产专业不| 无码精品一区二区久久久| 99久久性生片| 欧美一区国产| 不卡网亚洲无码| 欧洲av毛片| 国产无遮挡裸体免费视频| 亚洲精品国产日韩无码AV永久免费网| 国产免费人成视频网| 亚洲福利片无码最新在线播放| 97视频免费在线观看| 色偷偷一区| 久久99这里精品8国产| 国产一区免费在线观看| 久久99热66这里只有精品一| 免费在线一区| 久久久91人妻无码精品蜜桃HD| 国产麻豆福利av在线播放| 18禁黄无遮挡免费动漫网站 | 亚洲91在线精品| 国产欧美日韩综合在线第一| 欧美一区二区三区香蕉视| 91精品久久久无码中文字幕vr| 日韩小视频在线播放| 高清色本在线www| 欧美日韩高清在线| 中文字幕免费视频| 99中文字幕亚洲一区二区| 青草娱乐极品免费视频| 免费在线看黄网址| 亚洲最猛黑人xxxx黑人猛交| 在线另类稀缺国产呦| 67194成是人免费无码| 天堂久久久久久中文字幕| 青草视频免费在线观看| 久久久久青草大香线综合精品| 成年女人a毛片免费视频| 一本色道久久88亚洲综合| 亚洲色图在线观看| 国产本道久久一区二区三区| 国产精品香蕉| 国产精品林美惠子在线观看| 国产在线无码一区二区三区| 国产91视频免费| 欧美三级不卡在线观看视频| 五月婷婷亚洲综合| 国产在线视频二区| 亚洲国产综合精品一区| 中文字幕人成人乱码亚洲电影| 亚洲天堂视频在线观看免费| 欧美性精品不卡在线观看| 91在线视频福利| 五月天综合网亚洲综合天堂网| 亚洲日本精品一区二区| 国产第一页屁屁影院| 免费国产小视频在线观看| 91娇喘视频| 亚洲天堂啪啪| 成人a免费α片在线视频网站| 视频一区视频二区中文精品| AV在线天堂进入| 日韩在线网址| 青草免费在线观看| 91久久国产综合精品| 国产va在线观看|