.Net非同步程式設計的相關概念

  • 1355
  • 0

摘要:.Net非同步程式設計的相關概念

下文悉數摘錄自Operating System Concepts,8th Edition,International Student Edition,雖然並未與.Net Framework的非同步設計有直接的相關,但是在閱讀.Net Framework的非同步設計的原文網頁時,會遇到許多相同術語與類似的觀念,我在此收錄如下:
 
Multithreaded Programming的益處
1、Responsiveness:縮短回應使用者互動的時間。
2、Resource sharing:在相同的address space中,同一個應用程式可以有多個不同的threads運作。
3、Economy:建立一個process所必須配置的記憶體和資源所費不貲。但是多個threads共享同一個process的資源,所以符合經濟效益。
4、Scalability:multiprocessor的架構可以大幅放大multithreading的優點。[1]
 
Multicore Programming
1、Dividing activities:將task切割成為分離或者concurrent的tasks。
2、Balance:依據每一個task對完成process的貢獻決定如何分配至不同的execution core。
3、Data splitting:被各個task存取和處理的資料也隨task被分割至不同的cores。
4、Data dependency:具有資料相依性的tasks必須被synchronized。
5、Testing and debugging:在multiple cores中平行執行的程式有多種執行順序的排列,所以較難測試和偵錯。[2]
 
Multithreading Models
在由operating system負責管理的kernel threads與由程式設計師負責引用軟體開發套件的user threads之間的對應關係,包含many-to-one model、one-to-one model與many-to-many model,其中,many-to-many model包含一種特例,也就是two-level model,two-level model同時包含one-to-one model與many-to-many model。[3]
 
Thread Pools
在web server中,依據硬體配備規格等因素決定事先建立的thread的數量(避免耗盡所有系統資源),並且配置在thread pool中待命(已縮短系統回應時間)。[4]
 
Process scheduling
將CPU-bound task與IO-bound task交錯運作,錯開CPU burst與IO burst,以達到類似突破效能與頻寬的瓶頸。[5]
 
Scheduling Criteria
1、CPU utilization:盡可能地提高cpu的使用率(大約介於40%~90%之間)。
2、Throughput:每一個單位時間完成的process數量。
3、Turnaround time:每一個process各自耗費多少時間完成任務。
4、Waiting time:process待命接受任務的時間。
5、Response time:回應使用者互動的時間。[6]
 
Thread scheduling
主要在探討user-level與kernel-level threads之間的排程議題。[7]
 
Approaches to Multiple-Processor Scheduling
多處理器的排程方法有二:
1、asymmetric multiprocessing:由單一處理器存取結構資料,並負責排程,以減少資料共享的需求。
2、symmetric multiprocessing:每一個處理器都是self-scheduling。[8]
 
Processor Affinity
當process由第一個processor遷徙至第二個processor時,必須將資料填入第二個processor的cache memory,並且將清除第一個processor的cache memory,導致效能產生多餘的耗損。所以一個process對於目前正在執行本身的processor具有affinity。
processor affinity包含下列二種:
1、soft affinity:企圖使process在同一個processor運作,但不保證一定如此。
2、hard affinity:保證一個process不會由一個processor遷徙至另外一個processor。[9]
 
Load Balancing
在symmetric multiprocessing,SMP中,load balancing企圖使所有的工作負載被平均的分配至所有的processors。當所有的processors共用一個common run queue時,就不需要load balancing,但是若各個processor有自己專屬的private queue時,就需要load balancing。load balancing的常用方法有二:
1、push migration:將負載過重(超過臨界值)的processor的private queue中的process移動到負載較輕或者閒置的processor的private queue。
2、pull migration:當processor的private queue已經清空(所有的process已經處理完畢),則主動將其他的processor的private queue中的process移動至目前的processor的private queue。[10]
 
Multicore Processors
Multicore processors具有複雜的排程問題,於是當一個processor開始存取記憶體之後,必須等待一段長度顯著的時間才能使用記憶體的資料,此即為memory stall。memory stall發生的原因眾多,例如cache miss(企圖存取的資料不在cache memory)。為了解決此一問題,硬體製造商推出multithreaded processor cores,也就是至少有二個hardware threads被指定在每一個core中。換而言之,倘若一個processor有四個cores,每一個core有二個hardware threads,則代表有八個logical processors。
至於multithread對應到processor的方式有二:
1、coarse-grained multithreading:在processor上執行的thread遭遇到一個long-latency,例如memory stall。導致processor必須切換到不同的thread,但是必須付出效能產生多餘的耗損的代價,例如instruction pipeline必須先清空,然後再重新載入新的instruction。
2、fine-grained multithreading:包含thread切換的邏輯,所以在效能產生多餘的耗損的情境下,相對付出較少的代價。[11]
 
 
[1]Operating System Concepts,8th,p155
http://www.isbns.net/isbn/9780470233993
 
[2]Operating System Concepts,8th,p156
http://www.isbns.net/isbn/9780470233993
 
[3]Operating System Concepts,8th,p157
http://www.isbns.net/isbn/9780470233993
 
[4]Operating System Concepts,8th,p168
http://www.isbns.net/isbn/9780470233993
 
[5]Operating System Concepts,8th,p184
http://www.isbns.net/isbn/9780470233993
 
[6]Operating System Concepts,8th,p187
http://www.isbns.net/isbn/9780470233993
 
[7]Operating System Concepts,8th,p199
http://www.isbns.net/isbn/9780470233993
 
[8]Operating System Concepts,8th,p202
http://www.isbns.net/isbn/9780470233993
 
[9]Operating System Concepts,8th,p202
http://www.isbns.net/isbn/9780470233993
 
[10]Operating System Concepts,8th,p203
http://www.isbns.net/isbn/9780470233993
 
[11]Operating System Concepts,8th,p205
http://www.isbns.net/isbn/9780470233993