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

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

第 一 題5 分

假如一部計算機執行兩個 4-bit Word 的加法:(−1)+(+1)(-1)+(+1)(使用 2 的補數,Two’s Complement),請問下列四個旗標的結果各自為何?

(一) Carry Flag

(二) Overflow Flag

(三) Sign Flag

(四) Even Parity Flag

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

這一題的完整詳解

核心觀念

本題考查 4 位元二補數加法,以及四個旗標的判定方式:

  • Carry Flag(CF,進位旗標):記錄最高位元相加後是否產生進位;CF 是無號運算的進位資訊。
  • Overflow Flag(OF,溢位旗標):記錄有號二補數運算的結果是否超出可表示範圍。4 位元二補數的範圍為 −8-8 至 +7+7。
  • Sign Flag(SF,符號旗標):通常等於結果的最高位元。
  • Even Parity Flag(PF,偶同位旗標):檢查結果低 8 位元中「1」的個數是否為偶數。4 位元結果會以零補至 8 位元後計算。

解題方法

先將兩個運算元寫成 4 位元二補數:

  • −1-1:111121111_2
  • +1+1:000120001_2

進行二進位加法:

1111+ 00011 0000\begin{array}{r} 1111\\ +\,0001\\ \hline 1\,0000 \end{array}

結果只保留低 4 位元,因此結果為 000020000_2;最左側額外產生的 11 是最高位元的進位。

接著分別依各旗標定義判定:

  1. Carry Flag:有最高位元進位,因此 CF = 1。
  2. Overflow Flag:−1+1=0-1+1=0,結果在 −8-8 至 +7+7 的可表示範圍內,且兩個運算元符號不同,有號加法不會因這種情形產生二補數溢位,因此 OF = 0。
🔒

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

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

免費註冊

第 二 題10 分

一個計算機系統可能只由一個作業系統的 Kernel 所構成,也可能是多個 Kernels 所構成的多個虛擬主機(Virtual Machines, VM)。在多個 VM 中,每個 Kernel 必須創建與維護自己的 Processes。

(一) 說明主機虛擬化(Virtualization)的目的為何?

(二) 說明虛擬主機經理(VM Manager)的主要功能為何?

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

這一題的完整詳解

核心觀念

本題考查主機虛擬化與虛擬主機經理的角色分工。虛擬化是在同一部實體主機上,藉由軟體將硬體資源抽象化並加以分配,讓多個彼此隔離的虛擬主機各自執行作業系統核心(Kernel)與程序(Process)。

每個 VM 都有自己的 Kernel,因此也各自負責建立與管理該 VM 內的程序;VM Manager 則管理 VM 與底層實體硬體資源。

解題方法

作答時可分成兩層說明:

  1. **為什麼要虛擬化:**說明如何抽象、共享實體資源,以及帶來的隔離與彈性。
  2. **由誰管理虛擬化:**說明 VM Manager 如何建立、管理 VM,並分配與控制硬體資源。

要特別區分:程序由各 VM 內的作業系統 Kernel 管理;VM Manager 管理的是 VM 及其可使用的實體資源。

(一)主機虛擬化的目的

主機虛擬化的目的,是將一部實體主機的處理器、記憶體、儲存裝置及 I/O 裝置等資源,抽象成多個虛擬主機,讓多個作業系統能在同一套實體硬體上並行執行。

其主要效益如下:

  • **提高資源利用率:**讓多個工作負載共享實體硬體,減少硬體閒置。
  • **提供隔離:**各 VM 在邏輯上彼此分隔;單一 VM 發生故障或資源使用異常時,較不易直接影響其他 VM。
  • **支援不同作業環境:**同一部主機可執行不同作業系統或不同系統設定,方便測試、維運與相容性需求。
  • **增加部署彈性:**可依需求建立、複製、移動或移除 VM,降低新增服務對實體設備的依賴。

(二)VM Manager 的主要功能

🔒

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

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

免費註冊

第 三 題5 分

