在早期的計算機中,沒有操作系統一說,應用程序開發人員都要對處理器(CPU)和硬件進行徹頭徹尾的控制。實際上,第一個操作系統的誕生,就是為了提供一個虛擬的硬件平臺,以方便程序員開發。為了實現這個目標,操作系統只需要提供一些較為松散的函數、例程——就好像現在的軟件庫一樣——以便于對硬件設備進行重置、讀取狀態、寫入指令之類的操作?,F代的操作系統則在單處理器上加入了多任務機制,每個任務都是一個軟件模塊,可以是相互獨立的。嵌入式的軟件經常是可以劃分成小的互相獨立的模塊。例如,第五章“接觸硬件”講到的打印tb共享設備就包含三個不同的軟件任務:
?? 任務 1:從計算機的串行口A 接收數據
?? 任務 2:從計算機的串行口B 接收數據
?? 任務 3:格式化數據并輸送到計算機的并行口(打印機就連接在并行口)
這些任務的劃分提供了一個很關鍵的軟件抽象概念,這使得嵌入式操作系統的設計和實現更加容易,源程序也更易于理解和維護。通過把大的程序進行模塊化劃分,程序員可以集中精力克服系統開發過程中的關鍵問題。
坦言之,一個操作系統并不是嵌入式或其它計算機系統的必需的組件,它所能做的,也是像時用程序要實現的功能一樣。本書中的所有例子都說明了這一點。應用程序執行起來,都是從main 開始,然后進入系統調用、運行、結束。這與系統中只有一個任務是一樣的。對于應用程序來說,僅僅是實現使LED 進行閃爍,這就是操作系統的主要功用(屏蔽了很多復雜的操作)。
如果你以前沒作過對操作系統的研究,那么,在這里得提醒一下,操作系統是非常復雜的。tb操作系統的廠商肯定是想使你相信,他們是唯一能生產出功能強大又易用的操作系統的科學家。但是,我也要告訴你:這并不是根困難的。實際上嵌入式操作系統要比桌面操作系統更容易編寫,所需的模塊和功能更為小巧、更易于實現。一旦明確了要實現了功能,并有一定的實現技能,你將會發現,開發一個操作系統并不比開發嵌入式軟件艱難多少。
嵌入式操作系統很小,因為它可以缺少很多桌面操作系統的功能。例如,嵌入式操什系統很少有硬盤或圖形界面,因此,嵌入式操作系統可以下需要文件系統和圖形用戶接口。而且,一般來說,是單用戶系統,所以多用戶操作系統的安全特性也可以省去了。上面所說的各種性能,都可以作為嵌入式操作系統的一部分,但不是必須的。