Thread
POSIX 是否定義了上下文切換?
POSIX 上下文切換是否定義明確?這與在 C 中切換執行緒是一樣的嗎?C 編譯器是否可以為上下文切換生成所有內容,或者切換執行緒或切換“上下文”的常式仍然需要彙編程式嗎?是否甚至定義了“上下文”的含義-它與執行緒不一樣嗎?
POSIX 使用術語上下文切換至少有兩個不同的目的,沒有試圖嚴格定義它(甚至沒有提供定義):
- 線上程之間切換,以及
- 程序間切換
相反,POSIX 假設您已經知道該術語的含義。例如,
執行程序或執行緒所花費的時間,包括代表該程序或執行緒執行系統服務所花費的時間。如果支持 Threads 選項,則程序的 CPU 時間時鐘的值是實現定義的。使用這個定義,一個程序中所有執行緒的所有執行時間的總和可能不等於程序執行時間,即使在單執行緒程序中也是如此,因為實現在上下文切換期間或其他原因的時間計算方式上可能有所不同.
進一步閱讀:
- 執行緒上下文切換 vs 程序上下文切換
- 系統呼叫和上下文切換
- 硬體中斷(以及無操作循環之謎)造成的上下文切換成本,Dan Tsafir
- 經過驗證的 C 程式核心、Starostin 和 Tsyban的程序上下文切換