這裏引用百度百科,先說一下進程:web
進程(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操做系統結構的基礎。在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。——百度百科 算法
咱們不妨把進程當作計算機處理的一個單元,這個單元有不少不少的屬性,固然每一個進程確定是有優先級的,進程的優先級是根據必定算法來的,計算機按進程的性質或其長度,或是按做業的來源等,指定其優先級app
每一個進程都有相應的優先級,優先級決定進程什麼時候運行、接收多少CPU時間。優先級共32級,是從0 到31的數值,稱爲基本優先級別(Base Priority Level)。系統按照不一樣的優先級調度進程進行運行。0-15 級是普通優先級,進程的優先級能夠動態變化,高優先級進程優先運行,只有高優先級進程不運行時,才調度低優先級進程運行,優先級相同的進程按照時間片輪流運行。16-31級是實時優先級,實時優先級與普通優先級的最大區別在於實時優先級中相同優先級進程的運行不按照時間片輪轉,而是先運行的進程就先控制CPU,若是它不主動放棄控制,同級或低優先級的進程就沒法運行。 ide
進程分爲3個狀態:就緒狀態(Ready),進程已得到除處理器外的所需資源,等待分配處理器資源,只要分配了處理器進程就可執行;運行狀態(Running),進程佔用處理器資源,處於此狀態的進程的數目小於等於處理器的數目;阻塞狀態(Blocked),此時進程在等待資源或某種條件(如I/O操做或進程同步),在資源或條件知足以前該進程是沒法被執行的,即便把處理器資源分配給該進程,也沒法運行。 spa
3個狀態根據必定的機制和觸發條件能夠互相切換。操作系統
計算機把全部就緒狀態的進程放在一個就緒隊列裏,當咱們的處理機完成一項進程準備進行下一項進程時,這裏就會用調度機制來調度下一個進程進入處理機。線程
那麼計算機是根據什麼樣的機制或者說是算法來調度進程進入處理機呢(調度的算法多種多樣,根據不一樣的需求採起不一樣的方法,我想說說比較有表明性的)?設計
在批處理系統中,用的比較多的是先進先出算法(FIFO,First In First Out)和短進程優先算法(SJF,Shortest Job First)。分時系統中,用的比較多的是時間片輪轉算法(RR,Round Robin)。算法的具體執行過程自行百度。調試
這些算法會根據本身的算法特性給就緒隊列中的進程分配優先級,這就是咱們說的進程調度優先級。這些算法基於進程的優先級,再根據本身的算法特性作適當的調試。 好比咱們採用先進先出,那麼怎麼判斷進程的前後順序,則根據進程的基本優先級來肯定的。orm
這樣,在不一樣需求的場合中,咱們採起不一樣的調度方法來達到咱們想要的進程處理機制