地方政府公務人員四等-資訊處理類科計算機概要113 年第 26 題單選題
關於多執行緒(multi-threading)模式中的多對一(many-to-one)模式,下列敘述何者正確?
A使用多對一的多執行緒模式時,當一個程序(process)中的一個執行緒(thread)被阻擋(blocked)時,同程序中的其他的執行緒亦無法執行正確答案
B多個核心執行緒(kernel threads)映對到同一個使用者執行緒(user thread)
C在多核心系統中,一個程序使用多對一的多執行緒模式,將可同時使用多個核心
D在多核心處理器架構日漸普及下,多對一模式已成為主流的多執行緒系統的實作方式
A正確答案
多對一模式將多個使用者執行緒對應至單一核心執行緒,任一執行緒阻塞將導致整個程序阻塞,且無法多核平行。
為什麼答案是 A
多對一模式下,多個使用者執行緒共用一個核心執行緒,若其中一個執行阻塞呼叫,核心執行緒被阻擋,其他執行緒也隨之停擺。
載入中…
完整詳解
Pro · 無限重點 多對一模式將多個使用者執行緒對應至單一核心執行緒,任一執行緒阻塞將導致整個程序阻塞,且無法多核平行。
記住「多對一」是「多個User Thread對1個Kernel Thread」,只要1個卡住全部停擺,且無法多核平行處理。
逐選項分析
A✓ 正確
多對一模式下,多個使用者執行緒共用一個核心執行緒,若其中一個執行阻塞呼叫,核心執行緒被阻擋,其他執行緒也隨之停擺。
B✕ 陷阱
敘述顛倒。應為「多個使用者執行緒映對到同一個核心執行緒」,而非多個核心映對到一個使用者。
C✕
因僅對應到單一核心執行緒,作業系統只會將其排程到一個核心上,無法同時使用多個核心進行平行處理。
D✕
多對一模式無法發揮多核心優勢且易全面阻塞,目前主流作業系統多採用一對一或多對多模式。
多執行緒模型比較
| 模型 | 對應關係 | 阻塞影響 | 多核平行 |
|---|
| 多對一 (Many-to-One) | 多個User Thread -> 1個Kernel Thread | 一個阻塞,全部阻塞 | 不支援 |
| 一對一 (One-to-One) | 1個User Thread -> 1個Kernel Thread | 僅阻塞該執行緒 | 支援 |
| 多對多 (Many-to-Many) | 多個User Thread -> 多個Kernel Thread | 僅阻塞該執行緒 | 支援 |
選項B故意將「使用者執行緒」與「核心執行緒」的數量關係寫反。多對一是指「多個使用者」對應「一個核心」,切勿被名詞順序混淆。