110 專技高考高等考試 資訊技師 計算機系統 考古題詳解

110 年・專技高考・高等考試・資訊技師
試題代碼 計算機系統

第 一 題25 分

給定一個十進位數字為 −161.875-161.875,請問:

  1. 其二進位表示法為何?
  2. IEEE 超 127(excess-127 system)單精準度(32-bits single precision)表示法為何?
  3. 機械常數(machine epsilon)為多少?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查十進位數轉二進位、IEEE 754 單精準度浮點數編碼,以及機械常數(machine epsilon)的定義。

IEEE 754 單精準度共 32 位元,欄位配置為:

  • 符號位元 SS:1 位
  • 指數欄位 EE:8 位,使用超 127(excess-127)偏移
  • 尾數欄位 FF:23 位;正規化數的最高有效位元 11 不儲存,稱為隱含的前導 11

解題方法

1. 轉換成二進位

先將整數與小數部分分開轉換。

整數部分:

161=128+32+1=27+25+20161=128+32+1=2^7+2^5+2^0

因此 16110=101000012161_{10}=10100001_2。

小數部分以 22 反覆相乘,取每次乘積的整數部分:

0.875×2=1.75⇒10.75×2=1.5⇒10.5×2=1.0⇒1\begin{aligned} 0.875\times 2&=1.75 &&\Rightarrow 1\\ 0.75\times 2&=1.5 &&\Rightarrow 1\\ 0.5\times 2&=1.0 &&\Rightarrow 1 \end{aligned}

因此 0.87510=0.11120.875_{10}=0.111_2。原數為負數,故:

−161.87510=−10100001.1112-161.875_{10}=-10100001.111_2

2. 編碼為 IEEE 754 單精準度

將二進位數正規化為 1.x×2e1.x\times 2^e:

−10100001.1112=−1.01000011112×27-10100001.111_2=-1.0100001111_2\times 2^7

因此符號位元為 S=1S=1。實際指數 e=7e=7,加上偏移量 127127:

E=e+127=7+127=134=100001102E=e+127=7+127=134=10000110_2
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題25 分

可用性(availability)、擴展性(scalability)和產出量(throughput)是設計伺服器時最重要的考慮因素。請回答下列問題:

(一) 假設某一系統採用一個 CPU 處理器 A,其 FIT(Failures in Time)為 200,請問此系統的 MTBF(Mean Time Between Failure)是多少?

(二) 如果此系統故障後,需要一天時間才能恢復系統運作,那麼系統的可用性是多少?

(三) 如果某公司為了降低營運成本,建構伺服器時,準備採用以許多較便宜且可靠的電腦來構建一台超級電腦的策略。若此一系統採用了 500 個 A 處理器,則其 MTBF 是多少?(假設如果有一個處理器失敗,則整個系統都會運作失敗。)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

FIT 是故障率單位,代表每 10910^9 小時發生一次故障的故障率。若故障率為 λ\lambda,則:

λ=FIT109(次/小時),MTBF=1λ\lambda=\frac{\text{FIT}}{10^9}\quad(\text{次/小時}),\qquad \text{MTBF}=\frac{1}{\lambda}

系統可用性(availability)以可運作時間占總時間的比例表示。若平均修復時間為 MTTR,則:

A=MTBFMTBF+MTTRA=\frac{\text{MTBF}}{\text{MTBF}+\text{MTTR}}

解題方法

(一)單一處理器的 MTBF

處理器 A 的故障率為:

λA=200109=2×10−7(次/小時)\lambda_A=\frac{200}{10^9}=2\times10^{-7}\quad(\text{次/小時})

因此:

MTBFA=1λA=109200=5×106 小時\text{MTBF}_A=\frac{1}{\lambda_A} =\frac{10^9}{200} =5\times10^6\text{ 小時}

換算成年:

5×10624×365≈570.8 年\frac{5\times10^6}{24\times365}\approx570.8\text{ 年}

(二)系統可用性

修復時間為一天,即 MTTR=24\text{MTTR}=24 小時。代入可用性公式:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題25 分

考慮某一系統具有 5 個行程(process):P1P1 到 P5P5,及 4 類硬體設備:AA、BB、CC、DD。硬體設備 AA 有 12 個、BB 有 12 個、CC 有 8 個、DD 有 10 個。

