考點分析 / 成大 / 112

112 成大資工所硬體考點分析

首度出現 10 題單選(20 分),內容偏 Silberschatz 的冷門細節。第 5 題要指出管線資料路徑上的 bug 並畫圖修正。

題型與配分

科目:計算機組織與系統,系所「電機資訊學院-資訊聯招」,日期 0206、節次 1,全卷 100 分、5 頁、6 大題。不可使用計算機、於本試題紙上作答者不予計分。

題號配分主題
120%十個單選(保護、檔案系統、I/O、Windows、spinlock)
210%Solaris 分派表的時間量子與優先權調整
310%儲存系統的長尾延遲
410%分頁、TLB 命中率、多層頁表層數
530%管線資料路徑(含找 bug 並畫圖修正)
620%危障處理(NOP、重排、分支預測準確率)

112 年是成大硬體十年裡唯一有「單選題」的一年(第 1 題 10 小題共 20 分)。其餘九年都是純申論或填表格。

第 1 題的十個單選幾乎全部出自 Silberschatz 的細節段落(Android 的保護模型、ISAM、Windows 的 dispatcher object、Linux spinlock),不是課堂重點但課本裡都有。

OS 與計組的比重:OS 50%(第 1、2、3、4 題)、計組 50%(第 5、6 題)。

第 1 題:十個單選(20%)

  • (1)|保護與存取控制——涵蓋 Android 的 UID 隔離機制、MAC(強制存取控制)對 root 的限制、RBAC 對超級使用者風險的影響、能力式(capability-based)保護的實例。留意選項裡「增加」與「降低」風險的方向
  • (2)|檔案系統與掛載,哪個是錯的——核心觀念:掛載是把檔案系統接到目錄樹上的動作
  • (3)|檔案配置與空間管理——涵蓋 FAT 的結構、一致性檢查能不能「完全」復原、不可覆寫裝置還需要哪些機制、grouping 與 linked list 在找多個空閒區塊時的效率比較
  • (4)|「統一虛擬記憶體用什麼機制同時快取程序頁與檔案資料」——與 109 年第 5(2) 題、中正 110 年第 1(3) 題與 112 年第 2 題都是同一個考點
  • (5)|IBM 的 ISAM(索引循序存取法)——要能描述它的兩層索引結構:誰放在記憶體、誰放在磁碟、各指向什麼
  • (6)|輪詢式 I/O 的主要低效來源——要能說出「浪費在哪裡」,而不只是說它慢
  • (7)|磁碟排程演算法為何只考慮尋道距離——要能說出現代磁碟對 OS 隱藏了什麼。與中正 110 年第 1(5) 題一字不差
  • (8)|一道指令會修改多個位置時,中途發生頁錯誤該如何處理——核心要求是「指令必須能被重新執行」
  • (9)|Windows 的 dispatcher object 進入 signaled 狀態時會發生什麼——要分清 event 物件與 mutex 物件被 signal 時的行為差異
  • (10)|關於 Linux spinlock 哪個「不正確」——「單處理器上的 spinlock」是關鍵。與中正 110 年第 1(7) 題一字不差

第 2 題:Solaris 分派表(10%)

卷上給完整的 Solaris time-sharing/interactive 分派表(priority、time quantum、time quantum expired、return from sleep 四欄)。

  • (1) 4%|優先權 15 與 55 的時間量子各是多少毫秒
  • (2) 3%|優先權 35 的執行緒用完整個時間量子而未阻塞,新優先權是多少
  • (3) 3%|優先權 40 的執行緒在量子用完前因 I/O 阻塞,新優先權是多少

都是查表題,但要知道每一小題該查哪一欄。答完之後可以想想這張表的設計反映了 MLFQ 的什麼精神。

第 3 題:儲存系統的長尾延遲(10%)

題目先解釋什麼是 tail latency(第 99 百分位的延遲可能是平均值的 100 倍),以及它對即時嵌入式系統與企業伺服器的 QoS 影響。

  • (1) 5%|提出四個可能造成儲存系統長尾延遲的原因(要簡述)
  • (2) 5%|提出兩個解決長尾延遲的方法

這一題完全是產業知識,課本上沒有。可以從 SSD 內部的背景工作、快閃記憶體的物理特性、HDD 的機械延遲、佇列排隊幾個方向去想原因;解法則對應著「怎麼避開或隔離這些背景工作」。

