新聞中心
作為一種非常流行的操作系統(tǒng),Linux在各種應(yīng)用場(chǎng)景下都有廣泛的應(yīng)用。對(duì)于喜歡深入了解計(jì)算機(jī)底層運(yùn)作原理的開發(fā)者來說,掌握linux系統(tǒng)級(jí)開發(fā)技術(shù)顯得尤為重要。本篇文章將對(duì)Linux系統(tǒng)級(jí)開發(fā)技術(shù)做全面解析。

在仙桃等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,仙桃網(wǎng)站建設(shè)費(fèi)用合理。
一、Linux系統(tǒng)架構(gòu)
要想進(jìn)行系統(tǒng)級(jí)開發(fā),首先需要了解Linux的系統(tǒng)架構(gòu)。Linux系統(tǒng)架構(gòu)包含了內(nèi)核空間與用戶空間兩個(gè)部分。內(nèi)核空間負(fù)責(zé)操作系統(tǒng)內(nèi)各種核心的功能,包括系統(tǒng)調(diào)用、內(nèi)存管理、進(jìn)程管理等;而用戶空間則是系統(tǒng)的應(yīng)用程序運(yùn)行的空間。
1.1 內(nèi)核空間
從用戶空間到內(nèi)核空間的轉(zhuǎn)換,需要通過系統(tǒng)調(diào)用(system call)來完成。系統(tǒng)調(diào)用是應(yīng)用程序與內(nèi)核進(jìn)行通信的重要方式,這些調(diào)用都有一個(gè)唯一的系統(tǒng)調(diào)用號(hào),并且在特定的硬件環(huán)境下使用一個(gè)特定的寄存器進(jìn)行調(diào)用。
在進(jìn)入內(nèi)核空間之前,需要通過中斷(interrupt)或異常(exception)進(jìn)行進(jìn)入。在內(nèi)核空間中,可以使用表格查找以及互斥等技術(shù)實(shí)現(xiàn)不同的系統(tǒng)功能,例如中斷處理程序、內(nèi)存管理程序、進(jìn)程調(diào)度程序等。
1.2 用戶空間
用戶空間是程序正常運(yùn)行的空間,它包含了應(yīng)用程序與程序相互依賴的共享庫。通常情況下,應(yīng)用程序在運(yùn)行的同時(shí)需要使用共享庫來完成相應(yīng)的功能,例如C庫、網(wǎng)絡(luò)庫等等。
二、Linux系統(tǒng)級(jí)開發(fā)技術(shù)
2.1 系統(tǒng)調(diào)用
系統(tǒng)調(diào)用是編寫用戶空間與內(nèi)核空間通訊的重要手段。系統(tǒng)調(diào)用接口主要實(shí)現(xiàn)在C庫中,例如glibc庫。在C語言中,利用系統(tǒng)調(diào)用可以實(shí)現(xiàn)各種操作系統(tǒng)功能,例如進(jìn)程控制、文件操作、網(wǎng)絡(luò)操作等。
以進(jìn)程控制為例,通過系統(tǒng)調(diào)用可以實(shí)現(xiàn)進(jìn)程創(chuàng)建、進(jìn)程運(yùn)行控制、文件操作、信號(hào)操作等。下面是一個(gè)使用系統(tǒng)調(diào)用實(shí)現(xiàn)創(chuàng)建子進(jìn)程的示例代碼:
“`
#include
int mn(int argc, char **argv)
{
pid_t pid;
pid = fork();
if (pid
/* fork fled */
return 1;
}
if (pid == 0) {
/* child process */
execv(“/bin/ls”, argv); /* run command */
} else {
/* parent process */
wt(); /* wt for child to exit */
}
return 0;
}
“`
2.2 內(nèi)存管理
Linux中的內(nèi)存管理主要分為用戶空間內(nèi)存管理和內(nèi)核空間內(nèi)存管理。用戶空間的內(nèi)存管理主要是通過glibc庫實(shí)現(xiàn),而內(nèi)核空間的內(nèi)存管理由內(nèi)核的Page Allocator、Slab Allocator等組件來完成。
在內(nèi)核空間中,通過Page Allocator可以實(shí)現(xiàn)大塊內(nèi)存的分配與回收,而Slab Allocator則可以實(shí)現(xiàn)內(nèi)存緩存的管理。下面是使用Page Allocator實(shí)現(xiàn)內(nèi)存分配的示例代碼:
“`
#include
char *buf;
buf = kmalloc(1024, GFP_KERNEL);
if (!buf)
/* allocation fled */
else
/* use the allocated memory */
kfree(buf);
“`
2.3 進(jìn)程管理
進(jìn)程管理是操作系統(tǒng)的核心功能之一,包括了進(jìn)程創(chuàng)建、進(jìn)程調(diào)度、進(jìn)程切換、進(jìn)程刪除等方面。在Linux中,進(jìn)程的調(diào)度與管理主要由內(nèi)核實(shí)現(xiàn)。
Linux中的進(jìn)程可以通過fork()函數(shù)創(chuàng)建,每個(gè)進(jìn)程都有一個(gè)唯一的PID號(hào)來進(jìn)行標(biāo)識(shí)。內(nèi)核維護(hù)了一個(gè)進(jìn)程表(Process Table)來存儲(chǔ)所有的進(jìn)程信息,并通過調(diào)度器來對(duì)進(jìn)程進(jìn)行調(diào)度和切換。
2.4 文件操作
Linux中的文件操作主要是通過系統(tǒng)調(diào)用實(shí)現(xiàn)的。文件可以是普通文件、目錄文件、管道文件、設(shè)備文件等類型,而文件操作主要包括了文件打開、讀寫、關(guān)閉等操作。
在Linux中,每個(gè)文件都有一個(gè)唯一的文件描述符來進(jìn)行標(biāo)識(shí)。通過open()函數(shù)可以打開一個(gè)文件,并返回該文件的文件描述符;通過read()和write()函數(shù)可以實(shí)現(xiàn)文件的讀寫操作;而close()函數(shù)則可以關(guān)閉一個(gè)打開的文件。
2.5 網(wǎng)絡(luò)編程
網(wǎng)絡(luò)編程在Linux中也有廣泛的應(yīng)用,包括了Socket編程、TCP/IP協(xié)議等方面。Socket編程主要是通過系統(tǒng)調(diào)用實(shí)現(xiàn)的,例如通過socket()函數(shù)創(chuàng)建一個(gè)Socket并返回Socket描述符,在接收到客戶端請(qǐng)求后通過accept()函數(shù)返回連接的Socket描述符等。
TCP/IP協(xié)議是互聯(lián)網(wǎng)的核心協(xié)議之一,在Linux中由內(nèi)核中的TCP/IP協(xié)議實(shí)現(xiàn)。通過Socket編程和TCP/IP協(xié)議可以實(shí)現(xiàn)客戶端與服務(wù)器之間的通信,例如通過HTTP協(xié)議實(shí)現(xiàn)Web頁面的訪問、通過FTP協(xié)議實(shí)現(xiàn)文件的傳輸?shù)鹊取?/p>
三、
相關(guān)問題拓展閱讀:
- 嵌入式設(shè)備的嵌入式設(shè)備上的Linux系統(tǒng)開發(fā)_嵌入式linux應(yīng)用
嵌入式設(shè)備的嵌入式設(shè)備上的Linux系統(tǒng)開發(fā)_嵌入式linux應(yīng)用
Linux正在嵌入式開發(fā)領(lǐng)域穩(wěn)步發(fā)展。因?yàn)長inux使用GPL(請(qǐng)參閱本文后面的參考資料),所以任何對(duì)將Linux定制于PDA、掌上機(jī)或者可佩帶設(shè)備感興趣的人都可以從因特網(wǎng)免費(fèi)下載其內(nèi)核和應(yīng)用程序,并開始移植或開發(fā)。許多Linux改良品種迎合了嵌入式/實(shí)時(shí)市場(chǎng)。它們包括RTLinux(實(shí)時(shí)Linux)、uclinux(用于非MMU設(shè)備的Linux)、MontavistaLinux(用于ARM、MIPS、PPC的Linux分發(fā)版)、ARM-Linux(ARM上的Linux)和其它Linux系統(tǒng)
嵌入式Linux開發(fā)大致涉及三個(gè)層次:引導(dǎo)裝載程序、Linux內(nèi)核和圖形用戶界面(或稱GUI)。引導(dǎo)裝載程序通常是在任何硬件上執(zhí)行的之一段代碼。在象臺(tái)式機(jī)這樣的常規(guī)系統(tǒng)中,通常將引導(dǎo)裝載程序裝入主引導(dǎo)記錄(MasterBootRecord,(MBR))中,或者裝入Linux駐留的磁盤的之一個(gè)扇區(qū)中。通常,在臺(tái)式機(jī)或其它系統(tǒng)上,BIOS將控制移交給引導(dǎo)裝載程序。
專用軟件可以直接與遠(yuǎn)程系統(tǒng)上的閃存設(shè)備進(jìn)行交互并將引導(dǎo)裝載程序安裝在閃存的給定位置中。閃存設(shè)備是與存儲(chǔ)設(shè)備功能類似的特殊芯片,而且它們能持久存儲(chǔ)信息—即,在重新引導(dǎo)時(shí)不會(huì)擦除其內(nèi)容。
某些種類的嵌入式設(shè)備具有微小的引導(dǎo)代碼—根據(jù)幾個(gè)字節(jié)的指令—它將初始化一些DRAM設(shè)置并啟用目標(biāo)上的一個(gè)串行(或者USB,或者以太網(wǎng))端口與主機(jī)程序通信。然后,主機(jī)程序或裝入程序可以使用這個(gè)連接將引導(dǎo)裝載程序傳送到目標(biāo)上,并將它寫入閃存。設(shè)置工具鏈在主機(jī)機(jī)器上創(chuàng)建一個(gè)用于編譯將在目標(biāo)上運(yùn)行的內(nèi)核和應(yīng)用程序的構(gòu)建環(huán)境—這是因?yàn)槟繕?biāo)硬件可能沒有與主機(jī)兼容的二進(jìn)制執(zhí)行級(jí)別。
工具鏈由一套用于編譯、匯編和鏈接內(nèi)核及應(yīng)用程序的組件組成。這些組件包括:Binutils—用于操作二進(jìn)制文件的實(shí)用程序。它們包括諸如ar、as、objmp、objcopy這樣的實(shí)用程序。G—GNUC編譯器。Glibc—所有用戶應(yīng)用程序都將鏈接到的C庫。避免使用任何C庫函數(shù)的內(nèi)核和其它應(yīng)用程序可以在沒有該庫的情況下進(jìn)行編譯。構(gòu)建工具鏈建立了一個(gè)交叉編譯器環(huán)境。本地編譯器編譯與本機(jī)同類的處理器的指令。交叉編譯器運(yùn)行在某一種處理器上,卻可以編譯另一種處理器的指令。重頭設(shè)置交叉編譯器工具鏈可不是一項(xiàng)簡(jiǎn)單的任務(wù):它包括下載源代碼、修補(bǔ)補(bǔ)丁、配置、編譯、設(shè)置頭文件、安裝以及很多很多的操作。另外,這樣一個(gè)徹底的構(gòu)建過程對(duì)內(nèi)存和硬盤的需求是巨大的。如果沒有足夠的內(nèi)存和硬盤空間,那么在構(gòu)建階段由于相關(guān)性、配置或頭文件設(shè)置等問題會(huì)突然冒出許多問題。
因此能夠從因特網(wǎng)上獲得已預(yù)編譯的二進(jìn)制文件是一件好事(但不太好的一點(diǎn)是,它們大多數(shù)只限于基于ARM的系統(tǒng),但遲早會(huì)改變的)。一些比較流行的已預(yù)編譯的工具鏈包括那些來自Compaq(FamiliarLinux)、LART(LARTLinux)和Embedian(基于Debian但與它無關(guān))的工具鏈—所有這些工具鏈都用于基于ARM的平臺(tái)。從用戶的觀點(diǎn)來看,圖形用戶界面(GUI)是系統(tǒng)的一個(gè)最至關(guān)重要的方面:用戶通過GUI與系統(tǒng)進(jìn)行交互。所以GUI應(yīng)該易于使用并且非??煽?。但它還需要是有內(nèi)存意識(shí)的,以便在內(nèi)存受限的、微型嵌入式設(shè)備上可以無縫執(zhí)行。所以,它應(yīng)該是輕量級(jí)的,并且能夠快速裝入。
另一個(gè)要考慮的重要方面涉及許可證問題。一些GUI分發(fā)版具有允許免費(fèi)使用的許可證,甚至在一些商業(yè)產(chǎn)品中也是如此。另一些許可證要求如果想將GUI合并入項(xiàng)目中則要支付版稅。
最后,大多數(shù)開發(fā)人員可能會(huì)選擇XFree86,因?yàn)閄Free86為他們提供了一個(gè)能使用他們喜歡的工具的熟悉環(huán)境。但是市場(chǎng)上較新的GUI,象CenturySoftware的(Nano-X)和TrolltechQT/Embedded,與X在嵌入式Linux的競(jìng)技舞臺(tái)中展開了激烈競(jìng)爭(zhēng),這主要是因?yàn)樗鼈冋加煤苌俚馁Y源、執(zhí)行的速度很快并且具有定制窗口構(gòu)件的支持。
linux系統(tǒng)級(jí)開發(fā)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux系統(tǒng)級(jí)開發(fā),深入探索:Linux系統(tǒng)級(jí)開發(fā)技術(shù)全解析,嵌入式設(shè)備的嵌入式設(shè)備上的Linux系統(tǒng)開發(fā)_嵌入式linux應(yīng)用的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
當(dāng)前名稱:深入探索:Linux系統(tǒng)級(jí)開發(fā)技術(shù)全解析(linux系統(tǒng)級(jí)開發(fā))
文章路徑:http://m.fisionsoft.com.cn/article/dpjsppp.html


咨詢
建站咨詢