給定一個系統狀態如下:

行程Allocation ABCDABCDMax ABCDABCD
P1P12 0 0 12\ 0\ 0\ 14 2 1 24\ 2\ 1\ 2
P2P23 1 2 13\ 1\ 2\ 15 2 5 25\ 2\ 5\ 2
P3P32 1 0 32\ 1\ 0\ 32 3 1 62\ 3\ 1\ 6
P4P41 3 1 21\ 3\ 1\ 21 4 2 41\ 4\ 2\ 4
P5P51 4 3 21\ 4\ 3\ 23 6 6 53\ 6\ 6\ 5

Available:

AABBCCDD
33332211

其中,P1P1 這一列代表,P1P1 目前擁有 2 個 AA、0 個 BB、0 個 CC、1 個 DD,執行期間最多同時需要 4 個 AA、2 個 BB、1 個 CC、2 個 DD,而 Available 這一行表示目前系統同時執行 P1P1~P5P5 後,硬體設備還閒置 3 個 AA、3 個 BB、2 個 CC、1 個 DD。

假設使用銀行家演算法(Banker’s algorithm)來避免死結的發生,請回答以下問題:

(一) 請問需求矩陣(need matrix)為何?

(二) 假設現在 P2P2 有個請求:需要設備 1 個 AA、1 個 BB、0 個 CC、0 個 DD,請問依據銀行家演算法,系統是否會同意此請求?判斷流程為何?

(三) 假設現在 P5P5(忽略前題 P2P2 請求)有個請求:需要設備 0 個 AA、0 個 BB、2 個 CC、0 個 DD,請問依據銀行家演算法,系統是否會同意此需求?判斷流程為何?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考驗銀行家演算法(Banker’s algorithm)的安全性檢查。銀行家演算法以每個行程的最大需求量預先掌握資源需求,並只在確認系統仍處於安全狀態時,才核准資源請求。

各矩陣與向量的關係如下:

Need=Max−Allocation\text{Need}=\text{Max}-\text{Allocation}

對某一請求向量 Requesti\text{Request}_i,依序檢查:

  1. Requesti≤Needi\text{Request}_i\leq \text{Need}_i:請求不得超過該行程尚未滿足的最大需求。
  2. Requesti≤Available\text{Request}_i\leq \text{Available}:目前可用資源必須足以立即提供請求。
  3. 暫時分配資源,執行安全性檢查;若能找到所有行程的安全完成順序,才核准請求。

向量比較採逐項比較,例如 (1,1,0,0)≤(3,3,2,1)(1,1,0,0)\leq(3,3,2,1) 表示四種設備各自都不超過。

解題方法

(一)計算需求矩陣

逐行以 Max 減去 Allocation,設備順序皆為 ABCDABCD:

行程Max ABCDABCDAllocation ABCDABCDNeed ABCDABCD
P1P1(4,2,1,2)(4,2,1,2)(2,0,0,1)(2,0,0,1)(2,2,1,1)(2,2,1,1)
P2P2(5,2,5,2)(5,2,5,2)(3,1,2,1)(3,1,2,1)(2,1,3,1)(2,1,3,1)
P3P3(2,3,1,6)(2,3,1,6)(2,1,0,3)(2,1,0,3)(0,2,1,3)(0,2,1,3)
P4P4(1,4,2,4)(1,4,2,4)(1,3,1,2)(1,3,1,2)(0,1,1,2)(0,1,1,2)
P5P5(3,6,6,5)(3,6,6,5)(1,4,3,2)(1,4,3,2)(2,2,3,3)(2,2,3,3)

例如,P2P2 的需求為:

(5,2,5,2)−(3,1,2,1)=(2,1,3,1)(5,2,5,2)-(3,1,2,1)=(2,1,3,1)

(二)P2P2 請求 (1,1,0,0)(1,1,0,0)

先比較請求與 P2P2 的 Need:

(1,1,0,0)≤(2,1,3,1)(1,1,0,0)\leq(2,1,3,1)

成立。再比較與 Available:

(1,1,0,0)≤(3,3,2,1)(1,1,0,0)\leq(3,3,2,1)

