學習韋東山視頻心得(一)

                 學習韋東山視頻心得(一)

任何計算機系統都是軟件和硬件的結合體,如果只有硬件而沒有軟件,則硬件是沒有靈魂的軀殼;如果只有軟件沒有硬件,則軟件就是一堆無用的字符。在底層硬件的基礎上,操作系統覆蓋一層驅動,屏蔽底層硬件的操作,通過特定的軟件接口去操作底層硬件,用戶在用戶空間可以很容易的把軟件設計目標放在策略與需求上,可以很方便的屏蔽掉底層實現,從而很好的完成客戶功能需求。計算機系統是軟件和硬件的結合體。而軟件又分爲應用層軟件和驅動層軟件。驅動層軟件是應用層軟件和底層硬件的紐帶。通過驅動層軟件實現對底層硬件屏蔽。

在裸機時代,比如單片機系統,程序員往往是直接操作硬件寄存器,直接設置硬件。而在Linux操作系統中,硬件驅動程序中實現對硬件直接操作,而用戶空間,通過通用的系統調用接口,實現對硬件操作,應用程序沒有直接操作底層設備,通過posix標準,應用程序的系統調用往往是被規定和限值,用戶只能通過規定的接口實現對底層硬件的操作,導致了應用程序在類UINIX操作系統具有非常好的可移植性。

viewfile?f=66A91C2D59B9219710E547F38E426

圖1.1  直接操作硬件程序

上圖1.1 是裸機時代,應用程序和硬件操作糅合在一起,應用程序和硬件操作高度耦合的框圖,上述代碼一般很難有良好的代碼互用和移植性。往往從一個平臺移植到另一個平臺,甚至是同一平臺不同硬件配置都要求很大的代碼改動,另外從應用層來說,應用與驅動高度耦合,應用程序也幾乎難以移植,甚至說是沒有應用程序概念,原因在於應用與驅動的糾纏不清。

 

viewfile?f=66A91C2D59B9219710E547F38E426

圖2.2  無操作系統應用程序和設備驅動程序關係

上圖1.2所示,良好的裸機代碼框架,設備驅動層和應用層之間有良好的分層思想,用戶可以較好的實現策略和需求,例如:客戶要求實現流水燈程序,程序員在底層機制實現(硬件操作)的基礎下,可以充分在用戶應用程序中把主要精力方法流水燈的實現,即策略。但是在良好的裸機程序設計,代碼移植性可能從一個平臺移植到另外一平臺只需要修改少量的底層驅動,例如:LED_ON()的實現。但是在用戶空間,沒有系統調用概念,函數接口千差萬別。應用程序移植性差。  

viewfile?f=66A91C2D59B9219710E547F38E426

圖2.3  Linux系統調用框圖

操作系統中,需求決定應用程序,通過系統調用,調用底層驅動,此外,在驅動程序中,把一部分公用的驅動接口抽象出來,如此,程序員只需修改很少量的驅動資源,形成特定的驅動框架。導致用戶只需添加專用的硬件屬性作爲平臺資源,在內核中獲取資源,大大解放了設備驅動開發,提高了設備驅動的通用型。在用戶空間,由於遵循posix標準,類UNIX操作系統中,所有操作接口基本一樣,從而方便了應用程序的移植,應用程序幾乎不要做修改。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章