![]() |
|
Linux下多任務系統(tǒng)之進程的基本概念 |
|
多任務的概念人們已經(jīng)非常熟悉了,它是指用戶可以在同一時間內(nèi)運行多個應用程序。Linux就是一種支持多任務的操作系統(tǒng),它支持多進程、多線程等多任務處理和任務之間的多種通信機制。 多任務處理是指用戶可以在同一時間內(nèi)運行多個應用程序,每個應用程序被稱做一個任務。Linux就是一個支持多任務的操作系統(tǒng),它比單任務系統(tǒng)的功能增強了許多。 當多任務操作系統(tǒng)使用某種任務調(diào)度策略允許兩個或更多進程并發(fā)共享一個處理器時,事實上處理器在某一時刻只會給一個任務提供服務。由于任務調(diào)度機制保證不同任務之間的切換速度十分迅速,因此給人多個任務同時運行的錯覺。多任務系統(tǒng)中有3個功能單位:任務、進程和線程,下面分別進行介紹。 進程的基本概念 進程是指一個具有獨立功能的程序在某個數(shù)據(jù)集上的一次動態(tài)執(zhí)行過程,它是系統(tǒng)進行資源分配和調(diào)度的基本單元。一次任務的運行可以并發(fā)激活多個進程,這些進程相互合作來完成該任務的一個終目標。 進程具有并發(fā)性、動態(tài)性、交互性、獨立性和異步性等主要特性。 并發(fā)性:指的是系統(tǒng)中多個進程可以同時并發(fā)執(zhí)行,相互之間不受干擾。 動態(tài)性:指的是進程都有完整的生命周期,而且在進程的生命周期內(nèi),進程的狀態(tài)是不斷變化的。另外,進程具有動態(tài)的地址空間(包括代碼、數(shù)據(jù)和進程控制塊等)。 交互性:指的是進程在執(zhí)行過程中可能會與其他進程發(fā)生直接和間接的交互操作,如進程同步和進程互斥等,需要為此添加一定的進程處理機制。 獨立性:指的是進程是一個相對完整的資源分配和調(diào)度的基本單位,各個進程的地址空間是相互獨立的,只有采用某些特定的通信機制才能實現(xiàn)進程間的通信。 異步性:指的是每個進程都按照各自獨立的、不可預知的速度向前執(zhí)行。 進程和程序是有本質(zhì)區(qū)別的:程序是靜態(tài)的一段代碼,是一些保存在非易失性存儲器的指令的有序集合,沒有任何執(zhí)行的概念;而進程是一個動態(tài)的概念,它是程序執(zhí)行的過程,包括動態(tài)創(chuàng)建、調(diào)度和消亡的整個過程,它是程序執(zhí)行和資源管理的小單位。 Linux系統(tǒng)中包括以下幾種類型的進程。 交互式進程:這類進程經(jīng)常與用戶進行交互,因此要花很多時間等待用戶的交互操作(鍵盤和鼠標操作等)。當接收到用戶的交互操作后,這類進程應該很快被運行,而且響應時間的變化也應該很小,否則用戶就會覺得系統(tǒng)反應遲鈍或者不太穩(wěn)定。典型的交互式進程有shell命令進程、文本編輯器和圖形應用程序運行等。 批處理進程:這類進程不必與用戶進行交互,因此經(jīng)常在后臺運行。因為這類進程通常不必很快地響應,因此往往受到調(diào)度器的“慢待”。典型的批處理進程有編譯器的編譯操作、數(shù)據(jù)庫搜索引擎等。 實時進程:這類進程通常對調(diào)度響應時間有很高的要求,一般不會被低優(yōu)先級的進程阻塞。它們不僅要求很短的響應時間,而且更重要的是響應時間的變化應該很小。典型的實時進程有視頻和音頻應用程序、實時數(shù)據(jù)采集系統(tǒng)程序等。 本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發(fā)》 熱點鏈接:
1、Linux下多任務系統(tǒng)之任務介紹 |