114 師大資工所硬體考點分析
12 大題、題數六年最多。四題「全對才給分」的複選共 28 分,是師大硬體六年唯一出現的計分規則。
題型與配分
科目「計算機系統」,適用系所:資訊工程學系,全卷 3 頁、12 大題、100 分。
| 題號 | 配分 | 歸屬 | 主題 |
|---|---|---|---|
| 1 | 10% | OS | fork() 加分支的程序數 |
| 2 | 5% | OS | zombie process 的定義 |
| 3 | 7% | OS | 複選:一般 OS 觀念 |
| 4 | 7% | OS | 複選:分頁 |
| 5 | 7% | OS | SJF 的周轉時間排序 |
| 6 | 7% | OS | 複選:檔案系統 |
| 7 | 7% | OS | 複選:並行控制 |
| 8 | 10% | 計組 | 快取的總 tag 位元數 |
| 9 | 10% | 計組 | 資料相依與 forwarding |
| 10 | 10% | 計組 | Amdahl 定律 |
| 11 | 10% | 計組 | 二補數與十六進位 |
| 12 | 10% | 計組 | MIPS 迴圈的最終值 |
OS 50 分(第 1–7 題)、計算機組織 50 分(第 8–12 題),師大連續四年(111–114)精準對半。
114 年是師大硬體六年裡唯一出現「全對才給分」規則的一年。 第 3、4、6、7 題都寫著 「Points will only be given if all the correct statement(s) were picked」 ⇒ 這 28 分是複選題,多勾一個或少勾一個都是零分。
但這四題「沒有倒扣」 ⇒ 一定要作答,空白必定零分。
12 大題是師大硬體六年最多的一份(110–113 年是 8–11 題)。單題配分最小只有 5 分,⇒ 每題平均只能花 4 分鐘。
逐題考點
| 題號 | 配分 | 考點 | 要注意的地方 |
|---|---|---|---|
| 1 | 10% | fork() 加 if 分支的程序總數 | 最大的陷阱是 if (fork() == 0) 裡面那個 fork() 本身也會執行,要先想清楚它對所有程序做了什麼,再看回傳值怎麼分流。用公式硬套一定錯,必須畫程序樹。題目沒寫「含不含原本的呼叫者」 ⇒ 建議兩個數字都交代 |
| 2 | 5% | zombie process 的定義(限一句) | 一句話裡要把程序的狀態、父程序做了(或沒做)什麼、系統裡還留著什麼三件事講齊 |
| 3 | 7% | 複選:一般 OS 觀念 | 涵蓋 交叉編譯、使用者程式產生的位址是不是都是虛擬位址、多執行緒共用什麼。全對才給分,沒有倒扣 ⇒ 一定要作答 |
| 4 | 7% | 複選:分頁 | 選項裡有兩組容易對調的名詞:TLB 失誤與頁錯誤的關係、分頁處理的是哪一種碎裂、又會造成哪一種。逐項判斷,不要靠語感 |
| 5 | 7% | SJF 的周轉時間排序 | 到達時間刻意設計成「後到的短工作」。要看清楚題目是非搶占還是可搶占,兩者的排序不同 |
| 6 | 7% | 複選:檔案系統設計 | 涵蓋 一顆硬碟能不能有多個分割區各跑自己的檔案系統、file descriptor 由誰以什麼粒度維護、日誌式檔案系統在當機復原上的優勢。又是一組「看起來每個都對」的敘述 |
| 7 | 7% | 複選:並行控制 | 涵蓋 號誌能不能拿來建鎖、自旋鎖在非搶占排程下的風險、循環等待與死結的關係。死結那一項要看清楚它說的是必要條件還是充分條件 |
| 8 | 10% | 快取的「總」tag 位元數(直接對映與四路組相聯各一小題) | 算出「每個區塊幾位元」只做了一半,要再乘上區塊總數。四路組相聯時要想清楚哪些量變了、哪些沒變 |
| 9 | 10% | 四道指令的資料相依,哪些靠 forwarding 就夠、哪些仍要停頓 | 先把所有 RAW 相依與距離列成表再判斷。要特別看每一組相依的前一道是什麼類型的指令,以及距離夠遠的相依需不需要 forwarding |
| 10 | 10% | Amdahl 定律(給可平行比例 P 與核心數 N) | 注意變數定義與 110 年第 3 題相反(那年給的是循序比例)。建議補一句加速比上限的說明,只寫公式容易被扣 |
| 11 | 10% | 同一組位元樣式的兩種解讀:當成二補數求十進位、當成無號整數求十六進位 | (a) 求二補數的值要會兩種方法互相驗算。(b) 問的是十六進位不是十進位——四位一組拆開就好,是全卷最快的 5 分 |
| 12 | 10% | MIPS 迴圈的最終值 | slt 的參數順序要看清楚,寫反會得到完全不同的迴圈次數。與 113 年第 8 題是同一個迴圈換問法 |
這份考卷的難點
- 四題複選「全對才給分」,合計 28 分。 四題正確選項的數量刻意做得不規律。沒有倒扣,所以一定要勾滿你判斷為真的所有選項。
- 第 1 題的
if (fork() == 0)。 用公式硬套一定錯,必須畫程序樹,而且要注意if條件裡的那個fork()。 - 第 4 題的兩組名詞在課本裡總是一起出現,很容易混。
- 第 8 題問的是「總 tag 位元數」。 算出「每個區塊幾位元」只做了一半,要再乘上區塊總數。把組數當成區塊數是常見錯誤。
- 第 9 題要分清哪些相依 forwarding 就能解決、哪些不行。 把所有相依都算成要停頓是常見錯誤。
- 12 大題、平均一題 4 分鐘。 第 2 題 5 分只要寫一句、第 11(b) 只要四位一組拆開——這些要快速拿下,把時間留給第 1、8、9 題。
準備建議
- 「全對才給分」的複選要練習「逐項判斷、不靠感覺」。114 年四題的正確選項數量刻意做得不規律——不要因為「怎麼每個看起來都對」就心虛少勾,也不要因為「不可能全對」就亂刪
fork()的兩種題型都要練:純迴圈(111 年,可找規律)與帶if分支(114 年,必須畫程序樹)- 四組容易對調的名詞要分清楚:TLB 失誤與頁錯誤、內部碎裂與外部碎裂、必要條件與充分條件(死結的循環等待)、非搶占 SJF 與可搶占 SRTF。114 年四題複選全部繞著這四組打轉
- 快取的 tag 總位元數(第 8 題):先由區塊大小得 Offset、由組數得 Index,剩下才是 Tag,最後別忘了「乘上區塊總數」
- forwarding 的極限連兩年考(111 第 10(b)、114 第 9(b))。要能畫出時序圖說明為什麼某一類相依 forwarding 救不了
- Amdahl 定律師大六年考三次(110、111、114),而且變數定義換來換去。作答前先確認題目給的是「循序比例」還是「可平行比例」
- MIPS 迴圈題連兩年(113 第 8 題問指令數、114 第 12 題問最終值)。
slt的參數順序要看清楚 - 二補數的轉換要能兩個方向都做(第 11 題)