虛擬碼(Pseudo Codes)或是高階語言的目的是讓機器可以聽得懂人類的語言,因此如何設計一個高階語言的編譯器(Compiler)變得非常重要。請將下列針對計算機系統的緩衝器(Buffer)之佇列功能(Queuing)的四個步驟,設計一個編譯器將此語言轉換為 C 語言。

(一) 當緩衝器有資料進入,累計接收資料的數量。

(二) 如果緩衝器還有空間,繼續接收資料。

(三) 如果緩衝器已無空間,覆蓋緩衝器的最後一筆資料。

(四) 累計遺失資料的數量。

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

這一題的完整詳解

核心觀念

本題考查如何把佇列緩衝器的文字敘述,轉成具體的條件判斷與計數程式。核心是區分「接收資料數」與「遺失資料數」:

  • 資料進入時,接收資料數增加。
  • 緩衝器有空間時,資料可以存入。
  • 緩衝器已滿時,新資料會覆蓋最後一筆資料,並將遺失資料數增加。

題目沒有指定緩衝器大小或資料的實際儲存方式,因此以固定容量緩衝器表示,並用變數追蹤已使用空間。

解題方法

設緩衝器容量為 BUFFER_SIZE,目前資料筆數為 buffer_count,累計接收筆數為 received_count,累計遺失筆數為 lost_count。每收到一筆資料,就先增加接收筆數,再判斷緩衝器是否仍有空間:

  • 若 buffer_count < BUFFER_SIZE,將新資料放入緩衝器,並增加目前資料筆數。
  • 若緩衝器已滿,將新資料覆蓋最後一筆資料,並增加遺失筆數。此時緩衝器內的資料筆數不變。

以下假設 input_data 可取得一筆新資料,且 buffer[] 的索引從 0 開始:

🔒

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

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

免費註冊

第 四 題10 分

一個 10 GHz10\ \mathrm{GHz} 且 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 所花的時間。

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

這一題的完整詳解

核心觀念

本題考查兩項觀念:

  1. 實體記憶體容量:Address Bus 有 nn bits 時,可指定 2n2^n 個不同位址。每個位址代表一個記憶體空間;本題每個空間可容納 88 bytes,因此容量須再乘以 88 bytes。
  2. Context-Switching 時間:需將目前 Process 的 PCB 儲存,並載入下一個 Process 的 PCB。每次記憶體存取分為位址指定與資料傳送兩個 Clock Cycle。

解題方法

(一)可直接住址存取的實體記憶體容量

4848 bits 的 Address Bus 可表示 2482^{48} 個位址。每個位址對應 88 bytes,因此:

248×8=248×23=251 bytes2^{48}\times 8 =2^{48}\times 2^3 =2^{51}\text{ bytes}

以 1 T-byte=240 bytes1\text{ T-byte}=2^{40}\text{ bytes} 換算:

251240=211=2048 T-bytes\frac{2^{51}}{2^{40}} =2^{11} =2048\text{ T-bytes}

(二)兩個 Processes 間的 Context-Switching 時間

Context switch 需保存原 Process 的 PCB,並載入下一個 Process 的 PCB,資料總量為:

256+256=512 bytes256+256=512\text{ bytes}

Data Bus 每次傳送 6464 bits,也就是 88 bytes,因此總共需要:

5128=64 次資料傳送\frac{512}{8}=64\text{ 次資料傳送}
🔒

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

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

免費註冊

第 五 題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 設計

**單執行緒程序:**程序內只有一個執行緒,只有一條函式呼叫與返回的執行路徑,因此通常在該程序的使用者位址空間配置一個執行緒堆疊。函式呼叫時將呼叫框架推入堆疊,函式返回時再將其移除。

**多執行緒程序:**程序內有多個執行緒,各執行緒可能同時或交錯執行不同的函式呼叫,故每個執行緒都必須配置一個獨立的堆疊。每個堆疊保存該執行緒自己的區域變數、參數、返回位址及呼叫框架,不能讓同一程序的多個執行緒共用同一個執行緒堆疊,否則不同執行流程的呼叫資料會互相覆寫。

🔒

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

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

免費註冊

其他考古題