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