OS類型
操作系統OS分為
- 實時操作系統RTOS:FreeRTOS、uc/os ii、uc/os iii
- 通用操作系統GPOS:windows、Linux
兩者最大的區別在於針對任務而言,是不是實時(real-time)的。RTOS對於重要的任務可以做到實時響應,主要是通過優先級和中斷方式,對優先級高的任務實時響應;而GPOS則是所有的任務都能被均等地對待。
所有操作系統最核心的,就是完成對任務的調度,調度機制是什么。
進程的管理
任務的調度,在OS里面又叫做進程的管理。
進程狀態的切換,可以看作是每一個任務的生命周期。
為什么我們在windows中,運行多個軟件,看起來像同時執行一樣,其實這涉及到時間片輪調度法。
時間片輪轉法(Round-Robin,RR)主要用於分時系統中的進程調度。為了實現輪轉調度,系統把所有就緒進程按先入先出的原則排成一個隊列。新來的進程加到就緒隊列末尾。每當執行進程調度時,進程調度程序總是選出就緒隊列的隊首進程,讓它在CPU上運行一個時間片的時間。時間片是一個小的時間單位,通常為10~100ms數量級。當進程用完分給它的時間片后,系統的計時器發出時鍾中斷,調度程序便停止該進程的運行,把它放入就緒隊列的末尾;然后,把CPU分給就緒隊列的隊首進程,同樣也讓它運行一個時間片,如此往復。
只是人反應不過來,我們誤以為是同時進行。
GPOS工作過程概述
windows工作過程
- BIOS啟動。作用主要有兩個:1)一些自檢,必須的硬件驅動初始化(硬盤初始化等);2)調度windos操作系統,windos操作系統是存儲在硬盤(一般為C盤做系統盤)上面,每次開機把OS拷貝到內存里面后,OS正常運行
- windows運行后,對所有的硬件驅動程序與文件系統做映射,映射完后就能完全運行我們的應用程序。
文件系統
我們的各種應用程序都是存在硬盤上的,那么必然要對這些程序規划和管理。怎么存,存在哪里,什么時候修改或者丟棄等,這就是文件系統的工作。
文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。
文件系統是一種軟件機構。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,當用戶不再使用時撤銷文件等。
類似地,在Linux里面,叫做 根文件系統。
Linux工作過程
和windows類似,嵌入式Linux系統主要包括:
-
bootloader啟動(常見的是u-boot)。和bios作用類似也分為兩部分:1)對必須的硬件初始化;2)去Flash、SD卡等設備上調度Linux內核,並啟動她。
-
Linux內核(含有驅動程序):提供進程管理、文件管理、硬件驅動等
-
根文件系統上:系統運行必須的文件和程序;APP。
windows和Linux對比
1.訪問權限
Linux代碼開源,我們可以修改源代碼,但是windows一般情況下不行。
2.多樣性
類比arm公司,把內核IP賣給各個開發商,比如ST,NXP等去開發MCU;Linux內核也是一樣,每個公司拿過去做了各種各樣的演變,產生很多發行版。現在常用的發行版有Ubuntu、Fedora、Debian等,而windows幾乎不這么做。
3.授權許可
Linux基於GPL-licensed (通用公共許可)操作系統,用戶可以免費更改軟件,重復使用操作系統,甚至出售演變版本。
windows只能在微軟授權下訪問源代碼,基於number of licenses 許可證編號,我們只能在這些編號的電腦上安裝。