113 專技高考高等考試 資訊技師 計算機系統 考古題詳解
第 一 題5 分
假如一部計算機執行兩個 4-bit Word 的加法:(使用 2 的補數,Two’s Complement),請問下列四個旗標的結果各自為何?
(一) Carry Flag
(二) Overflow Flag
(三) Sign Flag
(四) Even Parity Flag
登入後即可作答並保存紀錄。
核心觀念
本題考查 4 位元二補數加法,以及四個旗標的判定方式:
- Carry Flag(CF,進位旗標):記錄最高位元相加後是否產生進位;CF 是無號運算的進位資訊。
- Overflow Flag(OF,溢位旗標):記錄有號二補數運算的結果是否超出可表示範圍。4 位元二補數的範圍為 至 。
- Sign Flag(SF,符號旗標):通常等於結果的最高位元。
- Even Parity Flag(PF,偶同位旗標):檢查結果低 8 位元中「1」的個數是否為偶數。4 位元結果會以零補至 8 位元後計算。
解題方法
先將兩個運算元寫成 4 位元二補數:
- :
- :
進行二進位加法:
結果只保留低 4 位元,因此結果為 ;最左側額外產生的 是最高位元的進位。
接著分別依各旗標定義判定:
- Carry Flag:有最高位元進位,因此 CF = 1。
- Overflow Flag:,結果在 至 的可表示範圍內,且兩個運算元符號不同,有號加法不會因這種情形產生二補數溢位,因此 OF = 0。
第 二 題10 分
一個計算機系統可能只由一個作業系統的 Kernel 所構成,也可能是多個 Kernels 所構成的多個虛擬主機(Virtual Machines, VM)。在多個 VM 中,每個 Kernel 必須創建與維護自己的 Processes。
(一) 說明主機虛擬化(Virtualization)的目的為何?
(二) 說明虛擬主機經理(VM Manager)的主要功能為何?
登入後即可作答並保存紀錄。
核心觀念
本題考查主機虛擬化與虛擬主機經理的角色分工。虛擬化是在同一部實體主機上,藉由軟體將硬體資源抽象化並加以分配,讓多個彼此隔離的虛擬主機各自執行作業系統核心(Kernel)與程序(Process)。
每個 VM 都有自己的 Kernel,因此也各自負責建立與管理該 VM 內的程序;VM Manager 則管理 VM 與底層實體硬體資源。
解題方法
作答時可分成兩層說明:
- **為什麼要虛擬化:**說明如何抽象、共享實體資源,以及帶來的隔離與彈性。
- **由誰管理虛擬化:**說明 VM Manager 如何建立、管理 VM,並分配與控制硬體資源。
要特別區分:程序由各 VM 內的作業系統 Kernel 管理;VM Manager 管理的是 VM 及其可使用的實體資源。
(一)主機虛擬化的目的
主機虛擬化的目的,是將一部實體主機的處理器、記憶體、儲存裝置及 I/O 裝置等資源,抽象成多個虛擬主機,讓多個作業系統能在同一套實體硬體上並行執行。
其主要效益如下:
- **提高資源利用率:**讓多個工作負載共享實體硬體,減少硬體閒置。
- **提供隔離:**各 VM 在邏輯上彼此分隔;單一 VM 發生故障或資源使用異常時,較不易直接影響其他 VM。
- **支援不同作業環境:**同一部主機可執行不同作業系統或不同系統設定,方便測試、維運與相容性需求。
- **增加部署彈性:**可依需求建立、複製、移動或移除 VM,降低新增服務對實體設備的依賴。
(二)VM Manager 的主要功能
第 三 題5 分
虛擬碼(Pseudo Codes)或是高階語言的目的是讓機器可以聽得懂人類的語言,因此如何設計一個高階語言的編譯器(Compiler)變得非常重要。請將下列針對計算機系統的緩衝器(Buffer)之佇列功能(Queuing)的四個步驟,設計一個編譯器將此語言轉換為 C 語言。
(一) 當緩衝器有資料進入,累計接收資料的數量。
(二) 如果緩衝器還有空間,繼續接收資料。
(三) 如果緩衝器已無空間,覆蓋緩衝器的最後一筆資料。
(四) 累計遺失資料的數量。
登入後即可作答並保存紀錄。
核心觀念
本題考查如何把佇列緩衝器的文字敘述,轉成具體的條件判斷與計數程式。核心是區分「接收資料數」與「遺失資料數」:
- 資料進入時,接收資料數增加。
- 緩衝器有空間時,資料可以存入。
- 緩衝器已滿時,新資料會覆蓋最後一筆資料,並將遺失資料數增加。
題目沒有指定緩衝器大小或資料的實際儲存方式,因此以固定容量緩衝器表示,並用變數追蹤已使用空間。
解題方法
設緩衝器容量為 BUFFER_SIZE,目前資料筆數為 buffer_count,累計接收筆數為 received_count,累計遺失筆數為 lost_count。每收到一筆資料,就先增加接收筆數,再判斷緩衝器是否仍有空間:
- 若
buffer_count < BUFFER_SIZE,將新資料放入緩衝器,並增加目前資料筆數。 - 若緩衝器已滿,將新資料覆蓋最後一筆資料,並增加遺失筆數。此時緩衝器內的資料筆數不變。
以下假設 input_data 可取得一筆新資料,且 buffer[] 的索引從 0 開始:
第 四 題10 分
一個 且 64 bits 的計算機系統,其 64 bits 指令是由兩部分所組成:第一個與第二個 byte 為 OP Code,其餘部分是 Immediate Operand 或是 Operand Address。
在第一個 Clock Cycle 的時間內,主記憶體的位置可以經由 Address Bus 指定;在第二個 Clock Cycle 的時間內,Data 可以經由 Data Bus 做連續記憶體空間位置的存取。
如果 CPU 與主記憶體之間的 Address Bus 是 48 bits,Data Bus 是 64 bits,每個記憶體空間可容納 8 bytes,請回答下列問題:
(一) 求出可以被直接住址存取(Directly Addressable)的實體記憶體空間(Physical Memory Capacity)的大小,請使用 T-bytes 作單位。
(二) 假如作業系統的一個 PCB(Process Control Block)是 256 bytes,計算作業系統在兩個 Processes 之間做 Context-Switching 所花的時間。
登入後即可作答並保存紀錄。
核心觀念
本題考查兩項觀念:
- 實體記憶體容量:Address Bus 有 bits 時,可指定 個不同位址。每個位址代表一個記憶體空間;本題每個空間可容納 bytes,因此容量須再乘以 bytes。
- Context-Switching 時間:需將目前 Process 的 PCB 儲存,並載入下一個 Process 的 PCB。每次記憶體存取分為位址指定與資料傳送兩個 Clock Cycle。
解題方法
(一)可直接住址存取的實體記憶體容量
bits 的 Address Bus 可表示 個位址。每個位址對應 bytes,因此:
以 換算:
(二)兩個 Processes 間的 Context-Switching 時間
Context switch 需保存原 Process 的 PCB,並載入下一個 Process 的 PCB,資料總量為:
Data Bus 每次傳送 bits,也就是 bytes,因此總共需要:
第 五 題10 分
請就一個具有多重執行緒(Multi-Threading)的計算機系統,回答下列問題:
(一) 說明 Single-Threaded Process 與 Multi-Threaded Process 作業系統在使用主記憶體的 Stacks 時,會有何設計上的不同點?
(二) 在一個 Multi-Cores 的計算機系統中,作業系統是如何分配與執行多個 Multi-Threaded Processes?
登入後即可作答並保存紀錄。
核心觀念
本題考查多重執行緒(Multi-Threading)中「程序(Process)與執行緒(Thread)的資源分工」,以及多核心系統如何排程執行多個執行緒。
程序通常擁有自己的位址空間與程式資源;同一程序內的執行緒則共享程式碼、全域資料與堆積區(Heap),但各自具有獨立的程式計數器、暫存器狀態與堆疊(Stack)。堆疊保存函式呼叫框架、區域變數、參數及返回位址,因此每個執行緒需要自己的堆疊,才能各自維持獨立的執行流程。
解題方法
先比較單執行緒與多執行緒程序的執行流程數量,再說明多核心的排程單位。單執行緒程序只有一條執行流程,配置一個執行緒堆疊即可;多執行緒程序有多條可獨立執行的流程,因此每個執行緒都必須有自己的堆疊。接著區分「程序提供共享資源」與「執行緒是實際排程執行單位」,即可說明多核心如何併行執行。
(一)Single-Threaded Process 與 Multi-Threaded Process 的 Stack 設計
**單執行緒程序:**程序內只有一個執行緒,只有一條函式呼叫與返回的執行路徑,因此通常在該程序的使用者位址空間配置一個執行緒堆疊。函式呼叫時將呼叫框架推入堆疊,函式返回時再將其移除。
**多執行緒程序:**程序內有多個執行緒,各執行緒可能同時或交錯執行不同的函式呼叫,故每個執行緒都必須配置一個獨立的堆疊。每個堆疊保存該執行緒自己的區域變數、參數、返回位址及呼叫框架,不能讓同一程序的多個執行緒共用同一個執行緒堆疊,否則不同執行流程的呼叫資料會互相覆寫。