23. 在作業系統(Operating System)中,下列有關執行序(Thread)與行程(Process) 的敘述何者正確?
(A) 一個 Thread 可視為是一個輕量(Light Weight)的 Process
(B) 每個 Thread 都會有自己獨立的記憶體空間和資源
(C) 通常一個 Thread 可以產生多個 Process
(D) 通常 Process 由使用者或應用程式本身負責管理,而 Thread 由作業系統負責管理 int j = 0; while ( cond ) { printf("%d",a[j]); j = j + 1; }
(A) 一個 Thread 可視為是一個輕量(Light Weight)的 Process
(B) 每個 Thread 都會有自己獨立的記憶體空間和資源
(C) 通常一個 Thread 可以產生多個 Process
(D) 通常 Process 由使用者或應用程式本身負責管理,而 Thread 由作業系統負責管理 int j = 0; while ( cond ) { printf("%d",a[j]); j = j + 1; }
答案:登入後查看
統計: A(38), B(8), C(13), D(12), E(0) #3246978
統計: A(38), B(8), C(13), D(12), E(0) #3246978
詳解 (共 4 筆)
#6427086
在作業系統中,執行序(Thread)與行程(Process)是兩種不同的執行單位,但它們密切相關。
讓我們逐一分析各個敘述:
-
(A) 一個 Thread 可視為是一個輕量(Light Weight)的 Process:
- 正確。 行程(Process)是一個獨立的執行環境,包含自己獨立的記憶體位址空間、文件句柄、程序計數器、暫存器等資源。而執行序(Thread)是行程內的執行單位,多個執行序可以共用同一個行程的記憶體位址空間和其他資源。由於執行序之間共用資源,其建立、切換和終止的開銷遠小於行程,因此被稱為「輕量級行程」。
-
(B) 每個 Thread 都會有自己獨立的記憶體空間和資源:
- 錯誤。 這正是執行序和行程的主要區別之一。多個執行序在同一個行程內,會共用該行程的記憶體空間(例如堆疊記憶體 Heap、全域變數)以及其他大部分資源(如檔案句柄)。每個執行序僅擁有自己獨立的堆疊(Stack)、程式計數器(Program Counter)、暫存器(Registers)和執行狀態。
-
(C) 通常一個 Thread 可以產生多個 Process:
- 錯誤。 行程(Process)是作業系統中資源分配的基本單位,它才能產生(或「分叉」)新的行程(子行程)。執行序是行程內部的執行單元。雖然一個執行序可以發出系統呼叫來要求作業系統建立一個新的行程,但從概念上講,是「行程」來產生「行程」,而不是「執行序」直接作為主體來產生多個「行程」。一個行程可以產生多個執行序,一個執行序可以產生同行程內的其他執行序。
-
(D) 通常 Process 由使用者或應用程式本身負責管理,而 Thread 由作業系統負責管理:
- 錯誤。 這是顛倒了管理權責。
- 行程是由作業系統負責創建、排程、分配資源、終止和管理其生命週期。使用者或應用程式只是向作業系統發出請求來啟動或停止行程。
- 執行序的管理則分為兩種:使用者層級執行序(User-level threads)和核心層級執行序(Kernel-level threads)。核心層級執行序由作業系統核心直接管理;使用者層級執行序則由使用者層級的執行緒庫管理,但這些執行緒最終還是映射到核心排程的實體(可能是少數幾個核心執行緒)。因此,無論是哪種,其最底層或最終的管理都是由作業系統負責。
- 錯誤。 這是顛倒了管理權責。
基於以上分析,選項 (A) 是唯一正確的敘述。
答案是 (A)。
0
0