下列有關虛擬記憶體之敘述,何者正確?①可讓在系統中程序總主記憶體需求遠大於實體記憶體的容量 ②分頁處理(paging)是虛擬記憶體的其中一項方法 ③可以讓非常多的程序在系統中而不會造成效能降低 ④若使用分頁處理,系統需要一個分頁表來追蹤個別行程使用分頁的情形
-
A. ①②③0% (0)
-
B. ①②④46.2% (12)
-
C. ①③④11.5% (3)
-
D. ②③④42.3% (11)
解說:
① 可讓在系統中程序總主記憶體需求遠大於實體記憶體的容量 ✅(正確)
虛擬記憶體(Virtual Memory)允許系統將部分記憶體內容存放在磁碟上,使得程式執行時的總記憶體需求可以超過實體 RAM 的大小。這是透過分頁(paging)或分段(segmentation)機制來達成的,因此這個敘述正確。
② 分頁處理 (paging) 是虛擬記憶體的其中一項方法 ✅(正確)
② 分頁處理 (paging) 是虛擬記憶體的其中一項方法 ✅(正確)
分頁(Paging) 是虛擬記憶體技術的一種,將程式記憶體劃分為固定大小的頁(page),並將其對應到實體記憶體的頁框(frame)。這樣可以讓程式執行時不必連續佔用物理記憶體,有助於提升記憶體使用效率,因此這個敘述正確。
③ 可以讓非常多的程序在系統中而不會造成效能降低 ❌(錯誤)
③ 可以讓非常多的程序在系統中而不會造成效能降低 ❌(錯誤)
雖然虛擬記憶體允許執行多個程序,但如果同時運行過多程序,可能會導致大量的頁面置換(page swapping),使系統頻繁存取磁碟(發生「thrashing」現象),從而嚴重降低效能。
因此,虛擬記憶體不能保證在大量程序執行時仍維持高效能,這個敘述是錯誤的。
④ 若使用分頁處理,系統需要一個分頁表來追蹤個別行程使用分頁的情形 ✅(正確)
因此,虛擬記憶體不能保證在大量程序執行時仍維持高效能,這個敘述是錯誤的。
④ 若使用分頁處理,系統需要一個分頁表來追蹤個別行程使用分頁的情形 ✅(正確)
在分頁管理中,每個進程都有分頁表(Page Table),用來追蹤該進程的虛擬頁面對應到哪個實體頁框。這個表格儲存在記憶體中,CPU 會使用記憶體管理單元(MMU, Memory Management Unit)來查詢和轉換記憶體位址,因此這個敘述正確。
選項分析:
(A) ①②③ ❌(③錯誤)
(B) ①②④ ✅(①②④皆正確)
(C) ①③④ ❌(③錯誤)
(D) ②③④ ❌(③錯誤)
正確答案:
✅ (B) ①②④
選項分析:
(A) ①②③ ❌(③錯誤)
(B) ①②④ ✅(①②④皆正確)
(C) ①③④ ❌(③錯誤)
(D) ②③④ ❌(③錯誤)
正確答案:
✅ (B) ①②④
答對率 : 46.2 %
當主記憶體的空間無法容納執行程式所占的記憶體空間時,下列那個技術可以克服此問題?
-
A. 快閃記憶體(flash memory)0% (0)
-
B. 虛擬記憶體(virtual memory)96.2% (25)
-
C. 快取記憶體(cache memory)3.8% (1)
-
D. 虛擬硬碟(virtual disk)0% (0)
解說:
(A) 快閃記憶體(Flash Memory) ❌(錯誤)
快閃記憶體(如 SSD、USB 隨身碟)是一種非揮發性記憶體,主要用於長期儲存資料,而不是用來擴展執行程式的記憶體。雖然現代系統有時會使用 SSD 作為虛擬記憶體的儲存空間(如 Windows 的「虛擬記憶體檔案」或 Linux 的 Swap 分區),但 Flash Memory 本身不是虛擬記憶體技術,所以這個選項是錯的。
(B) 虛擬記憶體(Virtual Memory) ✅(正確)
(B) 虛擬記憶體(Virtual Memory) ✅(正確)
虛擬記憶體是一種允許程式使用超過實體記憶體容量的技術,它會將部分記憶體需求映射到磁碟(如 Swap 空間或 Page File)。當主記憶體不足時,系統會將較少使用的記憶體頁面移到磁碟(頁面置換,Paging),以釋放主記憶體來執行新的任務。
這正是克服主記憶體不足的解決方案,因此這個選項是正確的。
(C) 快取記憶體(Cache Memory) ❌(錯誤)
這正是克服主記憶體不足的解決方案,因此這個選項是正確的。
(C) 快取記憶體(Cache Memory) ❌(錯誤)
快取記憶體(Cache Memory)是用來加速 CPU 存取記憶體的技術,它儲存最近使用的資料,以減少存取主記憶體的延遲。它不能增加可用的記憶體容量,因此不適用於解決主記憶體不足的問題,這個選項是錯的。
(D) 虛擬硬碟(Virtual Disk) ❌(錯誤)
(D) 虛擬硬碟(Virtual Disk) ❌(錯誤)
虛擬硬碟(Virtual Disk)是一種軟體模擬的硬碟,例如虛擬機(VM)使用的 .vhd 檔案,或者 RAM Disk(用 RAM 模擬硬碟)。虛擬硬碟主要是儲存設備的技術,而不是用來擴展執行程式的記憶體,因此這個選項是錯的。
正確答案:
✅ (B) 虛擬記憶體(Virtual Memory)
正確答案:
✅ (B) 虛擬記憶體(Virtual Memory)
答對率 : 96.2 %
下列有關虛擬記憶體的敘述,何者錯誤?
-
A. 虛擬記憶體使得程式目的碼大小只可和實際記憶體一樣大88.5% (23)
-
B. 虛擬記憶體使得程式執行時其目的碼不需完全存放在實體記憶體內3.8% (1)
-
C. 虛擬記憶體產生許多額外負擔是因為分頁錯誤的關係7.7% (2)
-
D. 虛擬記憶體對多程式系統的處理有幫助0% (0)
解說:
(A)虛擬記憶體使得程式目的碼大小只可和實際記憶體一樣大 ❌(錯誤)
虛擬記憶體的主要目的就是讓程式執行時的記憶體需求可以超過實體記憶體的大小,因此程式的目的碼(executable code)大小並不受限於實體記憶體的容量。作業系統會透過分頁(paging)或分段(segmentation)機制,將不常用的部分暫時存放在磁碟(如 swap 空間),僅保留必要的部分於 RAM 中。
錯誤原因:虛擬記憶體允許程式的記憶體需求大於實體記憶體,因此這個選項的說法是錯的。
虛擬記憶體的主要目的就是讓程式執行時的記憶體需求可以超過實體記憶體的大小,因此程式的目的碼(executable code)大小並不受限於實體記憶體的容量。作業系統會透過分頁(paging)或分段(segmentation)機制,將不常用的部分暫時存放在磁碟(如 swap 空間),僅保留必要的部分於 RAM 中。
錯誤原因:虛擬記憶體允許程式的記憶體需求大於實體記憶體,因此這個選項的說法是錯的。
(B) 虛擬記憶體使得程式執行時其目的碼不需完全存放在實體記憶體內 ✅(正確)
虛擬記憶體的設計允許程式的部分代碼與資料存放在磁碟,只有當需要時才載入 RAM。
這樣可以讓記憶體使用更加有效率,且允許執行超過 RAM 容量的程式,因此這個選項是正確的。
虛擬記憶體的設計允許程式的部分代碼與資料存放在磁碟,只有當需要時才載入 RAM。
這樣可以讓記憶體使用更加有效率,且允許執行超過 RAM 容量的程式,因此這個選項是正確的。
(C) 虛擬記憶體產生許多額外負擔是因為分頁錯誤的關係 ✅(正確)
頁面錯誤(Page Fault) 發生時,作業系統必須從磁碟載入所需的頁面到 RAM,這個過程非常耗時,因為磁碟存取速度遠低於 RAM。如果系統發生大量的頁面錯誤(Thrashing 現象),則 CPU 幾乎都在處理記憶體交換(swapping),導致效能急劇下降,因此這個選項是正確的。
頁面錯誤(Page Fault) 發生時,作業系統必須從磁碟載入所需的頁面到 RAM,這個過程非常耗時,因為磁碟存取速度遠低於 RAM。如果系統發生大量的頁面錯誤(Thrashing 現象),則 CPU 幾乎都在處理記憶體交換(swapping),導致效能急劇下降,因此這個選項是正確的。
(D) 虛擬記憶體對多程式系統的處理有幫助 ✅(正確)
多程式系統(Multiprogramming) 允許多個程式同時執行,而虛擬記憶體可以讓這些程式共享有限的 RAM 資源,透過分頁與交換(paging & swapping) 來提高記憶體利用率。
這使得系統可以同時執行更多的程式,因此這個選項是正確的。
多程式系統(Multiprogramming) 允許多個程式同時執行,而虛擬記憶體可以讓這些程式共享有限的 RAM 資源,透過分頁與交換(paging & swapping) 來提高記憶體利用率。
這使得系統可以同時執行更多的程式,因此這個選項是正確的。
正確答案:
✅ (A) 虛擬記憶體使得程式目的碼大小只可和實際記憶體一樣大 (錯誤)
✅ (A) 虛擬記憶體使得程式目的碼大小只可和實際記憶體一樣大 (錯誤)
答對率 : 88.5 %
以下關於分頁記憶體管理(paging)的功能描述何者錯誤?
-
A. 記憶體分頁技術所使用的頁轉換表上可以加上一些特別的旗標(flag),藉由這些旗標可以指定各個分頁的存取權限0% (0)
-
B. 記憶體分頁技術可以讓數個不同的程序共用同一塊記憶體。在某些情況下甚至可以共用程式區段及資料區段7.7% (2)
-
C. 記憶體分頁技術及記憶體分頁保護技術,可以用以設計寫入時複製(copy on write)以提高系統效能7.7% (2)
-
D. 通常愈先進的處理器,所採用的分頁大小(page size)愈小84.6% (22)
解說:
(A) 記憶體分頁技術所使用的頁轉換表上可以加上一些特別的旗標(flag),藉由這些旗標可以指定各個分頁的存取權限 ✅(正確)
在分頁記憶體管理(Paging) 中,每個頁表(Page Table) 項目會包含一些控制位元(flag),例如:
在分頁記憶體管理(Paging) 中,每個頁表(Page Table) 項目會包含一些控制位元(flag),例如:
(1)R/W(Read/Write)權限:控制該頁是否允許寫入。
(2)U/S(User/Supervisor)權限:控制該頁是否只能被核心模式(Kernel Mode)存取。
(3)Present Bit:表示該頁是否已載入主記憶體(RAM),否則可能需要觸發頁面錯誤(Page Fault)。
(4)Dirty Bit:標記該頁是否已被修改,以決定是否需要回寫到磁碟。
這些存取權限可以保護記憶體,避免未授權的程式存取不該存取的頁面,因此這個選項是正確的。
(2)U/S(User/Supervisor)權限:控制該頁是否只能被核心模式(Kernel Mode)存取。
(3)Present Bit:表示該頁是否已載入主記憶體(RAM),否則可能需要觸發頁面錯誤(Page Fault)。
(4)Dirty Bit:標記該頁是否已被修改,以決定是否需要回寫到磁碟。
這些存取權限可以保護記憶體,避免未授權的程式存取不該存取的頁面,因此這個選項是正確的。
(B) 記憶體分頁技術可以讓數個不同的程序共用同一塊記憶體。在某些情況下甚至可以共用程式區段及資料區段 ✅(正確)
(1)記憶體分頁允許多個進程(Processes)共用相同的記憶體頁面,這在下列情況下特別有用:
a.共享程式碼(Shared Code):例如,所有使用者程序可以共用標準函式庫(如 libc),這樣不需要為每個程序都複製一份函式庫,節省記憶體。
b.共享資料區段(Shared Data):某些應用程式(如多執行緒程序)可能需要共享記憶體來交換資訊。
例子:在 UNIX 系統中,fork() 產生的子進程可以共用父進程的程式碼區段,因此這個選項是正確的。
(C) 記憶體分頁技術及記憶體分頁保護技術,可以用以設計寫入時複製 (Copy on Write, COW) 以提高系統效能 ✅(正確)
(1)寫入時複製(Copy on Write, COW) 是一種延遲記憶體複製的技術:
當一個程序使用 fork() 創建子進程時,子進程會先共享父進程的記憶體頁面,而不是立即複製。
(2)只有當子進程或父進程嘗試修改該頁面時,系統才會真正分配新的記憶體並進行複製。
(3)這種技術大幅減少不必要的記憶體複製,提高系統效能。
這依賴於分頁技術與頁表中的保護位元(如 R/W 權限) 來實現,因此這個選項是正確的。
(D) 通常愈先進的處理器,所採用的分頁大小(page size)愈小 ❌(錯誤)
(1)事實上,較新的處理器通常支援較大的分頁大小,而不是較小的分頁大小。例如:
傳統 x86 分頁大小:4KB
x86-64 支援大頁(Huge Pages):2MB 或 1GB
ARM 架構可能支援 4KB、64KB、1MB、16MB 等不同大小的頁面。
(2)為什麼現代處理器支援更大的頁面?
降低 TLB 失誤(TLB Miss):頁表的轉譯快取(TLB)有固定的容量,使用較大頁面可以減少 TLB 查詢的次數,提高效能。
減少頁表大小:較大的頁面意味著更少的頁目錄和頁表,降低記憶體管理開銷。
適用於大規模應用:像是資料庫、虛擬機、雲端運算等應用通常需要更大的頁面來提高效能。
因此,這個選項是錯的,因為愈先進的處理器通常支援更大的分頁大小,而非更小的分頁大小。
(1)記憶體分頁允許多個進程(Processes)共用相同的記憶體頁面,這在下列情況下特別有用:
a.共享程式碼(Shared Code):例如,所有使用者程序可以共用標準函式庫(如 libc),這樣不需要為每個程序都複製一份函式庫,節省記憶體。
b.共享資料區段(Shared Data):某些應用程式(如多執行緒程序)可能需要共享記憶體來交換資訊。
例子:在 UNIX 系統中,fork() 產生的子進程可以共用父進程的程式碼區段,因此這個選項是正確的。
(C) 記憶體分頁技術及記憶體分頁保護技術,可以用以設計寫入時複製 (Copy on Write, COW) 以提高系統效能 ✅(正確)
(1)寫入時複製(Copy on Write, COW) 是一種延遲記憶體複製的技術:
當一個程序使用 fork() 創建子進程時,子進程會先共享父進程的記憶體頁面,而不是立即複製。
(2)只有當子進程或父進程嘗試修改該頁面時,系統才會真正分配新的記憶體並進行複製。
(3)這種技術大幅減少不必要的記憶體複製,提高系統效能。
這依賴於分頁技術與頁表中的保護位元(如 R/W 權限) 來實現,因此這個選項是正確的。
(D) 通常愈先進的處理器,所採用的分頁大小(page size)愈小 ❌(錯誤)
(1)事實上,較新的處理器通常支援較大的分頁大小,而不是較小的分頁大小。例如:
傳統 x86 分頁大小:4KB
x86-64 支援大頁(Huge Pages):2MB 或 1GB
ARM 架構可能支援 4KB、64KB、1MB、16MB 等不同大小的頁面。
(2)為什麼現代處理器支援更大的頁面?
降低 TLB 失誤(TLB Miss):頁表的轉譯快取(TLB)有固定的容量,使用較大頁面可以減少 TLB 查詢的次數,提高效能。
減少頁表大小:較大的頁面意味著更少的頁目錄和頁表,降低記憶體管理開銷。
適用於大規模應用:像是資料庫、虛擬機、雲端運算等應用通常需要更大的頁面來提高效能。
因此,這個選項是錯的,因為愈先進的處理器通常支援更大的分頁大小,而非更小的分頁大小。
正確答案:
✅ (D) 通常愈先進的處理器,所採用的分頁大小(page size)愈小 (錯誤)
✅ (D) 通常愈先進的處理器,所採用的分頁大小(page size)愈小 (錯誤)
答對率 : 84.6 %
有關振盪現象,下列敘述何者錯誤? (A) 程序所分配到的CPU 時間不足所導致 (B) 發生高度的分頁行為(paging activity) (C) 可以使用分頁錯誤頻率(page-fault frequency;PFF)策略來控制及預防 (D) 可以使用工作集策略來控制及預防
-
A. 程序所分配到的CPU 時間不足所導致73.1% (19)
-
B. 發生高度的分頁行為(paging activity)11.5% (3)
-
C. 可以使用分頁錯誤頻率(page-fault frequency;PFF)策略來控制及預防15.4% (4)
-
D. 可以使用工作集策略來控制及預防0% (0)
解說:
(A) 程序所分配到的 CPU 時間不足所導致 ❌(錯誤)
振盪現象(Thrashing) 是指系統發生過度的分頁行為(paging activity),導致 CPU 大部分時間都在處理頁面置換(page swapping),而不是執行真正的程式工作。振盪的主要原因是記憶體資源不足,而不是 CPU 時間不足。CPU 時間不足(如時間片太短)雖然會影響系統效能,但不會導致振盪,因此這個選項是錯的。
振盪現象(Thrashing) 是指系統發生過度的分頁行為(paging activity),導致 CPU 大部分時間都在處理頁面置換(page swapping),而不是執行真正的程式工作。振盪的主要原因是記憶體資源不足,而不是 CPU 時間不足。CPU 時間不足(如時間片太短)雖然會影響系統效能,但不會導致振盪,因此這個選項是錯的。
(B) 發生高度的分頁行為(paging activity) ✅(正確)
振盪現象的核心問題就是系統花費過多時間在執行分頁操作,導致實際執行程式的 CPU 時間大幅下降。例如,當系統同時執行太多個程式,每個程式都需要一定數量的記憶體頁,但 RAM 不足時,會導致頻繁的頁面置換(swapping),進而引發振盪。這是振盪的主要成因,因此這個選項是正確的。
(C) 可以使用分頁錯誤頻率(Page-Fault Frequency, PFF)策略來控制及預防 ✅(正確)
分頁錯誤頻率(PFF)策略 透過監控程序的頁面錯誤率(Page-Fault Rate) 來調整其分配的記憶體:
如果頁面錯誤率過高 → 增加該程序的記憶體分配,以降低頻繁換頁的發生。
如果頁面錯誤率過低 → 減少該程序的記憶體分配,以騰出資源給其他程序。
這有助於避免系統進入振盪狀態,因此這個選項是正確的。
(D) 可以使用工作集(Working Set)策略來控制及預防 ✅(正確)
工作集(Working Set)策略 透過追蹤每個程序在近期內真正需要的記憶體頁面來調整記憶體分配:
如果某個程序的工作集大於可用記憶體,則應該暫停或移除部分程序,以避免振盪。這樣可以確保每個正在執行的程序都有足夠的記憶體來維持正常運作,降低頻繁的頁面置換。這是預防振盪的有效方法,因此這個選項是正確的。
正確答案:
✅ (A) 程序所分配到的 CPU 時間不足所導致 (錯誤)
答對率 : 73.1 %