殷曉輝
中國聯通寧夏分公司,寧夏 銀川 750000
隨著Linux嵌入式系統技術的逐步發展,其應用領域和市場份額繼續快速擴大。其主要應用領域是服務系統和嵌入式系統。Linux作為一種使用類的UNIX操作系統,不僅可以在INTEL,AMD等系列個人計算機上運行,也可以在許多工作站級的電腦上面運行。
嵌入式系統定義:
嵌入式系統是將先進的計算機技術,半導體技術和電子技術與各個行業的具體應用相結合的產物。其定義為:以應用為中心、以計算機技術為基礎、軟件硬件可剪裁、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。嵌入式Linux操作系統是指對Linux經過裁剪小型化后,可固化在存儲器或單片機中,應用于特定嵌入式場合的專用Linux操作系統。與其它操作系統相比,Linux的特點如下:
1)Linux操作系統能夠與UNIX系統相互兼容。Linux系統幾乎具有全部UNIX系統特征,而且能夠適合POSIX國際標準的系統;
2)Linux系統有自由的軟件和開放的源代碼特征。Linux項目一開始就與GNU項目緊密聯系起來,它的許多重要組成部分直接來自GNU項目,只要遵從GPL條款,任何人就可以自由使用Linux源代碼;
3)Linux操作系統具有網絡性能高和安全性強的特點。Linux支持所有標準因特網協議和提供各種高性能服務。Linux操作系統包含了大量網絡管理、網絡服務等工具,利用它可以建立起高效的防火墻、路由器、工作站等功能;
4)Linux系統支持多樣化的硬件平臺。例如RISC、CISC、32位、64位等各種處理器,Linux操作系統都能支持它們運行。
Linux系統調度CPU的時間是通過調度固定的時間片(time slices)來實現的。例如最開始進程賦予一個高的優先級,在某個進程的時間片內,這個進程如果放棄CPU,它的優先級將不會變,或者變的更高。如果一個進程使用完它的時間片,它的優先級將會變低?;谝陨咸卣鳎琇inux操作系統的實時性不足主要體現在幾個方面:
1)Linux操作系統內核是非搶占式的。比如當普通進程運行在核心態時,實時進程優先級低于普通進程;
2)Linux操作系統的平均響應時間最少為數10ms,對響應時間要求更嚴的實時系統無能為力;
3)由于實時調度策略中的RR和FIFO算法存在,無法嚴格保證具有高優先級的實時進程總是優先于普通進程執行;
4)Linux操作系統內核的進程經常關閉中斷。如果低優先級的進程關閉了中斷,即使有高優先級實時進程的中斷發生,導致系統最終也無法響應。
Linux操作系統在通訊和網絡功能方面都優于絕大多數操作系統。Linux的網絡功能主要有以下幾點:
1)Linux操作系統支持TCP/IP協議。任何系統必須遵循的網絡協議是TCP/IP,TCP/IP對建網提出了統一的規范的要求。
2)Linux支持多樣的網絡數據庫。數據庫是信息資源的重要來源,Linux對數據庫支持也不例外。而且Linux支持的大型數據庫很多,如ORACEL、 SQLSERvER等。
3)Linux系統擁有豐富的網絡服務功能。Linux提供了豐富的網絡服務,如電子郵件、文件傳輸、網絡新聞等。
絕大多數計算機安全問題是由于管理不當造成,而不是系統軟件本身的漏洞。因此嚴格的管理會極大程度地降低系統被非法入侵的風險,下面是幾種常見的安全漏洞。
1)特權軟件的安全漏洞。特權軟件的一種攻擊的方法是通過IFS(Input Files Separator,輸入字段分隔符) shell 變量來實現的。IFS變量用于決定傳給shell 字符串的分隔符。例如,一個程序如果調用函數system()或popen()執行一個shell 命令,那么該命令首先由shell 來分析,如果執行的用戶可以控制IFS 環境變量,就可能會導致不可預測的結果。另一個攻擊方法是通過使用HOME環境變量;
2)特洛伊木馬程序。它與一般用戶想要執行的程序從外觀上(如文件名)看很相似,例如編輯器、登錄程序或者游戲程序等。特洛伊木馬程序與一般用戶想要執行的程序表面上很相似,執行的卻是其它的操作,等到用戶發現,卻為時已晚。例如刪除文件、竊取密碼和格式化磁盤等;
3)研究源代碼的漏洞。許多入侵者是通過研究一些程序的源代碼而成功的攻擊系統的;
4)網絡監聽及數據截取。威脅計算機網絡安全的一個重要因素是計算機之間傳輸的數據可以很容易的被截取。其原因在于異種機的互聯,敏感數據的傳輸往往不在系統的控制之下,有許多現成的軟件可以監視網絡上傳輸的數據。
在設計inetd 服務程序時,要特別注意buffer overflow(緩存區溢出)的問題,也就是以下這種狀況: char buffer_overflow[64];fscanf(stdin,“%s”,buffer_overflow);
幾乎所有的安全漏洞都是由此而來的,黑客高手可以透過buffer 塞爆,然后塞進他自己的程序進來,因此一定要杜絕這種使用方式。
在Linux網絡操作系統中,網絡數據傳輸需要經歷4個層次:用戶進程、socket、網絡協議、網絡設備。它的網絡編程是通過socket套接字接口來實現的,應用程序通過使用socket統一接口收發網絡上的數據,網絡的socket數據傳輸是一種特殊的I/O,socket好像通信線插口,只要通信雙方都有插口,兩個插口之間有通信線連接,就可以通信,這樣方便了聯網應用程序的編程,一個套字節是與網絡的一個連接。應用程序中使用套接字來調用套接口,套接字可認為是指向套接口的指針,就像文件描述符是指向文件的指針一樣。一個Socket有3個特征:網域、類型、協議。網絡編程基本模式有以下3種:
1)客戶機/服務器模式??蛻魴C/服務器模式在操作過程中采取的是主動請示方式,首先服務器方要先啟動,并根據請示提供相應服務。網絡編程的基本模式是client/serve:模式,該模式的建立基于以下兩點:一、非對等作用;二、通信完全是異步的;
2)面向連接協議的字節流套接字編程。字節流套接字編程socket采用的是傳輸控制協議TCP。TCP提供面向連接的流傳輸,面向連接對可靠性的保證首先是它在進行數據傳輸前,必須在信源端和信宿端建立互相的連接;
3)非連接協議的數據報套接字編程。數據報式socket采用的是用戶數據報協議UDP,提供無連接數據報傳輸,主要應用在高可靠性、低延遲的局域網上。它的優點是高效率低開銷,不用建立連接和撤銷連接,缺點是不可靠,報文丟失后需重發。
Linux操作系統完全TCP/IP協議簇,其內核結構在網絡方面是非常完善的。Linux操作系統支持多種類型的套接字地址簇并將其抽象為統一的套接字接口socket,這樣方便了互聯網應用程序的編程,而且也為網絡應用程序之間的數據通信提供了便利。
[1]孫瓊.嵌入式Linux應用程序開發詳解[M].北京:人民郵電出版社,2006,7.
[2]張斌,高波,等.Linux網絡編程[M].北京:清華大學出版社,2000,1.