分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
作業系統是很多人每天必須打交道的東西,因為在你開啟電腦的一剎那,隨著bios自檢結束,你的windows系統已經開始執行了。如果問大家作業系統是什麼?可能有的人會說作業系統就是windows,就是那些可以放大、縮小、移動的視窗。對曾經是計算機專業的朋友來說,這個答案還要稍微複雜一些,作業系統可能還有linux、unix、ios、sun solaris、aix等。如果再細化一點,對嵌入式工具比較解的朋友還會有新的補充,因為在他們看來,vxworks、ecos、ucos也都是作業系統,雖然它們好多系統連介面都沒有。
既然作業系統稱之為乙個系統,那麼它必然是由好多的部件組成的。有過linux嵌入式開發經驗的朋友都知道,要想使乙個linux在arm晶元上真正跑起來,它必須有三個部分組成,即boot + 核心 + 檔案系統。而真正核心的東西其實很少,也就是cpu初始化、執行緒排程、記憶體分配、檔案系統、網路協議棧、驅動這些部分組成。那麼是不是所有的晶元都需要跑作業系統呢?我們可以舉個例子。
現在有乙個簡單的溫度測量電路,它由三部分組成:1、微控制器;2、溫度感測器模組;3、無線發射模組。我們設計這麼乙個溫度測量電路其實就是乙個目的,那就是為了實時獲取當前的溫度資訊。那麼,這麼乙個簡單的電路應該怎麼設計程式呢?其實很簡單。
void
sleep
(int value)
}void
main
()}
如果我們需要cpu幹的事情很少,甚至極端一點說只有一件事情,那麼根本沒有設計作業系統的必要。我們設計出作業系統,主要是想在單位時間內完成幾件事情。打個比方來說,你完全可以在工作的時候一遍寫文件、一遍收發電子郵件,偶爾還能開個小差休息一會。 所以作業系統就是為了共享資源而存在的。
說了這麼多,我們需要的的核心**是什麼樣的?其實在我看來,很簡單。它只要滿足下面兩個條件就可以了,
(1)像使用者軟體一樣可以執行;
(2)像使用者軟體一樣可以單步除錯。
要解決這些問題,對linux系統來說上不難解決。要解決os的執行和除錯問題,關鍵就在於如何**中斷和實現os的任務切換。至於任務的開啟、執行和掛起,記憶體分配,互斥量,訊號量,檔案系統,tcp/ip協議棧,gui操作,這些其實都是可以在linux上進行**和操作的,朋友們可以盡請放心。這部分的內容,我們會在以後的部落格中陸續展開。
為了能夠更好地閱讀後面發表的博文,我建議你鞏固一下下面這些知識,這樣會對你的理解有很大的裨益。
(1)cpu 結構,了解中斷流程就行;
(2)linux 組合語言;
(3)函式堆疊格式和內容;
(4)互斥量、訊號量的使用方法;
(5)排程的基本策略;
(6)記憶體分配的基本方法;
(7)tcp/ip socket程式設計;
(8)gui程式設計方法,可以參考windows的方法;
(9)系統中的記憶體布局、編譯原理等等。
給我老師的人工智慧教程打call!
嵌入式作業系統核心原理和開發(中斷)
在我個人看來,中斷是cpu最重要的特色。從某種意義上來說,沒有中斷就沒有嵌入式作業系統。一旦你明白了中斷的真正含義,你對作業系統的了解就算真正入門了。什麼是中斷呢?我們可以看看微控制器下面是怎麼做的。include sbit led p1 6 unsigned int led enable 0 vo...
linux 嵌入式作業系統核心原理和開發總結
01 嵌入式作業系統核心原理和開發 優先順序的修改 02 嵌入式作業系統核心原理和開發 改進的鍊錶記憶體分配演算法 03 嵌入式作業系統核心原理和開發 等值block記憶體池設計 04 嵌入式作業系統核心原理和開發 執行緒狀態 05 嵌入式作業系統核心原理和開發 實時系統中的定時器 06 嵌入式作業...
嵌入式作業系統核心原理和開發(總結篇)
01 嵌入式作業系統核心原理和開發 優先順序的修改 02 嵌入式作業系統核心原理和開發 改進的鍊錶記憶體分配 演算法 03 嵌入式作業系統核心原理和開發 等值block記憶體池設計 04 嵌入式作業系統核心原理和開發 執行緒狀態 05 嵌入式作業系統核心原理和開發 實時系統中的定時器 06 嵌入式作...