作業系統與裸機的區別

2021-08-07 16:53:02 字數 1047 閱讀 6883

我們在學習stm32到一定階段可能會了解作業系統,然後便有這種問題產生,下面我就來粗略說說「作業系統與裸機的區別,以及stm32能執行什麼作業系統,能執行linux系統嗎」等問題。

作業系統與裸機的區別

裸機執行的程式**,一般由乙個main函式中的while死迴圈和各種中斷服務程式組成,平時cpu執行while迴圈中的**,出現其他事件時,跳轉到中斷服務程式進行處理,沒有多工、執行緒的概念。

而引入作業系統後,程式執行時可以把乙個應用程式分割為多個任務,每個任務完成一部分工作,並且每個任務都可以寫成死迴圈。作業系統根據任務的優先順序,通過排程器是cpu分時執行各個任務,保證每個任務都能夠得到執行。若排程方法優良,則可使個任務看起來是並行執行的,減少了cpu的空閒時間,提高了cpu的利用率。由作業系統的任務管理衍生出相應的cpu管理、記憶體管理,它們分別負責分配任務對cpu的佔有權和管理任務所占有的記憶體空間。在linux作業系統中,還具有檔案管理、i/o裝置管理的功能。

stm32能執行什麼作業系統,能執行linux系統嗎?

首先作業系統有兩種:一種是用mmu(memory

managenent unit ,即儲存管理單元)的,另一種是不用mmu的。

用mmu的是windows、 macos、 linux 、android

不用mmu的是freertos 、vxworks 、 uclinux、uc/os.

其次cpu也有有兩種 :帶mmu的和不帶mmu的。

帶mmu的有cortex-a、arm9 、arm11系列。不帶mmu的有cortex-m系列

而我們知道stm32是 cortex-m3、cortex-m4系列的…所以目前還不可能執行linux作業系統,但是stm32可以執行uc/os、uclinux、freertos 、vxworks等作業系統。其中uc/os作業系統是開源**,且小巧而嚴謹,具有很高的實時性,可以作為學習linux等高階作業系統的基礎,實際專案中也經常使用uc/os開發。

基於作業系統程式設計與裸機程式設計的區別

因為學的是控制,剛開始的時候玩的微控制器比較多,微控制器進行開發的乙個重要的特點就是裸機程式設計。也就是說核心跑的完完全全是你的 但是在作業系統上程式設計就完全不一樣,因為你的程式大部分都在呼叫作業系統的介面函式,從而間接的管理硬體。作業系統搭好了框架,實現硬體抽象,檔案儲存管理,程序管理,本質上就...

從裸機到作業系統

開始學習微控制器那是大二時候的事了,當時最為困惑的是為什麼主函式中要是乙個while 1 在windows下寫c語言程式不就是主函式裡面直接寫,到最後return 0不就完了麼。到後來隨著學習的深入,漸漸明白,微控制器下的程式可以認為是乙個單執行緒的程式,只能在這個超級迴圈中往復的執行,最多加一些中...

32位作業系統與64位作業系統的區別

區別一 設計初衷不同 64位系統只能裝在64位電腦上。32位系統可以安裝在32位電腦上或64位電腦上。32位系統裝在64位電腦上會導致電腦無法達到最大效能。區別三 運算速度不同 64位系統資料寬度為64位,32位系統資料寬度為32位。理論上效能相差一倍。區別四 定址能力不同 64位系統優勢還體現在對...