2013-12-18 31 views
0

我可以用一個例子更好地解釋這個問題,所以我正在使用它?線程是否在用戶進程中獲得自己的時間片?

假設我們的系統是循環調度系統,每個時間間隔執行10ms。如果我們在程序中創建了兩個線程,每個線程都會執行10ms,或者兩個線程都執行10ms?

如果他們組合了10ms,那麼誰管理線程之間的上下文切換?

注:我不是在說這裏的內核線程。

+0

我想,既然每個線程視爲一個任務,所以每個線程將獲得它自己的時間片即10毫秒的時間間隔。切換基於時間片進行。 –

回答

0

在Linux中,線程與系統中的每個其他線程競爭CPU。在POSIX術語中,線程具有系統爭用範圍。

因此,對於您的示例,每個線程將獲得10ms。

您可以通過檢查:

  1. 試圖設置(通過pthread_attr_setscope)的爭用範圍屬性PTHREAD_SCOPE_PROCESS - 應該導致錯誤。
  2. 通過pthread_getattr_np獲得一個線程attrbutes並通過pthread_attr_getscope是 爭範圍檢查是PTHREAD_SCOPE_SYSTEM
0

是他們也確實有一個時間片。

在linux中,線程vye用於內存,CPU等資源或正在等待發生某些I/O事件。這些線程根據資源的可用性經歷各種狀態,如空閒,活動,準備就緒。這一切工作都由「流程管理子系統」來完成,流程管理子系統由流程調度器組成,並管理流程執行及其狀態。 也可以操作進程可以保存像CPU這樣的資源的時間段。 或者進程的優先級可以改變(例如「nice」)。

-Sumeet

相關問題