作業系統可以依照子系統的架構分成幾種類型。下圖顯示作業系統的架構,四個虛線矩形(分別標記為A、B、C、D)位於applications layer、system services layer、kernel layer、hardware layer。
請回答下列各種作業系統類型中,所選取的子系統位於圖中的哪個位置(A、B、C或D)。
(a) (2 pts) 在MS-DOS(monolithic operating systems)中,memory management services會位於哪裡? (b) (3 pts) 在Linux(layered operating system)中,standard I/O libraries會位於哪裡? (c) (2 pts) 在Container(virtualized operating systems)中,scheduling services會位於哪裡? (d) (3 pts) 在Mach/QNX(micro-kernel operating systems)中,device driver會位於哪裡?

參考答案與解析
(a) C(Kernel)。記憶體管理是任何作業系統設計中最核心的kernel功能,即使在monolithic系統裡沒有獨立的system services層,記憶體管理仍歸屬kernel本體。
(b) B(System Services,與System Libraries同層)。standard I/O libraries(如stdio)是使用者空間的函式庫,透過system call呼叫kernel功能,屬於system services層而非kernel本身。
(c) C(Kernel)。CPU排程是核心的kernel功能,即使在容器化/虛擬化環境下,實際排程仍由host kernel執行。
(d) B(System Services)。微核心(micro-kernel)設計的核心精神就是把device driver等服務移出kernel、放到使用者空間執行(作為獨立的server/服務),這正是微核心與monolithic kernel的關鍵差異。