⑴ linux架構是什麼
linux最初在intel386機子上開發的,如果想了解透徹,需要看
《UNIX操作系統設計》
*《UNIX環境高級編程》
《操作系統:設計與實現》(MINIX)
《IBMPC匯編語言程序設計》
*《深入理解計算機系統》
《Linux權威指南》
《》
*《Intel80386Programmer';sReferenceManual》
*《TheCProgrammingLanguage》
等等書籍,對intel處理器機制要了解透徹,不是一個循環那麼簡單的。如果只是學驅動的話先看看ldd3,做點例子。
⑵ 什麼是Linux系統架構
您好很高興回答您的問題:
Linux系統架構分為兩個部分一個是單台Linux系統架構 另外一個是網站集群架構.
單台Linux系統架構:
由硬體,內核,命令解釋器,外圍軟體組成
網站集群架構
⑶ 請教關於linux軟體包的架構問題
rpm主要是比較老牌,使用比較廣泛
deb功能比較強大,而且依賴問題解決較好
各有各的優點
bin,run都是通用的
源碼包也是通用的,只是閉源軟體不提供源碼
ps:deb資源也不少,rpm還分rh、fc、suse的,而deb包只要滿足依賴,debian和ubuntu一般能通用,而其他debin系的linux
redhat前段時間發起一個項目,要逐步向deb過度,不過應該是好幾年以後才能慢慢實現的
只是有些專業軟體比如h-spice,只有rh安裝包
⑷ Linux驅動的軟體架構
Linux不是為了某單一電路板而設計的操作系統,它可以支持約30種體系結構下一定數量的硬體,因此,它的驅動架構很顯然不能像RTOS下或者無操作系統下那麼小兒科的做法。Linux設備驅動非常重視軟體的可重用和跨平台能力。譬如,如果我們寫下一個DM9000網卡的驅動,Linux的想法是這個驅動應該最好一行都不要改就可以在任何一個平台上跑起來。
#ifdef BOARD_Xxx
#define DM9000_BASE 0x100oo#define DM900o_IRQ 8
#elif defined(BOARD_YYY)#define DM9000_BASEox200oo#define DM90oo_IRo 7
#elif defined (BOARD_Z2Z)#define DM9000_BASEox3000o#define DM9o0o_IRQ9...
#endif
上述代碼主要有如下問題:
1)此段代碼看起來面目可憎,如果有100個板子,就要iflelse 100次,到了第101個板子,又得重新加ifelse。代碼進行著簡單的「復制—粘貼」,「復制—粘貼」式的簡單重復通常意味著代碼編寫者的水平很差。
2)非常難做到一個驅動支持多個設備,如果某個電路板上有兩個DM9000網卡,則DM9000_BASE這個宏就不夠用了,此時勢必要定義出來DM9000_BASE 1、DM9000_BASE 2、DM9000_IRQ 1、DM9000_IRQ 2類的宏;定義了DM9000_BASE 1、DM9000_BASE2後,如果又有第3個DM9000網卡加到板子上,前面的代碼就又不適用了。
3)依賴於make menuconfig選擇的項目來編譯內核,因此,在不同的硬體平台下要依賴於所選擇的BOARD_XXX、BOARD_YYY選項來決定代碼邏輯。這不符合ARM Linux 3.x一個映像適用於多個硬體的目標。實際上,我們可能同時選擇了BOARD_XXX、BOARD_YYY、BOARD_ZZZ。
我們按照上面的方法編寫代碼的時候,相信自己編著編著也會覺得奇怪,代碼不好。這個時候,我們有沒有辦法把設備端的信息從驅動裡面剝離出來,讓驅動以某種標准方法拿到這些平台信息呢Linux匯流排、設備和驅動模型實際上可以做到這一點,驅動就可以放之四海而皆準了。