Process
可能導致正在執行的程序自願或非自願放棄CPU的原因?
可能導致正在執行的程序自願或非自願放棄CPU的原因是什麼?因為任何時候只有一個程序可以在 CPU/Core 中執行。
大多數係統呼叫(主要是那些將程序放入服務隊列的系統呼叫)導致核心調度程序獲取下一個最緊急的程序並使其執行。對於多核來說稍微複雜一些,並且可以將程序分配給特定的核心或 CPU。
處理器時間也在最大時隙中分配,並且在每個時鐘滴答聲中,調度程序都會檢查目前程序是否已用完其整個時間片。如果是這樣,它被掛起(即不從滴答中斷返回)並且它的臨時nice值增加,因此它離調度隊列的頭部更遠。這確保了執行頻繁 I/O 的程序獲得大量短時隙,而 CPU 佔用者獲得一些長時隙。
所有這些都描述了相當早期的 Unix 系統(因為我最近沒有在那個級別工作),但它可能沒有太大變化。您無法對原始設計進行太多改進。