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