112 年 國立中山大學資訊工程學系碩士班甲組《作業系統與資料結構》
第 1 題5 分
What are printed by each of the following C program?
(a) (5%)
int a=40, b=24;
printf("%d \n", (a&(~b))((~a) & b));
// ~: bitwise NOT; &: bitwise AND; |: bitwise OR
登入後即可作答並保存紀錄。
題面說明
題面在 (a&(~b)) 與 ((~a)&b) 之間缺少運算子;依題目附註列出的運算子,以下以遺漏的位元 OR 運算子 | 解題:
printf("%d\n", (a & (~b)) | ((~a) & b));
核心觀念
本題考查:
- 位元 NOT:
~x將整數每一個位元反轉。 - 位元 AND:
x & y只有兩者對應位元皆為1時才為1。 - 位元 OR:
x | y只要其中一個對應位元為1即為1。 - 位元互斥或的等價式:
其中 ^ 是位元互斥或。
解題方法
已知:
只列出低 8 位即可,因為 、 都是正整數,高位的 NOT 結果不會影響最後的 AND。
先計算第一部分:
因此:
再計算第二部分:
第 1 題10 分
What are printed by each of the following C program?
(b) (10%)
// ~: bitwise NOT; &: bitwise AND; |: bitwise OR
int b[ ]={ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42};
int h(int i) {
if (i==1)
{
printf("%d ", b[i]);
return (b[1]);
}
else if (i % 2 == 0) {
printf("%d ", b[i]);
b[i/2] += 1/2;
return (h(i/2));
}
else {
b[i+1] ++;
return (h(i+1));
}
}
int main()
{
h(9);
}
登入後即可作答並保存紀錄。
核心觀念
本題考查:
- 遞迴函式的呼叫順序。
- 陣列元素的共用與修改。
- C 語言整數除法:。
if、else if、else的分支判斷。printf的執行時機。
其中:
b[i/2] += 1/2;
因為 1 與 2 都是整數常數,所以採用整數除法:
因此這一行不會改變任何陣列元素。
解題方法
初始陣列為:
函式的執行規則如下:
- :印出
b[1],並結束遞迴。 - 為偶數:先印出
b[i],再呼叫h(i/2)。 - 為奇數且不等於 :將
b[i+1]加 ,再呼叫h(i+1)。
逐次追蹤如下:
| 呼叫 | 分支 | 執行動作 | 印出內容 |
|---|---|---|---|
h(9) | 奇數 | b[10]++:,呼叫 h(10) | 無 |
h(10) | 偶數 | 印出 b[10]=41;b[5] += 0;呼叫 h(5) | 41 |
h(5) | 奇數 | b[6]++:,呼叫 h(6) | 無 |
h(6) | 偶數 | 印出 b[6]=37;b[3] += 0; |
第 2 題
The pseudo code for the insertion sort is given as follows.
Read input elements into a ( ); //stored in a[1], a[2], ..., a[n]
for i = 2 to n do
{
j = i;
while (j >= 2) and (a[j] < a[j-1]) do
{
Swap(a[j], a[j-1]); // exchange a[j] and a[j-1]
j = j-1;
}
}
(a) (5%) Suppose that the input elements are 3, 9, 6, 5, 8, 2. How many times (counts) are needed for the execution of Swap( )?
(b) (5%) Suppose that the input is a permutation of {1,2,3,..., n}. What permutation will make Swap() be executed the least times? How many times?
(c) (5%) Suppose that the input is a permutation of {1,2,3,..., n}. What permutation will make Swap () be executed the most times? How many times?
登入後即可作答並保存紀錄。
核心觀念
此程式是以相鄰交換實作的插入排序。每次 Swap(a[j], a[j-1]) 都是把目前元素向左移動一格,直到前一個元素不大於它。
定義反轉對(inversion)為:
相鄰交換只會消除一個反轉對,因此:
關鍵程式碼如下:
for i = 2 to n do
{
j = i;
while (j >= 2) and (a[j] < a[j-1]) do
{
Swap(a[j], a[j-1]);
j = j-1;
}
}
(a) 計算指定輸入的交換次數
原始序列為:
依照每次插入的結果:
| 本輪排序後序列 | Swap 次數 | |
|---|---|---|
因此總交換次數為:
也可直接計算反轉對:
- 後面只有 比它小: 個
- 後面的 都比它小: 個
- 後面的 比它小: 個
- 後面的 比它小: 個
- 後面的 比它小: 個
(b) 使交換次數最少的排列
第 3 題10 分
Suppose that there are 6 data elements A, B, C, D, E, F with their searching frequencies 4, 9, 1, 6, 8, 7, respectively, where A <B<C<D<E< F. Please present the optimal binary search tree built with these 6 elements such that the searching cost is minimized.
登入後即可作答並保存紀錄。
本題考查如何建構一個搜尋成本最小的二元搜尋樹 (Optimal Binary Search Tree, OBST)。
核心觀念:
二元搜尋樹的搜尋成本 (Search Cost) 定義為所有節點搜尋次數的加權總和。如果一個節點 k 的搜尋頻率為 freq(k),並且它在樹中的深度為 depth(k) (根節點深度為 1),則該節點對總搜尋成本的貢獻為 freq(k) * depth(k)。總搜尋成本是所有節點貢獻的總和。
我們的目標是選擇一個根節點,然後遞迴地為其左右子樹選擇根節點,使得總搜尋成本最小。
已知資訊:
- 節點:A, B, C, D, E, F
- 搜尋頻率:freq(A)=4, freq(B)=9, freq(C)=1, freq(D)=6, freq(E)=8, freq(F)=7
- 節點順序:A < B < C < D < E < F (這意味著它們可以自然地構成一個二元搜尋樹,其中 A 在左,F 在右,依此類推)
- 節點數量:n = 6
解題方法:
這個問題可以使用動態規劃 (Dynamic Programming) 來解決。令 cost(i, j) 表示建構包含節點 i 到 j (假設節點已按大小排序,並賦予索引 1 到 n) 的最佳二元搜尋樹的最小搜尋成本。
令 freq_sum(i, j) 表示節點 i 到 j 的搜尋頻率總和。
其中 cost(i, i-1) = 0 (空樹成本為 0)。
在本題中,節點順序和頻率如下:
節點:A, B, C, D, E, F
索引:1, 2, 3, 4, 5, 6
頻率:4, 9, 1, 6, 8, 7
首先計算頻率總和:
freq_sum(1, 6) = 4 + 9 + 1 + 6 + 8 + 7 = 35
接著,我們需要計算 cost(i, j)。這個過程比較繁瑣,通常需要填寫一個表格。
由於題目要求「Present the optimal binary search tree」,我們可以直接嘗試不同的根節點,並計算其總成本。
嘗試不同的根節點:
-
若根節點為 A (freq=4):
左子樹:空 (cost=0)
右子樹:B, C, D, E, F (freq=9+1+6+8+7=31)
總成本 = freq(A) * 1 + cost(B,F)
我們需要遞迴計算 cost(B,F)。 -
若根節點為 B (freq=9):
左子樹:A (freq=4)
右子樹:C, D, E, F (freq=1+6+8+7=22)
總成本 = freq(B) * 1 + cost(A,A) + cost(C,F)
cost(A,A) = freq(A)*1 = 4 (A為單節點樹的根)
總成本 = 9 + 4 + cost(C,F) -
若根節點為 C (freq=1):
左子樹:A, B (freq=4+9=13)
右子樹:D, E, F (freq=6+8+7=21)
總成本 = freq(C) * 1 + cost(A,B) + cost(D,F) -
若根節點為 D (freq=6):
左子樹:A, B, C (freq=4+9+1=14)
右子樹:E, F (freq=8+7=15)
總成本 = freq(D) * 1 + cost(A,C) + cost(E,F) -
若根節點為 E (freq=8):
左子樹:A, B, C, D (freq=4+9+1+6=20)
右子樹:F (freq=7)
總成本 = freq(E) * 1 + cost(A,D) + cost(F,F)
cost(F,F) = freq(F)*1 = 7
總成本 = 8 + cost(A,D) + 7 -
若根節點為 F (freq=7):
左子樹:A, B, C, D, E (freq=4+9+1+6+8=28)
右子樹:空 (cost=0)
總成本 = freq(F) * 1 + cost(A,E)
總成本 = 7 + cost(A,E)
為了找到最佳樹,我們需要系統地計算。
令 w(i, j) 為節點 i 到 j 的頻率總和。
令 e(i, j) 為節點 i 到 j 的最佳搜尋樹成本。
節點及其頻率:
1:A(4), 2:B(9), 3:C(1), 4:D(6), 5:E(8), 6:F(7)
計算長度為 1 的子問題:
e(1,1) = w(1,1) = 4
e(2,2) = w(2,2) = 9
e(3,3) = w(3,3) = 1
e(4,4) = w(4,4) = 6
e(5,5) = w(5,5) = 8
e(6,6) = w(6,6) = 7
計算長度為 2 的子問題:
w(1,2) = 4+9 = 13
e(1,2) = min { e(1,0)+e(2,2)+w(1,2), e(1,1)+e(3,2)+w(1,2) }
= min { 0+9+13, 4+0+13 } = min { 22, 17 } = 17 (根為 B)
w(2,3) = 9+1 = 10
e(2,3) = min { e(2,1)+e(3,3)+w(2,3), e(2,2)+e(4,3)+w(2,3) }
= min { 0+1+10, 9+0+10 } = min { 11, 19 } = 11 (根為 B)
w(3,4) = 1+6 = 7
e(3,4) = min { e(3,2)+e(4,4)+w(3,4), e(3,3)+e(5,4)+w(3,4) }
= min { 0+6+7, 1+0+7 } = min { 13, 8 } = 8 (根為 D)
w(4,5) = 6+8 = 14
e(4,5) = min { e(4,3)+e(5,5)+w(4,5), e(4,4)+e(6,5)+w(4,5) }
= min { 0+8+14, 6+0+14 } = min { 22, 20 } = 20 (根為 E)
w(5,6) = 8+7 = 15
e(5,6) = min { e(5,4)+e(6,6)+w(5,6), e(5,5)+e(7,6)+w(5,6) }
= min { 0+7+15, 8+0+15 } = min { 22, 23 } = 22 (根為 F)
計算長度為 3 的子問題:
w(1,3) = 4+9+1 = 14
e(1,3) = min {
k=1: e(1,0)+e(2,3)+w(1,3) = 0+11+14 = 25 (根 A)
k=2: e(1,1)+e(3,3)+w(1,3) = 4+1+14 = 19 (根 B)
k=3: e(1,2)+e(4,3)+w(1,3) = 17+0+14 = 31 (根 C)
} = 19 (根為 B)
w(2,4) = 9+1+6 = 16
e(2,4) = min {
k=2: e(2,1)+e(3,4)+w(2,4) = 0+8+16 = 24 (根 B)
k=3: e(2,2)+e(4,4)+w(2,4) = 9+6+16 = 31 (根 C)
k=4: e(2,3)+e(5,4)+w(2,4) = 11+0+16 = 27 (根 D)
} = 24 (根為 B)
第 4 題10 分
The stamp cost problem (SCP) is to stick the exact cost of stamps on an envelope. In the post office, there are five types of stamps: 1, 2, 3, 4, 5 dollars. You are asked to calculate all possible combination ways for getting j dollars. Let g(i,j) denote the number of combination ways for j dollars, where only stamps with 1, 2, ...,i dollars are used. Note that i and j are both positive integers, 1≤ i ≤ 5 and 1 ≤ j ≤ n (an integer constant). For example, g(2, 3)=2, since there are two ways for constituting 3 dollars with 1-dollar and 2-dollar stamps: 1+1+1 and 1+2. As another example, g(3, 4)=4, since four ways can be used to get 4 dollars with 1-dollar, 2-dollar and 3-dollar stamps: 1+1+1+1, 1+1+2, 2+2 and 1+3. However, the stamps with 3-dollar and 4-dollar have been sold out (no such stamps) today. Other stamps are assumed to be unlimited. Please give the recursive formula to calculate g(i,j). You can assume that g(i,0)=1, g(i,j)=0 for 1 ≤ i ≤ 5 and j ≤ -1.
登入後即可作答並保存紀錄。
核心觀念
本題考查「無限供應郵票的組合計數」遞迴。 表示只使用面額不超過 的郵票,湊出 元的組合數;郵票排列順序不影響組合,例如 與 視為同一種。
可將組合依「是否使用至少一張 元郵票」分成兩類:
- 不使用 元郵票:共有 種。
- 至少使用一張 元郵票:先拿走一張 元郵票,剩下 元,且仍可繼續使用 元郵票,因此共有 種。
因此,當 元郵票有貨時,遞迴式為
其中第二項仍是 ,而不是 ,因為同一面額的郵票數量不限。
解題方法
本題中可使用的郵票面額為
而 元與 元郵票售罄。
基本條件為
因為湊出 元代表不取任何郵票,算一種空組合;若剩餘金額為負數,則不可能湊出:
只有 元郵票時,每個正整數金額都只能用全部 元郵票湊成,因此
對 ,實際遞迴式為
逐一寫出即為
第 5 題
(a) (7%) What are the seven common components in a process control block?
(b) (3%) What are the purposes of mutex, semaphore, and condition variable?
登入後即可作答並保存紀錄。
(a) Process Control Block (PCB) 的七項常見元件
- 行程狀態 (Process State):記錄行程目前的執行狀態(如:New、Ready、Running、Waiting、Terminated)。
- 程式計數器 (Program Counter, PC):記錄該行程下一條要執行的指令記憶體位址。
- CPU 暫存器 (CPU Registers):保存 Context Switch 時的 CPU 暫存器內容(如:累加器、堆疊指標、通用暫存器、狀態暫存器等),以便後續恢復執行。
- CPU 排程資訊 (CPU Scheduling Information):包含行程優先權 (Priority)、排程佇列指標 (Scheduling Queue Pointers) 與其他排程參數。
- 記憶體管理資訊 (Memory-management Information):包含基底/界限暫存器 (Base/Limit Registers)、頁表 (Page Tables) 或段表 (Segment Tables) 等記憶體映射資訊。
- 帳務資訊 (Accounting Information):記錄 CPU 已使用時間、時間限制、行程識別碼 (PID) 等統計資料。
- I/O 狀態資訊 (I/O Status Information):記錄分配給該行程的 I/O 裝置清單與開啟檔案清單 (Open File Table) 等。
第 6 題
(a) (6%) What is the difference of the binding of instructions and data to memory addresses in compile time, load time, and execution time?
(b) (4%) How to solve the thrashing problem by using the working-set model?
登入後即可作答並保存紀錄。
(a) 指令與資料的位址繫結
核心觀念
程式中的指令與資料,最初通常以符號位址或相對位址表示;作業系統必須在某個時點將它們繫結(binding)到實際的記憶體位址。三種繫結時機的差異,在於「何時決定位址」以及「程式載入後能否搬移」。
指令與資料的繫結原則相同:
- 指令繫結:決定 CPU 從哪個記憶體位址擷取指令。
- 資料繫結:決定指令存取變數、陣列或其他資料時所使用的記憶體位址。
1. 編譯時繫結(Compile-time binding)
若在編譯時便已知程式將被載入的記憶體位置,編譯器可以直接產生絕對位址(absolute address)。
例如,假設程式一定從位址 1000 開始,變數 x 位於位址 1200,編譯器便可將相關指令直接產生為存取位址 1200。
特點如下:
- 編譯時直接決定指令與資料的絕對位址。
- 程式載入時不需要重新定位。
- 若程式實際載入位置改變,原本的絕對位址便失效,必須重新編譯。
可表示為:
2. 載入時繫結(Load-time binding)
若編譯時不知道程式將被載入哪一段記憶體,編譯器會產生可重定位程式(relocatable code),使用相對於程式起始位置的位址。
載入器(loader)選定程式的載入起始位址後,再將所有指令與資料參照加上載入基底位址。
若某資料的相對位址為 ,程式載入基底位址為 ,則:
特點如下:
- 編譯時只產生相對位址。
- 程式載入記憶體時,由載入器完成重定位。
- 程式開始執行後,位址通常已固定,不能直接搬到另一位置。
- 若要改變載入位置,必須重新載入並重新定位。
3. 執行時繫結(Execution-time binding)
執行時繫結將位址決定延後到程式執行期間。CPU 產生的是邏輯位址或虛擬位址,再由記憶體管理單元(MMU)於存取當下轉換成實體位址。
在分頁系統中,轉換可概念化表示為:
在基底暫存器模型中,則可表示為:
特點如下:
- 指令擷取與資料存取時才進行位址轉換。
- 需要硬體支援,例如 MMU、頁表、基底暫存器或界限暫存器。
- 程式執行期間仍可被搬移。
- 指令與資料不必連續放置,能配合分頁或分段機制管理。
解題技巧
判斷三種繫結時機,可記成:
| 繫結時機 | 位址何時決定 | 載入後能否搬移 |
|---|---|---|
| 編譯時 | 編譯時 | 不能,位置改變須重新編譯 |
| 載入時 | 載入時 | 通常不能,須重新載入定位 |
| 執行時 | 每次執行或存取時 | 可以,需要硬體位址轉換支援 |
最容易混淆的是「載入時」與「執行時」:
- 載入時:程式開始執行前完成重定位。
- 執行時:程式執行期間仍持續進行位址轉換,因此可動態搬移。
(b) 使用 Working-set Model 解決 Thrashing
核心觀念
Thrashing(抖動)是指系統花費大量時間處理 page fault 與換頁,真正執行程式的時間反而很少。其根本原因通常是:
Working-set model 用一段最近的參照區間估計程序目前的 locality,也就是程序近期實際需要的頁面集合。
Working set 定義
第 7 題
(a) (6%) Explain sequential, direct, and index accesses for a file.
(b) (4%) What are consistency semantics for a file system?
登入後即可作答並保存紀錄。
核心觀念
本題考查兩個檔案系統的重要主題:
- 檔案存取方法(file access methods):說明系統如何找到檔案中的資料。
- 檔案一致性語意(consistency semantics):說明多個程序同時讀寫共用檔案時,一個程序的修改何時、以何種形式被其他程序看見。
記憶方式如下:
- Sequential:依序找資料。
- Direct:直接依位置找資料。
- Indexed:先查索引,再找資料。
- Consistency semantics:規範「何時可見、看到哪個版本、更新是否具原子性」。
解題方法
(a) 以「取得檔案中某筆資料時,是否必須先經過前面的資料」作為區分基準:
- 必須從目前位置逐筆前進:Sequential access。
- 已知資料位置即可直接跳至該處:Direct access。
- 先由索引取得資料位置,再進行存取:Indexed access。
(b) 先定義共用檔案的一致性語意,再說明常見的四種模型:
- UNIX semantics
- Session semantics
- Immutable shared files
- Transaction semantics
(a)檔案的三種存取方式
1. Sequential access(循序存取)
循序存取按照資料在檔案中的排列順序,一筆接一筆地讀取或寫入。系統通常維護一個目前位置指標,執行一次 read next 或 write next 後,位置自動向後移動。
基本操作可表示為:
read next:讀取目前位置之後的下一筆資料。write next:在目前位置之後寫入資料。rewind:將目前位置移回檔案開頭。
例如要讀取第 筆資料,通常必須先依序處理前面的資料。若檔案由固定長度記錄組成,循序存取第 筆資料的成本大致與 成正比。
適用情境包括:
- 磁帶等循序儲存媒體。
- 文字檔逐行讀取。
- Log 檔案。
- 影音串流與批次資料處理。
其優點是實作簡單、連續讀取效率高;缺點是查找檔案中間的資料較慢。
2. Direct access(直接存取、隨機存取)
直接存取將檔案視為一組具有編號的固定長度邏輯區塊或記錄,程式可以直接指定要讀寫的區塊編號,不必先讀取前面的內容。
常見操作包括:
read(n):讀取第 個邏輯區塊。write(n):寫入第 個邏輯區塊。seek(n):將目前位置移至第 個邏輯區塊。
若每筆記錄長度為 bytes,且記錄編號從 開始,則第 筆記錄的相對位移量為:
若以區塊大小 表示,則第 個邏輯區塊的位移量為:
檔案系統會再將邏輯區塊映射至實體儲存區塊。
直接存取適合:
- 磁碟檔案。
- 資料庫資料檔。
- 陣列型資料。
- 需要快速查詢指定位置資料的應用程式。
其優點是可快速跳至指定位置;缺點是若資料為變動長度,單靠記錄編號無法直接計算位置,必須搭配額外的位址表或索引結構。
3. Indexed access(索引存取)
索引存取使用額外的索引結構,將「查詢鍵值」或「邏輯記錄編號」對應至資料所在的區塊或位移量。
查詢流程為:
- 在索引中搜尋目標鍵值。
- 取得對應的資料區塊位址。
- 直接讀取該資料區塊。
例如索引內容如下:
| 學號 | 資料位置 |
|---|---|
| 1001 | Block 8 |
| 1002 | Block 21 |
| 1003 | Block 5 |
查詢學號 時,先在索引中找到 Block 21,再讀取該區塊中的學生資料。
索引也可以採用多層結構。當檔案很大時,第一層索引可指向第二層索引,最後再指向實際資料區塊,以減少搜尋成本。
索引存取適合:
- 依學號、姓名、日期等鍵值查詢資料。
- 變動長度記錄。
- 需要同時支援快速查詢與循序走訪的檔案。
其代價包括:
- 需要額外儲存索引。
- 新增、刪除或搬移資料時,必須同步更新索引。
- 索引損壞會影響資料定位。
三種方式比較
| 存取方式 | 找資料的方法 | 優點 | 主要限制 |
|---|---|---|---|
| Sequential | 從目前位置依序讀取 | 連續讀取效率高、實作簡單 | 中間資料查找速度慢 |
第 8 題
(a) (4%) Explain how the deadlock prevention scheme works.
(b) (3%) Explain three latencies concerned by a real-time system.
(c) (3%) Give three reasons not to use caching in a distributed file system.
登入後即可作答並保存紀錄。
(a) Deadlock prevention
核心觀念
死結(deadlock)發生的必要條件為下列四項同時成立:
- 互斥(mutual exclusion):資源一次只能由一個行程使用。
- 持有並等待(hold and wait):行程持有部分資源,同時等待其他資源。
- 不可剝奪(no preemption):資源只能由持有者主動釋放。
- 循環等待(circular wait):存在行程與資源形成環狀等待鏈。
死結預防(deadlock prevention)的核心,是在系統設計階段保證上述至少一項條件永遠不成立,因此不允許死結形成。它與死結避免不同:死結避免是在每次配置資源前檢查是否仍處於安全狀態,例如 Banker’s algorithm。
解題方法
可採取下列任一類策略:
-
破壞互斥條件:若資源允許共享,便改為共享使用,例如唯讀檔案可由多個行程同時讀取。印表機等不可共享資源則無法用此方法處理。
-
破壞持有並等待條件:要求行程開始執行前一次取得所有所需資源;或規定行程申請新資源前,必須先釋放目前持有的資源。缺點是資源利用率降低,也可能使行程長時間佔有暫時不用的資源。
-
破壞不可剝奪條件:行程持有資源而申請不到新資源時,系統剝奪其已持有的資源,待日後能取得完整資源集合時再重新執行。此方法只適用於狀態可以保存與恢復的資源,不適合直接剝奪印表機等不可回復資源。
-
破壞循環等待條件:為所有資源類型建立全序,例如
並要求行程只能依遞增順序申請資源。如此若形成循環,必須同時滿足
這在全序關係中不可能成立,因此不會有循環等待。
解題技巧
看到「deadlock prevention」時,先寫出四個必要條件,再說明系統如何破壞其中至少一項。不要將它與「偵測後復原」或「安全狀態檢查」混淆。
(b) 即時系統的三種延遲
核心觀念
即時系統(real-time system)不只要求計算結果正確,也要求結果在期限(deadline)前產生。因此重點是延遲的最壞情況上限,而非平均執行時間。
解題方法
-
中斷延遲(interrupt latency)
從硬體中斷發生,到中斷服務常式(ISR)開始執行的時間。這段時間可能包含完成目前指令、保存暫存器狀態、辨識中斷類型等工作。
-
派送延遲(dispatch latency)
從系統決定要執行某個高優先權即時行程,到該行程實際取得 CPU 開始執行的時間。通常包含結束不可中斷區段、執行排程器、進行內容切換等成本;排程延遲常被視為此階段的一部分。
第 9 題10 分
Explain the following terms:
(a) vectored I/O
(b) safety-critical system
(c) logic bomb
(d) turnaround time
(e) race condition
登入後即可作答並保存紀錄。
(a) Vectored I/O(向量化 I/O / 散集 I/O)
- 核心觀念:一種允許單一系統呼叫(如
readv/writev)在多個非連續記憶體緩衝區(buffers)與單一 I/O 裝置/檔案之間進行讀寫傳輸的機制。 - 優勢:避免多次呼叫 I/O 所產生的上下文切換(context switch)開銷,亦免去在使用者空間手動拼湊與複製緩衝區資料的成本。
(b) Safety-Critical System(安全攸關系統)
- 核心觀念:若系統發生故障或功能失效,可能直接導致人員傷亡、重大財產損失或嚴重環境災害的系統。
- 特性:極度強調高可靠度(reliability)、高可用性(availability)與硬即時(hard real-time)回應能力,常見於飛航控制、醫療設備、核能電廠及自動駕駛系統。
(c) Logic Bomb(邏輯炸彈)
- 核心觀念:隱藏在正常軟體中的惡意程式碼片段,平時處於潛伏狀態。
- 觸發機制:當預設的特定條件(如指定日期時間、特定使用者登入或特定檔案被刪除)滿足時即被啟動,執行破壞性行為(如抹除資料或毀損系統)。
(d) Turnaround Time(週轉時間)
- 核心觀念:CPU 排程中,一個行程(process)從提交(submission)至完全執行完畢(completion)所經歷的總時間。
- 公式: