110 民航特考三等 航空通信 計算機概論 考古題詳解
第 一 題25 分
行程(Process)是電腦作業系統中重要的元素,請回答下列有關作業系統行程之問題:
(一)在作業系統中,行程以行程控制區塊(Process Control Block, PCB)表示,PCB 中除了 CPU 排程資訊和記憶體管理資訊外,還有哪三個元素?一個行程在電腦中執行時會有 New、Running、Waiting、Ready、Terminated 等狀態,請完成下列程序狀態圖(Process State Diagram)中(I)~(VI)的狀態和轉換。(15 分)
🖼️【此處有附圖,請對照原卷】
圖中包含下列狀態與轉換:
- New
- (IV)
- (V)
- (VI)
- Terminate
- (I)~(VI)之狀態或轉換
- I/O 或 event
- I/O 或 event wait
- exit
(二)請說明兩種程序間溝通(Interprocess Communication, IPC)機制的基礎模型:分享記憶體(Shared Memory)與訊息傳遞(Message Passing),在不同狀況下的優缺點。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查兩個作業系統觀念:行程控制區塊(PCB)保存的行程資訊,以及行程在 New、Ready、Running、Waiting、Terminated 之間的狀態轉換;另外也比較共享記憶體與訊息傳遞兩種行程間溝通(IPC)模型。
PCB 用來保存行程執行與管理所需的資訊。常見欄位包括行程狀態、行程識別資訊、程式計數器、CPU 暫存器、CPU 排程資訊、記憶體管理資訊、會計資訊及 I/O 狀態資訊。題目指定列出三項時,可答:行程狀態、會計資訊、I/O 狀態資訊;完整 PCB 欄位也包含行程識別資訊、程式計數器及 CPU 暫存器。
解題方法
依狀態圖中各箭頭的方向判斷轉換:新行程先進入就緒佇列;排程器選中就緒行程後,行程開始執行;執行中的行程遭到搶先時回到就緒狀態;等待 I/O 或事件時進入等待狀態,事件完成後再回到就緒狀態;執行完成則結束。
(一)PCB 欄位與狀態圖
PCB 中除了題目提到的 CPU 排程資訊和記憶體管理資訊外,三項可答:
- 行程狀態:記錄行程目前是 New、Ready、Running、Waiting 或 Terminated。
- 會計資訊:記錄 CPU 使用時間、執行時間、帳號或資源使用量等資訊。
- I/O 狀態資訊:記錄已配置的 I/O 裝置、開啟的檔案及相關 I/O 資源。
完整 PCB 也常包含行程識別資訊、程式計數器及 CPU 暫存器等欄位。
狀態圖各空格如下:
- (I):Admitted(接納),New → Ready
- (II):Interrupt/Preemption(中斷或被搶先),Running → Ready
- (III):Scheduler dispatch(排程器派遣),Ready → Running
- (IV):Ready(就緒)
- (V):Running(執行)
- (VI):Waiting(等待)
其餘轉換為:
第 二 題25 分
佇列(Queue)是重要的資料結構,可使用陣列(Array)或鏈結串列(Link List)實作。
(一)請填寫下表,從空間使用、增刪速度上說明,以陣列(Array)或鏈結串列(Link List)實作佇列的優缺點。(6 分)
| 比較項目 | 以陣列實作 | 鏈結串列實作 |
|---|---|---|
| 使用空間數量已知 | ||
| 使用空間數量未知 | ||
| 增加刪除元素 |
(二)佇列一般從後端(back)加入(enqueue)一個新元素,從前端(front)刪除(dequeue)一個元素。請完成下面使用陣列實作環狀佇列(Circular Queue)程式碼(I~V)空格,使輸出為:(15 分)
enqueue data=0, enqueue data=1, Queue Full, Queue Full, Queue Full,
dequeue data=0, dequeue data=1, Queue Empty, Queue Empty, Queue Empty,
程式碼如下:
#include <stdio.h>
#define SIZE 3
typedef enum { FALSE, TRUE } bool;
bool isEmpty(int front, int back) {
return (front == ____); // (I)
}
bool isFull(int front, int back) {
return ((____) == front); // (II)
}
bool enqueue(int data[], int index[], int key) {
// front = index[0];
// back = index[1];
if (isFull(index[0], index[1]))
return FALSE;
index[1] = ____; // (III)
data[index[1]] = key;
return ____; // (IV)
}
int dequeue(int data[], int index[]) {
// front = index[0];
// back = index[1];
// dequeue data = index[2]
if (isEmpty(index[0], index[1]))
return FALSE;
index[0] = ____; // (V)
index[2] = data[index[0]];
return TRUE;
}
int main() {
int k = 0;
// front = index[0]; back = index[1];
// dequeue data = index[2]
int index[3] = { 0, 0, 0 };
int data[SIZE];
bool result;
for (int i = 0; i < 5; i++) {
result = enqueue(data, index, k++);
if (!result)
printf("Queue Full, ");
else
printf("enqueue data=%d, ", k - 1);
}
printf("\n");
for (int i = 0; i < 5; i++) {
result = dequeue(data, index);
if (!result)
printf("Queue Empty, ");
else
printf("dequeue data=%d, ", index[2]);
}
return 0;
}
(三)請說明最大優先權佇列(Max-Priority Queue)有哪些基本操作,以及如何應用於作業系統排程。(4 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查佇列的先進先出(FIFO)特性、陣列與鏈結串列的實作差異、環狀佇列的空/滿判斷,以及最大優先權佇列在作業系統排程中的應用。
(一)陣列與鏈結串列實作佇列
| 比較項目 | 以陣列實作 | 鏈結串列實作 |
|---|---|---|
| 使用空間數量已知 | 可一次配置固定大小的連續空間,沒有節點指標額外開銷,適合容量已知的情況。 | 仍須逐節點配置空間,且每個節點要額外儲存指標,空間使用較不精簡。 |
| 使用空間數量未知 | 容量固定時可能不足;若要擴充,通常需重新配置較大的陣列並搬移資料。 | 可依元素數量逐步配置與釋放節點,較能配合數量變動。 |
| 增加刪除元素 | 一般線性陣列若需維持元素連續,插入或刪除可能要搬移元素,時間為 。 | 若已持有前端與後端指標,在佇列兩端調整連結即可,增加與刪除時間為 。 |
**解題方法:**先比較容量管理方式,再比較操作時是否需要搬移資料。須注意,若陣列採用環狀佇列,入隊與出隊可用前後端索引循環移動,兩者皆可達 ,不必搬移其餘元素。
(二)環狀佇列程式碼
空格填答
- (I)
back - (II)
(back + 1) % SIZE - (III)
(index[1] + 1) % SIZE - (IV)
TRUE - (V)
(index[0] + 1) % SIZE
其中,(II)的完整判斷式為:
return (((back + 1) % SIZE) == front);
推導與執行過程
程式以 index[0] 儲存 front、index[1] 儲存 back,並以 front == back 表示佇列為空。為了區分空佇列與滿佇列,陣列會保留一格不用,因此滿佇列條件是:
enqueue 先檢查是否已滿;未滿時將 back 前進一格,再把新資料放入該位置。dequeue 先檢查是否為空;未空時將 front 前進一格,再讀取該位置的資料。
初始時 front=back=0,而 SIZE=3:
第 三 題25 分
第五代行動通訊標準(5G)是第 4 代行動通訊標準(4G)後技術的進化。
(一)請說明國際電信聯盟(ITU)制定 5G 三大目標/特性:
- eMBB(高頻寬、高速)。
- uRLLC(高可靠度、低延遲)。
- mMTC(多連結)。
(15 分)
(二)請說明無人機與虛擬實境(Virtual Reality, VR)如何應用這些特性。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查 5G(ITU 所稱 IMT-2020)的三類主要使用情境,以及如何把不同的通訊需求對應到無人機與虛擬實境(VR)應用。三項特性各自優先處理的問題不同:
- eMBB(enhanced Mobile Broadband,增強型行動寬頻):重視高資料傳輸速率與大頻寬,適合傳送高畫質、大容量資料。
- uRLLC(ultra-Reliable and Low-Latency Communications,超高可靠度與低延遲通訊):重視通訊可靠性與短反應時間,適合即時控制、遠端操作等任務。
- mMTC(massive Machine-Type Communications,大規模機器型通訊):重視大量裝置同時連網,適合感測器、物聯網設備與大量終端回報資料。
這三者是不同的服務需求方向,不代表所有 5G 應用都必須同時達到三者的最高能力。
解題方法
先把每項特性簡化成一個問題,再對照應用需求:
| 5G 特性 | 核心問題 | 應用需求 |
|---|---|---|
| eMBB | 資料量大、傳輸速率高 | 高畫質影像、沉浸式 VR 畫面 |
| uRLLC | 反應時間短、連線可靠 | 無人機即時操控、VR 畫面與動作同步 |
| mMTC | 大量裝置同時連網 | 無人機群、感測器或多個穿戴裝置連線 |
作答時,先說明特性,再各自舉出無人機與 VR 如何受益,並交代應用背後的原因。
(一)5G 三大目標/特性
1. eMBB:增強型行動寬頻
eMBB 著重提升行動網路的資料傳輸速率與可用頻寬,使網路能承載大量資料。常見需求包括高畫質影音串流、大型檔案傳輸及高解析度影像回傳。
重點是「傳得多、傳得快」,而非以裝置數量或即時控制為主。
2. uRLLC:超高可靠度與低延遲通訊
uRLLC 著重降低資料從發送端到接收端所需的時間,並提升通訊成功率與穩定性。對遠端控制或安全相關任務而言,延遲過長或連線中斷都可能影響操作結果。
重點是「反應快、連線可靠」。即使資料量不大,仍可能非常需要 uRLLC。
3. mMTC:大規模機器型通訊
第 四 題25 分
請回答下列作業系統記憶體管理相關問題:
(一)設定記憶體管理中,目前的記憶體配置狀態如下圖,A~E 區域為尚未使用的部分,其餘為已配置行程(process)區域。若有新行程需要 290K 記憶體,請分別使用最先合適法(first fit)、最佳合適法(best fit)與最差合適法(worst fit)時,新行程會被分配的區域,並計算新產生的碎片大小。(18 分)
🖼️【此處有附圖,請對照原卷】
記憶體區域由上而下如下:
- Process 1
- A(490K)
- Process 2
- B(210K)
- Process 3
- C(400K)
- Process 4
- D(690K)
- Process 5
- E(320K)
- Process 6
(二)記憶體碎裂可分為外部碎裂(external fragmentation)與內部碎裂(internal fragmentation)。請說明分頁(paging)與分段(segmentation)記憶體管理法會產生碎裂的種類與原因。(7 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查連續記憶體配置的三種搜尋策略,以及分頁、分段造成的碎裂類型。
- 最先合適法(first fit):由記憶體起始位置依序搜尋,選擇第一個足以容納行程的空閒區。
- 最佳合適法(best fit):在足以容納行程的空閒區中,選擇容量最小者。
- 最差合適法(worst fit):在足以容納行程的空閒區中,選擇容量最大者。
- 配置後該空閒區的剩餘容量為:
解題方法
新行程需要 。由圖可知,空閒區依序為 、、、、。只有 、、、 足以容納新行程; 不足。
| 配置策略 | 選取區域 | 配置後剩餘容量 |
|---|---|---|
| 最先合適法 | ||
| 最佳合適法 | ||
| 最差合適法 |
因此,新行程分別配置於 A、E、D 區,並各留下 、、 的空閒區。