地方政府公務人員四等-資訊處理類科計算機概要113 年第 30 題單選題
比較兩種程序間通訊(inter-process communication)的實作方式:訊息傳遞(message passing)與共享記憶體(shared memory),下列敘述何者錯誤?
A在分散式系統中訊息傳遞式的程序間通訊較容易實作
B在資料量較大的情況下共享記憶體式的程序間通訊較為快速
C為避免作業系統的核心資料結構混淆,一個作業系統中,兩種程序間通訊的方式只能擇一實作正確答案
D程序間使用共享記憶體式的程序間通訊之前,需要透過使用系統呼叫(system call)來建立共享的記憶體區間
C正確答案
IPC 兩種方式可並存,作業系統通常同時提供 message passing 與 shared memory,不必擇一。
為什麼答案是 C
錯誤敘述(即本題答案)。實際上 Linux、Windows 等主流 OS 都同時提供兩種 IPC 機制(如 pipe、socket 屬訊息傳遞;shmget、mmap 屬共享記憶體),兩者使用獨立的核心資料結構,不會互相混淆。
載入中…
完整詳解
Pro · 無限重點 IPC 兩種方式可並存,作業系統通常同時提供 message passing 與 shared memory,不必擇一。
看到「只能擇一」「一定」「必須」這種絕對化敘述,9 成是錯的,直接選 C。
逐選項分析
A✕
正確敘述。分散式系統中各節點不共享實體記憶體,shared memory 難以跨機器實作;message passing 透過網路封包傳遞,天生適合分散式環境(如 RPC、MPI)。
B✕
正確敘述。shared memory 建立後資料直接讀寫共享區,不必經 kernel 轉送;message passing 每次都要 system call 進入 kernel,大量資料時 context switch 成本高,故 shared memory 較快。
C✓ 正確
錯誤敘述(即本題答案)。實際上 Linux、Windows 等主流 OS 都同時提供兩種 IPC 機制(如 pipe、socket 屬訊息傳遞;shmget、mmap 屬共享記憶體),兩者使用獨立的核心資料結構,不會互相混淆。
D✕
正確敘述。共享記憶體區段須先由 kernel 分配並建立 mapping,必須透過 system call(如 shmget、shmat、mmap)取得,之後才能直接存取,省下後續 kernel 介入。
Message Passing vs Shared Memory
| 比較項 | Message Passing | Shared Memory |
|---|
| 實作難度 | 簡單 | 較複雜(需同步機制) |
| 效能(小資料) | 尚可 | 需建立成本 |
| 效能(大資料) | 較慢(多次syscall) | 較快(直接讀寫) |
| 分散式適用 | ✅ 容易 | ❌ 困難 |
| 同步問題 | OS 處理 | 需自行 mutex/semaphore |
| 典型範例 | pipe、socket、MPI | shmget、mmap |
C 選項用「只能擇一實作」這種絕對化字眼設陷阱。實務上 OS 是「我全都要」——兩種 IPC 機制是互補關係,由獨立的 kernel 子系統管理,不會混淆核心資料結構。考試遇到「只能、必須、一定」這類絕對詞要特別警覺。