108 年 國立中山大學資訊工程學系碩士班甲組《作業系統》
第 1 題20 分
- [Process Management: 20%]
(1) Explain the five possible states of a process. (5%)
(2) Explain two common models for inter-process communications. (4%)
(3) Let us consider five processes arriving in the order of P1, P2, P3, P4, and P5 at time 0:
Process | Burst time | Priority
------- | -------- | --------
P1 | 10 | 3
P2 | 1 | 1
P3 | 2 | 3
P4 | 1 | 4
P5 | 5 | 2
Show the turnaround time of each process based on the following scheduling algorithms: First-come first-served, round robin (with quantum = 1), shortest job first, and non-preemptive priority (where a smaller priority number indicates a higher priority). (8%)
(4) What is the many-to-one multithreading model? What are the two drawbacks of this model? (3%)
登入後即可作答並保存紀錄。
(1) 行程的五種狀態 (Five Process States)
行程在生命週期中會在以下五種狀態之間轉換:
- New (新建):行程正在被建立中。
- Ready (就緒):行程已配備所需資源並進入記憶體,等待 CPU 派發 (Dispatch) 執行。
- Running (執行):行程的指令正在 CPU 上執行。
- Waiting / Blocked (等待):行程因等待某事件發生(如 I/O 完成或接收訊號)而暫停執行。
- Terminated (終止):行程已結束執行,等待系統回收資源。
(2) 兩種常見的行程間通訊模型 (IPC Models)
-
Shared Memory (共享記憶體模型):
- 機制:通訊行程間建立一塊共同可存取的記憶體區域,資料交換直接讀寫該區域。
- 特性:建置完成後不需作業系統核心介入,傳輸速度最快;但須由使用者行程自行處理同步與互斥問題(如使用 Semaphore)。
-
Message Passing (訊息傳遞模型):
- 機制:行程間透過作業系統 Kernel 提供的原語(如
send()與receive())傳遞封包或訊息。 - 特性:不需共享記憶體,適合分散式系統或多機通訊;但每次訊息傳輸皆需切換至 Kernel 模式,系統開銷較大。
- 機制:行程間透過作業系統 Kernel 提供的原語(如
(3) 排程演算法之周轉時間 (Turnaround Time, TAT) 計算
周轉時間定義為 。因所有行程皆於 到達,故 。
1. First-Come, First-Served (FCFS)
- 執行順序:
- 完成時間:
2. Round Robin (RR, Quantum = 1)
- Ready Queue 變化:
- 依次執行 : 完工(完成時間 )。
- 剩餘行程隊列循環執行,至 時 完工(完成時間 )。
- 剩餘 交替執行,至 時 完工(完成時間 )。
- 最後由 執行完畢(完成時間 )。
第 2 題20 分
- [Memory Management: 20%]
(1) What are the purposes of base and limit registers? (4%)
(2) Give the six steps to handle a page-fault event. (6%)
(3) Let average page-fault time and memory-access time be 80µs and 240ns, respectively. What is the
expected page-fault rate if we want to get the effective access time smaller than 280ns? Give your
calculation. (5%)
(4) Suppose that it takes 35ns and 105ns to search TLB and access memory, respectively. If TLB has
95% hit ratio, what is the effective memory-access time? Give your calculation. (5%)
登入後即可作答並保存紀錄。
核心觀念
本題涵蓋四個記憶體管理重點:
base register與limit register:負責位址重定位與記憶體保護。page fault:當所需頁面不在主記憶體時,由作業系統處理例外。- 有效存取時間(Effective Access Time, EAT):依 page-fault rate 加權平均。
TLB:利用快取的頁表項目,降低位址轉換所需時間。
解題方法與詳解
(1)Base register 與 limit register 的用途
設 CPU 產生的邏輯位址為 。
base register:儲存該程序在主記憶體中的起始實體位址。limit register:儲存該程序可使用的位址空間大小。
硬體先檢查:
若合法,實體位址為:
因此兩者用途如下:
- 位址重定位:程序可載入主記憶體的不同位置,只要修改 base register。
- 記憶體保護:透過 limit register 限制程序只能存取自己的位址範圍,避免存取作業系統或其他程序的記憶體。
常見陷阱是把 limit register 誤認為「最後一個合法位址」;它代表的是位址空間大小,合法條件為嚴格小於 limit。
(2)處理 Page Fault 的六個步驟
-
產生 page-fault trap
CPU 存取某頁時,發現頁表項目的 valid bit 為 ,表示該頁目前不在主記憶體,硬體產生 page-fault trap,並保存被中斷程序的執行狀態。 -
檢查位址是否合法
作業系統檢查此次記憶體參考是否屬於該程序合法的位址空間。若為非法存取,便終止程序或產生記憶體保護例外。 -
找出頁面所在位置
若位址合法,作業系統依頁表或程序的管理資訊,找出該頁在 backing store(通常為磁碟或交換區)中的位置。 -
取得可用的 page frame
從 free-frame list 取得空閒 frame。若沒有空閒 frame,便執行 page replacement,選出 victim page;若 victim page 被修改過,須先寫回磁碟。 -
將所需頁面載入主記憶體
排程磁碟 I/O,將所需頁面讀入選定的 page frame。讀取期間,發生 page fault 的程序會被阻塞,CPU 可執行其他可執行程序。 -
更新頁表並重新執行指令
磁碟讀取完成後,更新頁表中的 frame number,將 valid bit 設為 ,並更新相關管理資訊。接著恢復程序狀態,重新執行造成 page fault 的那一條指令。
重新執行原指令是必要的,因為該指令尚未完成原本的記憶體存取。
(3)求可接受的 Page-Fault Rate
第 3 題20 分
- [Storage and I/O Management: 20%]
(1) What are the two functions supported by a VFS (virtual file system) layer? (4%)
(2) Consider a disk queue with requests for I/O to blocks on cylinders 103, 188, 42, 120, 7, 138, 76
and 87. Let the disk head currently stay at cylinder 65, and the maximum cylinder be 200. Show
the results of SSTF and C-LOOK scheduling methods. (6%)
(3) Explain seek time, rotational latency, and random-access time for disks. (6%)
(4) Explain the two major types of memory-mapped I/O. (4%)
登入後即可作答並保存紀錄。
第 3 題:Storage and I/O Management
核心觀念
本題涵蓋四個重點:
- VFS 如何統一不同檔案系統的操作介面。
- SSTF 與 C-LOOK 磁碟排程的選擇規則。
- 磁碟存取時間的三個組成部分。
- 裝置暫存器在 CPU 位址空間中的配置方式。
(1)VFS 的兩項功能
核心觀念
VFS 位於系統呼叫介面與實際檔案系統實作之間,將檔案操作的共同部分抽象化。
解題方法與答案
VFS 主要提供以下兩項功能:
-
分離一般檔案操作與實際實作
VFS 定義統一且乾淨的介面,使
open、read、write、close等一般檔案操作不必知道底層是 ext4、FAT、NFS 或其他檔案系統。因此,上層程式透過相同介面操作不同檔案系統,底層再由對應的檔案系統實作完成實際工作。
-
提供檔案的一致且唯一表示
VFS 提供一套統一的檔案表示方式,使本機檔案系統與遠端檔案系統中的檔案,都能在整個系統或網路中被一致識別與操作。
這使多種檔案系統可以同時掛載、共存,並由核心以相同方式管理。
解題技巧
VFS 的兩個關鍵詞是:
- 統一介面:隔離一般操作與底層實作。
- 一致表示:讓不同檔案系統,尤其遠端檔案系統,也能被統一識別。
(2)SSTF 與 C-LOOK 磁碟排程
待處理請求為:
目前磁頭位於柱號 。
先排序:
A. SSTF
核心觀念
SSTF(Shortest Seek Time First)每一步都選擇距離目前磁頭位置最近的待處理請求。
解題方法與計算
| 目前位置 | 最近的待處理請求 | 移動距離 |
|---|---|---|
| $ | ||
| $ | ||
| $ | ||
| $ | ||
| $ | ||
| $ | ||
| $ | ||
| $ |
因此,SSTF 的服務順序為:
總磁頭移動量為:
所以:
解題技巧
SSTF 必須在每一步重新計算距離,不能只依照一開始排序後的順序服務。磁頭移動到 後,剩餘請求為 與 ,其中 距離較近,因此先服務 。
B. C-LOOK
核心觀念
C-LOOK 只沿一個方向服務請求,抵達該方向最後一個請求後,直接跳回另一端尚未服務請求的最外側位置,再繼續同方向服務。
C-LOOK 不會特別移動到磁碟實際端點,因此不必走到柱號 。
初始方向假設
題目未指定 C-LOOK 的初始移動方向;以下採用磁頭由柱號 向較大柱號移動的假設。
向大柱號服務:
之後跳回最小的未服務請求 ,再服務 。
服務順序為:
總磁頭移動量為:
因此:
其中 是回繞移動,距離為:
若初始方向指定為向較小柱號移動,服務順序則為:
其總移動量為:
解題技巧
- SSTF:每一步找最近的請求。
- C-LOOK:先決定方向,再排序;服務到該方向最後一個請求後回繞。
- C-LOOK 與 C-SCAN 的差異是:C-LOOK 不必走到柱號 或 ,只走到最後一個實際請求。
(3)Seek time、Rotational latency 與 Random-access time
1. Seek time
**Seek time(尋道時間)**是磁碟磁頭從目前柱號移動到目標柱號所需的時間。
磁頭需要經過:
- 致動器啟動;
- 移動到目標磁柱;
- 停止並穩定在正確磁軌上。
第 4 題20 分
- [Synchronization and Deadlock: 20%]
(1) Explain how the deadlock prevention scheme works. (8%)
(2) Give three requirements for any solution to the critical-section problem. (6%)
(3) What is the priority inversion problem? How to solve it? (4%)
(4) What is conflict serializable for a non-serial schedule? (2%)
登入後即可作答並保存紀錄。
(1) 死鎖預防(Deadlock Prevention)運作機制
死鎖預防(Deadlock Prevention) 的核心機制為:破壞形成死鎖(Deadlock)的四個必要條件之一,確保系統永遠不會進入死鎖狀態。
- 破壞 Mutual Exclusion(互斥):
- 儘可能將資源設為可共用(Shared),例如唯讀檔案。惟多數不可共用資源(如印表機)無法破壞此條件。
- 破壞 Hold and Wait(持有並等待):
- 要求 Process 在執行前必須一次申請並取得所需的全部資源;或規定 Process 在申請新資源前,必須先釋放當前持有的所有資源。
- 破壞 No Preemption(不可強佔):
- 當 Process 持有部分資源並申請新資源失敗時,必須強制釋放(Preempt)其目前持有的所有資源;或允許高優先權 Process 強佔低優先權 Process 的資源。
- 破壞 Circular Wait(循環等待):
- 給予系統中所有資源類型一個唯一的全域遞增編號,並規定 Process 必須嚴格按照資源編號**由小到大的遞增順序(Increasing Order)**提出資源申請。
(2) 臨界區段問題(Critical-Section Problem)的三大條件
解出臨界區段問題的任何演算法必須滿足以下三個要求:
- Mutual Exclusion(互斥性):
- 若 Process 正在其 Critical Section 內執行,則其他任何 Process 皆不可在其 Critical Section 內執行。
- Progress(進展性):
- 當沒有 Process 在 Critical Section 內執行,且有 Process 想要進入 Critical Section 時,只有那些「不在 Reminder Section 執行」的 Processes 可以參與決定下一個誰進入,且該決定不可被無限制延遲。
- Bounded Waiting(有限等待性):
第 5 題20 分
- [Security: 20%]
(1) How to launch an attack of stack and buffer overflow? (6%)
(2) Explain the two major types of symmetric encryption. (4%)
(3) Explain how the RSA algorithm works. (5%)
(4) How does the digital-signature algorithm work? (2%)
(5) What is an interrupt war caused by tunneling viruses? (3%)
登入後即可作答並保存紀錄。
第 5 題 Security
(1)Stack/Buffer Overflow Attack(6%)
核心觀念
緩衝區溢位(buffer overflow)是程式將超過緩衝區容量的資料寫入記憶體,造成界限外寫入。若緩衝區位於堆疊(stack)中,便稱為堆疊型緩衝區溢位(stack-based buffer overflow)。
典型函式呼叫的堆疊框架可概念化為:
若程式使用沒有長度檢查的輸入函式,例如 gets、strcpy、錯誤使用的 sprintf,攻擊者輸入過長資料後,超出緩衝區的部分便會覆寫後方的控制資訊。
解題方法
攻擊流程可分為:
- 找出會接收外部輸入,且未正確檢查長度的程式。
- 建立超過緩衝區大小的輸入資料:
- 使輸入內容覆寫函式的返回位址、函式指標,或其他控制流程資料。
- 當函式執行
return時,處理器會從堆疊取出被竄改的返回位址,將控制權轉移至攻擊者指定的位置。 - 早期攻擊可跳入緩衝區內的惡意機器碼;現代攻擊常利用既有程式碼片段組成 ROP(Return-Oriented Programming)鏈,以繞過不可執行堆疊保護。
攻擊結果包括任意程式碼執行、權限提升、竄改資料,以及使程式崩潰形成阻斷服務。
嚴格而言,「stack overflow」也可指無窮遞迴或過深函式呼叫造成堆疊空間耗盡:
本題的 Security 脈絡主要考查的是「堆疊型緩衝區溢位」所造成的控制流程劫持。
解題技巧
看到「固定大小陣列、外部輸入、缺乏長度檢查、返回位址被覆寫」時,便應聯想到 stack-based buffer overflow。防禦方式包括邊界檢查、stack canary、ASLR、NX/DEP、CFI,以及最小權限原則。
(2)對稱式加密的兩大類型(4%)
核心觀念
對稱式加密(symmetric encryption)使用同一把秘密金鑰進行加密與解密:
其中 為明文、 為密文、 為共享金鑰。
兩大類型是區塊加密與串流加密。
| 類型 | 運作方式 | 常見特性與例子 |
|---|---|---|
| 區塊加密(block cipher) | 將明文切成固定大小區塊,逐區塊進行轉換 | AES、DES;常搭配 CBC、CTR、GCM 等模式 |
| 串流加密(stream cipher) | 產生金鑰串流,逐位元或逐位元組與明文 XOR | ChaCha20、RC4 |
區塊加密
若每個明文區塊為 ,加密可寫為:
實際使用時需搭配操作模式與 IV/nonce。ECB 模式會使相同明文區塊產生相同密文區塊,容易洩漏資料結構,因此不適合直接加密一般文件。需要整個區塊輸入的模式還需使用 padding。
串流加密
串流加密先依據金鑰與 nonce 產生金鑰串流 :
解密時使用相同的 XOR:
同一把金鑰下不可重複使用相同 nonce,否則:
攻擊者便能取得兩份明文的關係。
解題技巧
判斷兩類型的關鍵是「處理單位」:固定大小資料塊屬於 block cipher,連續位元或位元組屬於 stream cipher。
(3)RSA 演算法(5%)
核心觀念
RSA 是公開金鑰密碼系統,安全性建立在大整數分解的困難性。它使用一組公開金鑰與一組私密金鑰:
- 公開金鑰:
- 私密金鑰:
解題方法與推導
-
選擇兩個大型且不同的質數 。
-
計算:
-
選擇 ,使得:
-
計算 在模 下的乘法反元素 :