iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
1
自我挑戰組

非本科系也能懂和該懂得作業系統系列 第 13

Day 13 - Thread and Multiple-Threads

  • 分享至 

  • xImage
  •  

了解Process之後,接著要解釋Thread這個非常容易與其混淆的名詞,他們非常相似,卻又有所不同,今天就讓我來好好的解釋Thread的概念、應用時機與優缺點。

Thread是真正使用CPU core的基本單位,基本上每一個CPU core在一個時間點上面能夠執行一個thread的上的instruction,所以多核心的電腦在效能上就快的多。並且在同一個Process底下的threads,會共用相同的code section和data section,意指它們的資料是共用的,雖然共用的data section,但其實每一個thread會有屬於自己的一個private memeory,使其可以做一些獨立的計算。

在多執行緒的使用上非常廣泛,依我個人依照我的經驗提出幾個比較常用的方向:

  • 長時間的運算:像是近年來很紅的AI、挖礦,其實要的運算量很大,除了使用GPU來運算以外,多執行緒也是加速其運算的一種方法,所以才會在中了一些挖礦病毒之後,電腦非常的卡頓,因為CPU資源都被吃了。
  • Server:在伺服器端,需要接收許多不一樣的請求,就像是去銀行辦理業務,會有好幾個櫃檯可幫許多人同時辦理,消化需求的速度才不會太慢,以致於大家都一直在等待。

其實幾乎比較大的Process都會用到多個執行緒,這是我在mac活動監視器裡的數據,可以看到光是Chrome就起了30幾條執行緒。

https://ithelp.ithome.com.tw/upload/images/20190928/20111565R6obYcQ4rm.png

會使用mult-thread的優點如下:

  • 效能:呼應了最一開始對於作業系統的設計,mult-thread可以在同個時間同步的執行任務,並且當某一個部分被block住的時候,其他的Thread還是可以繼續執行。以多工的概念來加速程式的運行。
  • 節省:相較於用多個Process,每個Process都需要有一個PBC,並且使用前面說的方法來彼此溝通,mult-thread因為共用了彼此的code section和data section,在建立、管理和溝通上較為方便,因此本人我如果能用多執行緒解決需求的話,就盡量不會去寫多個Process,維護起來也比較容易。

上一篇
Day 12 - Process Communication
下一篇
Day 14 - Multi-Thread Programming
系列文
非本科系也能懂和該懂得作業系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言