System software是最靠近硬體的一套軟體,所以和application software有著許多不同的特點,這些特點深深影響system software在開發與驗證時所需要的方法與工具,我們在之後的章節當中會慢慢敘述。
各位讀者可能並不熟悉system software和大家較常接觸的application software之間有什麼差異,所以我們會先針對這兩種軟體做一個簡單的比較,為了方便讀者思考,我們先列舉它們分別有哪些常見的軟體。
System software: Windows, GCC, driver
Application software: Office, VIM, 小畫家
System software: software需要從source code產生、system要能夠開機、運作,都是由system software負責,所以system software的重點是讓system可以運作且穩定
Application software: user有需求才會有對應的application software被實做出來,所以application software的重點是對user來說好用
System software: 因為是控制system運作的software,從按下電源鍵開始,system software就跑起來了
Application software: 因為是因應user的需求,所以user叫他跑,他才會起來跑
System software: 直接和hardware互動,所以system software需要知道hardware規格、設計,才能提供上層服務
Application software: 不會直接和hardware互動,system software會提供API,協助application和hardware的互動,API沒有改動的話,hardware怎麼變動都無感 (我們寫程式的時候不需要知道檔案被放在隨身碟、硬碟有什麼差別)
System software: 為了效能的考量,必須使用C語言提高軟體的運作效率。同時因為需要和hardware互動,如果是C語言無法支援的行為,就必須寫組合語言 (assembly code)
Application software: 可以用system software的API寫,所以可以寫C,也可以用C創造更高階語言的環境
System software: 它是為了控制hardware而生,所以只要hardware有電,system software就可以單獨運作,而且system上沒有system software就不能運作
Application software: 它需要hardware與system software的支援才可以運作,且system上沒有application software還是可以正常運作
System software: 因為system software扮演了平台性質,它的效能有問題會讓整個system都被拖累
Application software: 因為system software會管理system資源,所以application software的效能問題不一定會影響整個system