Linux

Linux不區分程序和執行緒嗎?

  • December 31, 2018

據我所知,在 Linux 核心中,

  • 該結構task_struct代表執行緒,即輕量級程序,但不是程序。
  • 程序不由任何結構表示,而是由共享相同執行緒組 id 的執行緒組表示。

那麼作業系統概念中的以下內容是否正確?

clone()Linux 還提供了使用系統呼叫創建執行緒的能力。但是,Linux 不區分程序和執行緒。事實上,Linux 使用術語任務——而不是程序或執行緒——來指代程序中的控制流。

這是什麼意思?

謝謝。

相關Linux 如何區分執行緒和子程序?

Linux 還提供了使用 clone() 系統呼叫創建執行緒的能力。但是,Linux 不區分程序和執行緒。事實上,Linux 使用術語任務——而不是程序或執行緒——來指代程序中的控制流。

我們需要區分實際的實現和你看到的表面。

從使用者(系統軟體開發人員)的角度來看,有一個很大的區別:執行緒共享許多公共資源(例如記憶體映射 - 當然,除了堆棧 - 文件描述符)。

在內部(警告:不精確的手動參數)Linux核心1)正在使用它手頭的東西,即程序和執行緒的相同結構,對於單個程序的執行緒,它不會複製某些東西,而是引用單個實例(記憶體映射描述)。

因此在直接表示執行緒或程序的層面上,基本結構沒有太大區別,關鍵在於如何處理資訊。

您可能有興趣閱讀Linux 上的執行緒是作為程序實現的嗎?


1)請記住,如今“Linux”主要代表整個作業系統,而實際上它只是核心本身。

引用自:https://unix.stackexchange.com/questions/491664