contributed by < HenryChaing >
研讀課程教材
繼上次作業三之後,接著要繼續研究第三週後續的教材。
並行程式設計: 排程器原理
首先講到的是並行程式設計的排程器原理,這裡要研究的排程器是使用者空間的任務排程器,我們會探討多個任務之間的轉換方式以及事件驅動。任務間又分成協同式多工以及搶佔式多工,協同式多工又可解釋成非搶佔式多工,它的 context switch 可以透過 setjmp/longjmp 完成,使用這兩個函式完成的是流程的控制。
而接下來的搶佔式多工,我們會接收 SIGALRM signal 來判別任務需進行切換。這些都是使用者空間進行任務切換的方法,Linux 核心的排程器還會處理到行程間的切換。最後是事件驅動,在 NGINX 當中事件驅動會由執行緒池指派的執行緒完成任務並回傳給行程,因此得知事件驅動有助於解決例行任務以及任務間的護衛效應。
你所不知道的 C 語言:函式呼叫篇