2014年4月5日 星期六

Multithreading v.s. Multitasking v.s. Timesharing

程式具有多工(Multitasking) 多重處理(Multiprocessing)的能力 


什麼是執行緒 ?

n  支援多重處理的執行控制機制,它可以執行程式中任何一組相關且可與程式中其它部分多重並行處理程式片斷



執行緒具有以下幾個基本特徵:

n  不是完整的程式。
n  隸屬於同一個程式的執行緒必需共享系統分配給所屬主程式的資源(如記憶體空間、CPU時間等)
n  每一個執行緒都有自己的執行堆疊程式計數器
n  程式可以設定執行緒的執行優先順序及所隸屬的執行緒群組
n  每個執行緒於程式執行時的可能狀態有:bornreadyrunningblockedsuspendsleepingwaitingdead

何謂執行緒 ? 
n  在介紹執行緒之前,必須先了解什麼是行程Process)。

n  所謂行程是指作業系統執行每個應用程式的流程,作業系統會分配足夠的記憶體空間與CPU時間給每個行程。而因為每個應用程式不一定會佔用CPU的所有時間,為了充分使用CPU時間,避免有CPU閒置的情況,所以衍生出多執行緒的概念。

單一執行緒:
  n  所謂單一執行緒(Thread)是指應用程式在一個行程中只能處理一項工作,也就是說同一個時間點只能執行一道指令,必須等前一項工作執結束。

多執行緒與多工
n 所謂多執行緒是指應用程式在一個行程中可以同時處理多項工作,而每一個行程都是各自獨立的,不會互相干擾。

n 利用多執行緒可以讓應用程式的行程共享CPU記憶體空間與時間,善加利用CPU的閒置時間,有效率的執行程式,而多執行緒其實就是模擬多工功能而發展出來的概念。

多工與多執行緒相異處:
n 多工是在Windows作業系統中常見的特性,舉例來說,作業系統可以同時執行瀏覽器、Word、小畫家等多個應用程式。

n 多工與多執行緒不同之處在於,多工是指同一個時間執行多個應用程式;而多執行緒是指同一個時間執行同一個應用程式中的多個行程,例如:Word文件可以同時做編輯、翻譯與列印等行程,在傳統的單一執行緒環境裡,必須等待前一個行程執行完畢才可以繼續執行下一個行程,但是在多執行緒環境中,卻可以同時執行這些程式。


簡單的說,多工(Multitasking)可以在同一時間執行多個任務,我們大部分的PC和筆記本電腦的擁有多核心處理器(i2i3i5i7)。因此,擁有同一時間執行多個任務的能力。

分時系統Time-Sharing System

      「分時系統」是指一個電腦主機或中央電腦連接多個終端機,讓許多使用者幾乎同時來使用線上即時系統;它必須具備有線上作業、即時、伸縮性、整體性、及獨立性等待性。 


  在分時系統的電腦環境裡,雖然同時有許多使用者從事交談式的工作,卻給每個人都有專用電腦的感覺。這種功能的實現,不僅電腦本身必須是高效能的系統,而且要有適當的程式執行控制,使得系統對每位使用者的要求都有迅速的反應,以便讓每個交談式的作業不致於有停滯的現象發生。


      系統中同時會有數個要執行的程式,每一個程式會被系統發給一段使用處理器的時間配額(time quantum),經過這個時段之後,如果這個程式仍然在執行的話,系統會切斷其執行,把處理器移轉給另一個程式使用。如此一來,可以盡量讓系統中的每一個程式都有公平執行的機會。若兩個執行時段間短到無法讓使用者察覺到的話,那麼雖然程式的執行是斷斷續續的,使用者卻會以為是只有他的程式在執行。   由於電腦所要處理的作業,有交談式的或批次的、有工作量大的或小的等等不同性質。為因應這些要求,系統可採取不同的分時方式。至於這些分時方式的差異性,基本上是在時間配額與程式執行優先次序的變化。常見的方式有下列幾種:


      1.循環輪流式(round robin):每一個程式的時間配額及優先權是固定而且相同的,因此某個程式在用完它的時間配額或是因其他因素在配額用完之前被暫停之後,就得等其他程式全部輪過後,才再次獲有執行權。至於時間配額的長短,必須適當;若太短,則系統會因大部分時間都在作程式轉移,而降低了執行效能,但若太長,對個別程式而言,兩次執行的間隔太長則造成緩慢的反應,而無法符合交談式的作業要求。

      2.優先安排法(priority scheduling):依照工作任務的重要或性質,賦與不同的執行優先權,系統總是讓高優先權的程式先執行;但為避免高優先權的程式霸占處理器,而使得低優先權的程式苦等,因而每經過一段時間,即一鐘刻(clock tick),會逐次降低正執行程式的優先權,一旦此程式的優先權降到比擁有次高優先權的程式低時,便會轉移執行權。因此,雖然系統中的所有程式每一次仍發給固定相同的時間配額,但因為優先權的高低變化,使得實際上每個程式每一次可執行的時間都會不一樣。

      3.最短工作先執行(shortest job first):如果事先可預測每項工作的執行時間長短,則讓所需執行時間最短的工作先執行,這樣的話,就不會因執行時間長的工作而延誤了執行時間短的工作。這種執行方式會使工作的平均反應時間縮短。雖然執行時間長的工作會在系統內待更久的時間,但就工作性質來說,交談式的作業通常執行時間比批次作業來得短,所以交談式作業獲得最快的反應,而批次作業的反應快慢反正並不是很重要。因此,這種方式可以說是最佳的。






參考資料 : 國家教育研究院-http://terms.naer.edu.tw/detail/1302850/?index=2










沒有留言:

張貼留言