112 中興資工所硬體考點分析
硬體首度獨立成「計算機組織與作業系統」。25 題全單選、每題 4 分、答錯倒扣 1 分,而且有一題直接用中文出。
題型與配分
科目名稱:計算機組織與作業系統(112 年起首度獨立成科),系所「資訊工程學系-甲組」,全卷 6 頁。
| 項目 | 內容 |
|---|---|
| 題數與配分 | 共 25 題,每一題都是單選題,每題 4 分 |
| 計分 | 答錯則該題倒扣 1 分 |
| 作答方式 | 請於答案卡上作答,否則不予計分 |
| 計算器 | 本科目不得使用計算機 |
112 年是中興硬體的分水嶺:
- 科目獨立——從「資訊概論 PART II」變成獨立的「計算機組織與作業系統」
- 計分改成「答錯倒扣 1 分」——與 108 年的 −3、110/111 年的無倒扣都不同
四選一亂猜的期望值 = 0.25 × 4 + 0.75 × (−1) = 1 − 0.75 = +0.25 分 ⇒ 亂猜仍然划算,每一題都要作答(這與 108 年的 −1 期望值完全相反)。
第 7 題直接用中文出題(「如果我們要求程式中某一個變數其起始位址必須為 4 的倍數,請問實現此一要求的技術被稱為?」)——中興硬體八年唯一一次。
記憶體與分頁(第 1、2、5、6、25 題)
| 題號 | 考點 | 要注意的地方 |
|---|---|---|
| 1、2 | 同一條 20 個參考、3 個頁框的參考串,分別跑 LRU 與 Optimal | 兩題合計 8 分卻要跑兩次完整模擬,而且不能用計算器——工作量是全卷最大的。兩者的結果之間有一個必然的大小關係,可以拿來交叉驗算 |
| 5 | 記憶體映射與 TLB 的綜合判斷,找出錯的敘述 | 選項涵蓋 設定記憶體映射是不是「必須」呼叫某個系統呼叫、頁表放在記憶體導致的兩次存取、TLB 沒有 ASID 時的切換成本、反轉頁表為什麼需要 ASID。「必須」這種絕對用語要特別檢查 |
| 6 | valid 與 dirty 位元「誰設定、誰查詢」 | 要分別想清楚這兩個位元在什麼時候被設定、被誰設定,又在什麼時候被誰拿來用。這是全卷最容易記反的一題 |
| 25 | 分頁位址轉換:8 位元邏輯位址、頁面 4 bytes,給一張四項的頁表,判斷四個轉換敘述何者錯誤 | 先由頁面大小切出 offset 與頁號,再查表換成頁框號。誘答的做法是跳過查表那一步 |
程序與執行緒(第 4、12、13、21–23 題)
| 題號 | 考點 | 要注意的地方 |
|---|---|---|
| 4 | 關於區域變數,哪個敘述是錯的 | 要想清楚區域變數放在哪一塊記憶體、那一塊是不是每條執行緒各自一份 |
| 12 | 20 條使用者執行緒對映到 10 條核心執行緒、跑在 8 核電腦上,最多幾條能真正平行 | 要分清「並行」與「平行」,想想真正的平行度被哪一層限制 |
| 13 | printf("a"); fork(); printf("b");(無緩衝)的可能輸出 | 要想清楚 fork() 之前與之後的程式碼各被執行幾次;「無緩衝」這個條件是關鍵 |
第 21–23 題是連動的一組,共用一段 C 程式(含 fork()、execlp()、wait())與一支只做 echo "$0" 的 shell script:
- 21|螢幕上會印出幾個 "k"。要畫出完整的程序樹,並想清楚
execlp()呼叫成功之後,那個程序接下來的程式碼還會不會執行 - 22|除了那些 "k" 之外,螢幕還會印出什麼。全卷設計最精巧的一題:要知道 shell script 裡的
$0對應的是什麼,以及execlp()的參數表裡每一個字串分別會變成被呼叫程式的什麼。四個誘答都是常見的誤解 - 23|程式跑完後
local_var是多少。要追蹤修改local_var的那一行到底會不會被執行、由誰執行,以及 fork 之後父子的變數是什麼關係 - 三題共 12 分,第 21 題答錯後面兩題會跟著錯——是全卷風險最集中的一段
計算機組織(第 15–20、24 題)
| 題號 | 考點 | 要注意的地方 |
|---|---|---|
| 15 | 三種快取失誤的定義,找出錯的 | 選項把三者的定義互相對調,三種失誤的定義要能各寫一句 |
| 16 | 三顆處理器誰的每秒指令數最高 | 要用時脈與 CPI 一起算,時脈最高的那顆不一定最快 |
| 17 | 32 位元二補數的十進位值 | 送分題 |
| 18 | 「硬體不支援某組指令的組合,導致指令無法在該時脈週期執行」叫什麼危障 | 三種危障的定義題 |
| 19 | 「程式傾向參考鄰近最近存取項目的資料」是哪一種區域性 | 時間區域性與空間區域性的定義最常被對調 |
| 20 | 「每個區塊有固定數量(至少兩個)位置可放」是哪一種快取 | 三種對映方式的定義題 |
| 24 | 關於寫入處理,哪個敘述是錯的 | 要知道 write buffer 是哪一種寫入策略的配套、為了解決什麼問題。選項的手法是把主詞換掉。與 108 年第 (9) 題是同一考點的第二次出現 |
系統概念(第 3、7–11、14 題)
| 題號 | 考點 | 要注意的地方 |
|---|---|---|
| 3 | 系統呼叫與 API 的差異,找出錯的 | 要想清楚一個 API 與系統呼叫之間是不是一對一的關係 |
| 7(中文題) | 「要求變數的起始位址必須是 4 的倍數」這項技術叫什麼 | 中興硬體八年唯一一次用中文出題 |
| 8 | 「多個程序並行存取相同資料,結果取決於存取順序」叫什麼 | 定義題 |
| 9 | trap 與 interrupt 的區分,找出錯的 | 要分清兩者的觸發來源與同步性,選項把兩者混在一起 |
| 10 | 號誌與臨界區,找出錯的 | 要想清楚號誌保證的是什麼,臨界區內能不能發生上下文切換 |
| 11 | 輪詢與中斷,找出不正確的 | 兩種機制在 CPU 使用與上下文切換上的差別 |
| 14 | DMA 的四個敘述有幾個為真 | 涵蓋 CPU 需不需要關心傳輸時間、DMA 與 CPU 競爭匯流排的現象叫什麼、CPU 能不能平行做其他事、DMA 能卸載哪些昂貴的記憶體操作。題目問的是「有幾個」,四項都要逐一判斷,不能挑一個就收手 |
這份考卷的難點
- 第 6 題的「誰設定、誰查詢」方向極容易搞反。 valid 與 dirty 兩個位元的設定者與查詢者不同,這一題就是拿這個對稱性出錯選項。
- 第 9 題的 trap 與 interrupt 定義。 選項把兩者的觸發來源混在一起。
- 第 1、2 題要對 20 個頁號跑兩次完整模擬(LRU 與 Optimal),而且不能用計算器。8 分但工作量是全卷最大的。
- 第 21 題的
execlp():漏掉它的效果會多算好幾個 "k"。 - 第 22 題要看懂
exec系列的參數表。 四個誘答全都是常見的誤解。 - 第 21–23 題是連動題組,第 21 題答錯後面兩題也會跟著錯。 三題共 12 分,一定要先把程序樹完整畫出來再作答。
準備建議
- 計分是「答錯 −1」 ⇒ 亂猜的期望值是 +0.25 分 ⇒ 每一題都要作答。這與 108 年(答錯 −3、期望值 −1)完全相反,務必看清當年度的規則
- valid 與 dirty 位元的「設定者/查詢者」(第 6 題),要能分別說出
- trap 與 interrupt 的區分(第 9 題)
- 三種快取失誤的定義(第 15 題)
- 每秒指令數的比較(第 16 題)
exec系列函式(第 21、22 題):呼叫成功後程序會怎樣、參數表怎麼對應到argv,是 fork 題最常見的陷阱- 寫入政策的配套關係(第 24 題)。108 年第 (9) 題已經考過一次,屬於重複出題
- 分頁位址轉換要練到能直接切位元(第 25 題),別跳過查表那一步
- 頁面置換要練到 20 個頁號、3 個頁框能在 3 分鐘內跑完 LRU 與 Optimal 兩種