也成立,因此可以進行暫時分配,並檢查安全性。

暫時分配後:

Available=(3,3,2,1)−(1,1,0,0)=(2,2,2,1)\text{Available}=(3,3,2,1)-(1,1,0,0)=(2,2,2,1)

P2P2 的 Allocation 更新為 (4,2,2,1)(4,2,2,1),Need 更新為:

(2,1,3,1)−(1,1,0,0)=(1,0,3,1)(2,1,3,1)-(1,1,0,0)=(1,0,3,1)

以暫時更新後的 Available 作為 Work,反覆尋找 Need 不大於 Work 的行程;行程完成後,將其 Allocation 加回 Work。

步驟可完成行程完成後 Work
初始—(2,2,2,1)(2,2,2,1)
1P1P1,Need (2,2,1,1)(2,2,1,1)(4,2,2,2)(4,2,2,2)
2P2P2,Need (1,0,3,1)(1,0,3,1)(8,4,4,3)(8,4,4,3)
3P4P4,Need (0,1,1,2)(0,1,1,2)(9,7,5,5)(9,7,5,5)
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題15 分

作業系統為了行程(process)排程,會由適當的排班程式(scheduler)於佇列(queue)中選取相關的行程,請問排班程式可分為哪三種?其用途分別為何?其中哪幾種與多元程式規劃程度(degree of multiprogramming)相關?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

作業系統的行程排程器(scheduler)依排程層級分為三種:

  • 長程排班程式(long-term scheduler,工作排班程式):從工作池中選取工作,載入記憶體並建立行程,使其進入就緒佇列。它控制系統接受多少工作,因此會影響多元程式規劃程度(degree of multiprogramming)。
  • 中程排班程式(medium-term scheduler,交換排班程式):暫時將部分行程換出主記憶體,之後再換入,以調節記憶體負載及行程數,也會影響多元程式規劃程度。
  • 短程排班程式(short-term scheduler,CPU 排班程式):從就緒佇列選出下一個行程,分派 CPU 執行。它執行頻率最高,負責決定 CPU 的使用順序。

解題方法

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 五 題10 分

給定一個列導向(row-oriented)分頁系統,有兩個分頁(page),每頁可裝 200 個整數(integer)。假設一個二維整數陣列 A[100][100]A[100][100] 在此分頁系統中執行,請問下列程式(a)與(b),若使用 LRU(Least Recently Used)分頁替換演算法,分別會產生多少個分頁錯誤(page faults)?

(a) for(int i=0i=0;i<100i<100;i++i++)   for(int j=0j=0;j<100j<100;j++j++)     A[i][j]=0A[i][j]=0;

(b) for(int j=0j=0;j<100j<100;j++j++)   for(int i=0i=0;i<100i<100;i++i++)     A[i][j]=0A[i][j]=0;

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查陣列在列導向(row-oriented)儲存下的記憶體存取順序,以及 LRU 分頁替換。列導向表示同一列的元素連續存放,因此 A[i][j]A[i][j] 與 A[i][j+1]A[i][j+1] 相鄰。

每頁可容納 200200 個整數,而陣列共有 100×100=10,000100\times100=10{,}000 個整數,所以需要:

10,000200=50 頁\frac{10{,}000}{200}=50\text{ 頁}

系統只有兩個頁框。存取的資料不在目前頁框中時,產生一次分頁錯誤;若頁框已滿,LRU 會置換最近最久未使用的頁面。

解題方法

將陣列依列導向切分成頁面。每列有 100100 個整數,因此每頁可容納兩列:

  • 第 1 頁:第 0、10、1 列
  • 第 2 頁:第 2、32、3 列
  • 依此類推
  • 第 50 頁:第 98、9998、99 列

(a)外層走列、內層走欄

程式依序存取 A[0][0],A[0][1],…,A[0][99]A[0][0],A[0][1],\ldots,A[0][99],再存取下一列。由於每頁含兩列,存取順序會完整讀完一頁後才進入下一頁。

每頁第一次被存取時產生一次分頁錯誤;同一頁的其餘存取都命中。共存取 50 頁,因此:

50 次分頁錯誤50\text{ 次分頁錯誤}
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題