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