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