考點分析 / 台大 / 108

108 台大資工所硬體考點分析

計結段用「排序難度」考例外與中斷處理,OS 段用 fork/vfork 的位址與變數值追蹤,最後以雙十一搶購情境收尾。

題型與配分

科目:計算機結構與作業系統(B),題號 412、節次 2,全卷 100 分、5 頁、8 大題。試題隨卷繳回。

區段題號配分形式
Part I:Computer Architecture1–650%是非 2 題+單選 3 題+申論(ISA、例外中斷、平行、多核)
Part II:Operating System7–850%(各 25 分)全部手寫申論

手寫申論卷、不倒扣。 卷子開頭第一句就印著「題目會刻意給多餘或缺漏的條件,必要時請自行補上假設」——106、107 年放在 Part II 開頭,108 年直接放到全卷最前面。

第 6(a) 題明訂「You get 0 point if you don't explain」——只表態不解釋,零分。

Part I:計算機結構(1–6,50 分)

  • 第 1 題(4%,是非)|兩個敘述:
  • (a) 2%|「軟體管線化或全域指令排程必須要有多重發射機器才有好處」。考編譯器排程的效益從何而來,重點在「必須」兩個字
  • (b) 2%|「有資料相依的兩道指令會造成管線停頓」。考相依與停頓的區別。107 年第 8 題是同一句話、只換了助動詞,兩題要對照著讀
  • 第 2 題(12%,單選三題):
  • (a) 4%|頁面從 4 KB 加到 2048 KB 讓執行時間減少 40%,主因是什麼?工作集 2 GB、關閉 swap、隨機存取 4 bytes。考大頁影響的是哪一個結構。「關閉 swap、工作集全在記憶體」這個條件是用來排除某個誘答選項的,別看漏
  • (b) 4%|關於亂序超純量 CPU 哪個是錯的。考亂序執行開發的是哪一種層次的平行
  • (c) 4%|哪個功能放進手機的 TEE 安全區「沒有道理」。考 TEE 的定位與資源限制,每個選項都要想「放進去是為了保護什麼」
  • 第 3 題(8%)|ISA:前置與後置遞增定址(ARM 的 ldr r1,[r2],#4 是虛擬指令、x86 的 push/pop 是真正的前置/後置遞增):
  • (a) 2%|什麼是虛擬指令(pseudo instruction)、有什麼好處
  • (b) 3%|真正的前置/後置遞增指令有什麼好處、哪類高階語言結構會受益
  • (c) 1%|為什麼 Itanium 只支援後置遞增不支援前置遞增。要扣回 VLIW 靠編譯器靜態排程這個特性,從「位址何時確定」去想
  • (d) 2%|這類指令在 ISA 裡的壞處,要從管線與例外處理的角度論述
  • 第 4 題(8%)|例外與中斷:
  • (a) 2%|把八項分類成例外或中斷:page fault、TLB miss、浮點下溢、未定義指令、execution abort、system call、I/O 裝置請求、使用者定義中斷。分類依據是「同步或非同步」,system call 與 TLB miss 最容易歸錯
  • (b) 3%|六種實作依「處理例外的困難度」排序:推測執行、亂序超純量、超純量、管線、階層式資料快取、單發射循序
  • (c) 3%|六種環境依「處理中斷的困難度」排序:GPGPU、虛擬機、超執行緒、超純量、管線、容器
  • (b)(c) 是排序題,每一項都要能說出「難在要保存或撤銷什麼狀態」,只憑直覺排會錯好幾個位置
  • 第 5 題(9%)|四種平行:
  • (a) 2%|ILP/DLP/MLP/TLP 各是什麼。MLP 最容易寫不出來
  • (b) 4%|各舉一個架構或微架構技術
  • (c) 3%|各舉一個軟體技術
  • 第 6 題(9%)|big.LITTLE 多核設計:
  • (a)|Snapdragon 670 是 2 大 6 小、850 是 4 大 4 小。給定情境要你表態並說明理由(不解釋零分)
  • (b)|大核叢集與小核叢集之間為什麼以及如何維持快取一致性。要講到叢集之間的一致性互連,不能只講單一叢集內部的 snooping

Part II:作業系統(7–8,各 25 分)

  • 第 7 題(25%)|程序 ID 與多工:
  • (a1) 6%|real UID、effective UID、saved UID 的性質與差異
  • (a2) 4%|程序需要額外權限時該改哪一個
  • (b1) 5%|多程序與多執行緒在記憶體使用、CPU 排程、資源共享三個面向的差異
  • (b2) 3%|看 C 程式碼判斷第 24 行印出的變數是不是 'C'。考 fork() 之後父子程序的記憶體關係
  • (b3) 3%|第 16 行與第 23 行印出的位址是否相同。陷阱在「印出來的是哪一種位址」,要把虛擬位址與實體頁框分開講
  • (b4) 4%|把 fork() 換成 vfork() 之後第 24 行的結果。這一小題是全卷設計最精巧的地方:前三小問建立起來的認知,到這裡要重新檢查一次——vfork() 的語意與 fork() 差在哪裡是唯一的考點
  • 第 8 題(25%)|雙十一搶購的分散式交易系統設計,五個小問各 5 分:
  • (a)|什麼交易排程演算法能為業者帶來最大營收,要說明排程目標與取捨
  • (b)|沒有全域時鐘的情況下如何保證先到先處理。題目提示「先送出還是先抵達」,考分散式系統裡的事件排序
  • (c)|分散式並行處理下如何同步才不會超賣又夠快,考一致性與效能的取捨
  • (d)|交易可能被取消,檔案系統要怎麼設計才可信又高效,考當機一致性與可回復性
  • (e)|這種高速交易要防哪些攻擊、怎麼防

這份考卷的難點

  1. 第 7(b4) 題是全卷最刁鑽的一小題。 前三小問都在建立 fork() 的心智模型,第四小問只換一個系統呼叫——沒實際用過 vfork() 的人很容易沿用前面的答案。
  2. 第 2(a) 題的「swap 已關閉」是關鍵條件。 最直覺的那個選項,正好被這個條件排除掉。題目裡看似多餘的條件通常都是用來排除誘答的。
  3. 第 4(b)(c) 題要「排序」而不是「分類」。 排序題沒有部分套路可套,必須真的理解每種實作要維持精確例外或保存中斷狀態時,各自要處理多少額外的狀態。
  4. 第 1(b) 題與 107 年第 8 題是同一句話改一個字。 看到是非題要逐字讀 will/may/must。

準備建議

  • fork/vfork/clone 的差異(第 7 題)務必實際寫程式跑過。台大在 106 年第 11 題也考過多程序與多執行緒的資料傳遞,這是 OS 段的固定考點
  • 四種平行(ILP/DLP/MLP/TLP)的三層對照表(第 5 題)要能自己整理出來:每一種各配一個架構技術與一個軟體技術。MLP 最常被遺漏
  • 例外與中斷的同步/非同步分類(第 4 題)要能逐項說出判斷理由,不能只憑名稱猜
  • TEE、big.LITTLE、TPU 這類「產業現況題」是台大硬體的固定成分(107 第 5 題考 TPU、108 第 2(c) 題考 TEE、第 6 題考 Snapdragon)。考前掃一遍當年度的處理器新聞
  • 是非題要逐字讀:107 第 8 題與 108 第 1(b) 題只差一個助動詞
  • 「不解釋零分」(第 6(a) 題)是台大明文寫出來的規則。申論題只表態不論述,一分都拿不到

想看完整逐題詳解?

國立臺灣大學 106–115 全年度完整詳解共 309 頁,逐題推導。

購買 · NT$ 850 先看試閱

其他年度與考科