第 4 題:分頁、TLB 與多層頁表(10%)

  • (1) 2%|32-bit 虛擬位址、4 KB 頁、最大實體記憶體 32 GB,求程序最多幾個頁與最多幾個頁框
  • (2) 2%|單層分頁、記憶體存取 100 ns、TLB 存取 20 ns,要求有效存取時間 < 140 ns,求最小 TLB 命中率。TLB 失誤時要多幾次記憶體存取是關鍵
  • (3) 3%|無頁錯誤時有效存取 100 ns、頁錯誤服務 15 ms、頁錯誤率 0.0000004,求有效存取時間。ms 與 ns 的單位要統一
  • (4) 3%|64-bit 虛擬位址、8 KB 頁、每個頁表條目 8 bytes、最大實體記憶體 64 GB,求需要幾層頁表。先算一頁能放幾個條目,由此決定每層能解析幾個位元。交大 114 年題組 B 也考同一個

第 5 題:管線資料路徑(30%)

  • (1) 5%|卷上給單週期資料路徑並標出五級的分界。問要加入什麼硬體資源來在各級之間暫存資料、為什麼
  • (2) 12%|加上管線暫存器後,這條資料路徑在處理 load 指令時有一個 bug,請描述並畫圖修正
  • 思考方向:在單週期設計裡「指令本身」整個週期都在,但在管線裡,當 lw 走到 WB 級時 IF/ID 裡早就換成後面的指令了。順著這條線去想「WB 級需要的哪一項資訊沒有跟著指令一起往下傳」
  • 這是 Patterson & Hennessy 課本裡最經典的一張「錯誤資料路徑」圖,值得先把正確版本畫熟
  • (3) 8%|各級時間 IF 100/ID 50/EX 100/MEM 200/WB 80 ps,求 load 與 store 指令的延遲(非管線化)。要想清楚兩種指令各自會走過哪幾級
  • (4) 5%|管線化後的時脈週期是多少、為什麼。理由要寫出來

第 6 題:危障處理(20%)

  • (1) 5%|五級管線不處理資料危障時,在下列程式中插入必要的 NOP:
addi x10, x14, 10
sub  x13, x10, x14
xor  x4,  x3,  x5

要插幾個 NOP 取決於「暫存器檔能不能同週期先寫後讀」的假設,作答時要註明

  • (2) 5%|用程式碼重排(code reordering)緩解,開銷能不能完全消除、為什麼。要看有幾道指令是獨立的、能拿來填空檔
  • (3) 10%|Always-Taken 與 Always-Not-Taken 兩種預測器對 for (i=0;i<4;i++) x=a+b; 的準確率。先算清楚迴圈的分支總共判斷幾次、其中幾次跳,差一的錯誤在這裡特別常見

這份考卷的難點

  1. 第 5(2) 題要指出資料路徑上的 bug。 這是課本裡的經典圖,但如果只把管線暫存器當成「存資料的地方」,沒想到控制資訊與其他欄位也要一路傳遞,就完全答不出來。12 分,是全卷配分最高的單一小問。
  2. 第 1 題的十個單選偏冷門。 Android 的保護模型、ISAM 的索引階層、Windows 的 dispatcher object、Linux spinlock 在單處理器上的行為——這些都在 Silberschatz 裡,但很少在課堂上講。
  3. 第 4(2) 題的 TLB 失誤成本:TLB 失誤時要算幾次記憶體存取,算少了就會得到錯誤的命中率。
  4. 第 3 題的長尾延遲要答出四個原因加兩個解法,而且明訂要簡述。這一題完全是產業知識,課本上沒有。

準備建議

  • 112 年是成大硬體唯一一次出單選題,而且考的都是 Silberschatz 的細節段落。準備時不要只讀重點整理,課本正文裡的例子(ISAM、Windows dispatcher、Android 保護)都可能入題
  • 管線資料路徑的經典 bug(第 5(2) 題)一定要懂。這是 Patterson & Hennessy 第 4 章的核心圖
  • TLB 有效存取時間(第 4(2) 題):命中與失誤兩種情況各要幾次存取
  • 多層頁表的層數(第 4(4) 題)。交大 114 年題組 B 也考同一個
  • 長尾延遲(第 3 題)是 SSD 時代的產業議題,要能講出成因與對應的解法
  • 分支預測的準確率計算(第 6(3) 題):迴圈分支的判斷次數要算清楚
  • Solaris 分派表(第 2 題)要會查,並能說出它體現的排程精神

想看完整逐題詳解?

國立成功大學 106–115 全年度完整詳解共 295 頁,逐題推導。

購買 · NT$ 850 先看試閱

其他年度與考科