單元 1.2.1 系統軟體
在計算機的早期,如果一個程式需要任何輸入或輸出,它就需要包含處理與輸入和輸出裝置通訊的特定程式碼。開發了簡短的子程式來執行這些基本任務。最終這些子程式被組合在一起,形成了一個輸入輸出控制系統(IOCS)。隨著 IOCS 變得越來越複雜,它變成了作業系統。隨著越來越多的程式開始用高階程式碼編寫,需要翻譯器,然後翻譯器也被合併到作業系統中。
- 安全性 - 提供加密服務和防病毒/惡意軟體工具
- 實用程式 - 提供具有單一功能的小型應用程式,通常這些應用程式用於系統維護和保養。
- 網路管理 - 提供網路通訊的設施和軟體
- 裝置驅動程式 - 用於與特定硬體裝置通訊的內建軟體。
- 錯誤報告 - 儲存作業系統/軟體中發生的錯誤的詳細資訊,以便開發人員能夠找到錯誤(bug)的來源。
- 記憶體管理 - 為各種程式分配記憶體,以及從記憶體儲存和檢索資料。
- 資源管理 - 管理有限資源,包括 CPU 時間、記憶體和磁碟空間、電力、外部裝置和 I/O 裝置。
- I/O 管理 - 管理連線到系統的輸入和輸出裝置。
- 裝置管理 - 管理所有連線的裝置,如儲存裝置和顯示卡(此部分包括 I/O 管理)
- 中斷管理 - 管理中斷.
- 使用者介面 - 管理使用者介面 (UI),例如面向終端使用者的 GUI(圖形使用者介面)和麵向技術人員診斷故障的 CLI(命令列介面)。
- 檔案管理(分配表) - 各種檔案儲存位置的對映。它還包含各種元資料,如檔名、訪問許可權和檔案大小。作業系統在儲存、刪除和訪問檔案時使用它。
- 引導檔案 - 用於在作業系統載入時使用,即在計算機完成 POST(開機自檢)後開機時,用於提供個人設定。
- 核心 - 管理作業系統的核心操作,包括排程、資源管理和記憶體管理。它位於使用者介面的下方,例如 Linux 是核心,而 UI 是獨立的,因此 UI 可以更改而不會影響作業系統。
從使用者的角度描述作業系統的三個典型功能。[3]
答案
從使用者的角度來看,作業系統的三個功能 - 任何三個:3x1
• 提供對硬體的訪問
• 提供不同的介面,如 GUI/命令列
• 允許自定義介面,例如更改桌面顏色/佈局
• 允許複製/刪除/移動/排序/搜尋檔案或資料夾
• 使用密碼或訪問許可權控制安全
• 管理軟體/程式的執行
• 提供實用程式,如磁碟碎片整理
• 啟動/關閉系統
• 允許建立快捷方式
• 允許使用者執行多個程式/開啟多個視窗
接受任何其他有效要點
所有作業系統都提供以下功能
- 它們控制系統的硬體
- 這包括記憶體、資源和裝置管理
- 它們提供用於人類訪問和通訊的 UI
- 它們提供應用程式軟體執行和管理
- 即系統安裝、記憶體訪問、透過編譯器/直譯器/彙編器進行軟體翻譯
- 它們提供用於執行計算機“家務”和常見任務的實用程式
- 檔案處理
- 格式化
- 碎片整理
- 病毒防護
- 它們為使用者提供安全和隱私
- 備份程式
- 使用者登入和密碼
有幾種不同的作業系統型別
多工作業系統的使用者會產生一種印象,即系統可以同時執行多個任務。這可以透過給每個任務在 CPU 上分配一個非常短的時間段,並在不同的作業之間輪換來實現,或者透過使用多個核心來併發地執行任務來實現。
這種作業系統允許多個使用者同時訪問同一個系統。這是透過給每個終端分配一個時間片並在每個終端對 CPU 的請求之間輪換來實現的。CPU 可以透過將不同的使用者資料和程式儲存在其主記憶體的不同區域來區分它們。標誌可以防止沒有任務的終端的時間片浪費 CPU 的時間,而優先順序可以增加終端獲得的時間片的數量或大小。
這種作業系統使用許多不同的位置來儲存檔案和處理資料。它是執行在獨立網路計算“節點”集合上的軟體。它們處理由多個獨立 CPU 提供服務的作業。
使用即時作業系統,在輸入時處理的資料或採取的操作足夠快,以影響下一個輸出。它被定義為線上,因為使用者可以直接與處理器通訊。它通常用在需要立即響應的情況下,例如核電站。
即時作業系統保證在給定的時間段內(通常是短時間段內)提供輸出。
這類似於即時作業系統,但沒有那麼快。它只允許預定義的、結構化的交易。每個事務通常都很短,每個事務的處理活動通常是預先程式設計的。它主要用於資料庫。
這種作業系統在工業領域被廣泛應用,因為它可以實現大規模生產和連續的流程系統。它可以提供自動化,從而減少了對人員的需求。它可能利用反饋或一個連續迴圈。控制可能是連續的(例如巡航控制系統)或一系列離散事件(例如灑水系統)。該系統中的感測器不直接控制輸出,它們都由 CPU 控制和協調。
嵌入式作業系統通常針對單一任務而開發。它通常是特定於裝置的,並且在低功耗 CPU 和 RAM 上執行。它們可以在電視、洗衣機等裝置中找到。它們針對其任務進行了最佳化,因此可以執行得更快,因為它們比通用作業系統更簡單。
醫院的重症監護室是為需要全天候監測和支援的患者準備的。計算機系統可以用來監測患者的生命體徵(體溫、心率、血壓和呼吸)。然後,它們可以向醫護人員發出任何重大變化的警報。
這些系統通常執行在嵌入式、即時作業系統上。
(a) (i) 說明“即時”一詞的含義。
(ii) 解釋為什麼即時作業系統適合於此目的。
(b) (i) 許多家用電器包含嵌入式微處理器。
解釋為什麼大多數這些微處理器不需要作業系統。
答案
(a) (i) 該系統在保證的時間範圍內做出響應 (1)。
一分。
(ii) 如果患者發生意外,必須立即做出響應 (1)。其他型別的系統可能會有延遲的響應 (1)。這會導致患者無法及時得到治療 (1)。
(b) 最多兩分,有效解釋,展示知識和理解在給定上下文中的應用。
以下任何兩點:
例如,洗衣機或微波爐
ROM 儲存整個指令集
微處理器只有一組任務要執行
系統期望簡單的輸入(例如洗衣機前面板上的鍵盤)
微處理器具有簡單且不變的硬體功能來控制 [2]
- 記憶體分配允許不同的程序同時執行。
- 它允許在需要時重新分配和共享記憶體。
- 它保護不同的資料和程序彼此隔離,從而提供安全性
透過物理分頁過程,記憶體被分成大小相同的段,稱為頁面。然後,程式將根據其大小分配適當數量的頁面。頁面的大小是固定的,因此某些程式可能擁有它們不需要的額外記憶體。
分段是一個邏輯過程,其中記憶體被分成大小可變的塊,這些塊反映了程式的邏輯 - 這些劃分被稱為段。這在很大程度上依賴於作業系統以及連結器和載入器。這樣,程式就不太可能分配到多餘的記憶體空間。需要注意的是,邏輯操作會保持在一起,例如迴圈中的語句。
當 RAM 不足以儲存所有正在執行的程式時,硬碟驅動器上的一個區域將被指定為“虛擬記憶體”。那些長時間處於非活動狀態的程式將被儲存在這裡,然後在需要時載入回 RAM。這使得計算機可以使用比平時更多或更大的程式進行多工處理。
解釋以下記憶體管理技術如何使用
(i) Paging
(ii) Segmentation
[6]
答案
分頁
- 記憶體被分成大小相等的單元,稱為頁面幀
- 程式/資料檔案被分成大小相等的單元,稱為頁面
- 一個或多個頁面可以隨時載入到記憶體中
- 頁面可以是不連續的
- 頁面根據需要進行交換進出
- 不在主記憶體中的頁面儲存在虛擬記憶體/備份儲存中
- 頁面表/頁面/程序索引
- 絕對地址透過將頁面地址加到指令中的相對地址來計算
- 分頁對程式設計師是透明的
分段
- 記憶體被分成長度可變的塊
- 程式可以包含多個段
- 段通常與作業/邏輯塊中的自然劃分相匹配
- 儲存段索引,必須...
- 儲存段的基地址和長度
- 程式設計師將程式碼模組組織成段
(每個 - 1 分,每個點最多 4 分,總計最多 6 分) [6]
BIOS 代表基本輸入輸出系統。它是一個儲存在主機板上的 ROM 晶片上的小型程式。它在作業系統啟動之前執行,用於確保計算機系統的健康狀況。計算機開機後,電源會向 CPU 傳送復位訊號,指示 CPU 從 ROM 晶片開始執行程式碼。然後它執行一系列稱為 POST(開機自檢)的檢查,包括
- 檢查系統記憶體是否正常。
- 檢查系統時鐘/計時器是否正常執行。
- 檢查處理器是否正常。
- 確保鍵盤存在。
- 確保螢幕顯示記憶體正常工作。
- 檢查 BIOS 是否沒有損壞。
完成這些檢查後,系統將使用引導載入程式將作業系統的核心載入到記憶體中,從而啟動作業系統。如果這些檢查失敗,BIOS 將使用蜂鳴聲程式碼通知使用者錯誤。蜂鳴聲程式碼因製造商而異,因此通常在他們的說明手冊中有所記錄。
當計算機啟動時,它會執行啟動序列。解釋 BIOS 在啟動計算機中的作用 [6]
答案
BIOS 提供啟動過程的順序 (1) 和初始化任務 (1)。答案應該列出進行的檢查,例如記憶體、鍵盤和硬碟啟動。每個檢查最多 4 分,共計 4 分。
裝置驅動程式是與計算機相關聯的硬體裝置附帶的小型程式。它們旨在告知作業系統如何與外設通訊。
虛擬機器是一段軟體,允許計算機模擬另一臺機器。虛擬機器的優勢在於它可以備份和複製。你甚至可以在一臺物理機器上執行多個虛擬機器。
虛擬機器可以用來模擬另一種作業系統。這可以讓開發人員在多個平臺上測試程式,或者可以用來執行主機作業系統不支援的軟體。Apple OSX、Ubuntu 和 Windows 都可以被虛擬化。整個網路也可以由虛擬機器組成,這通常被企業和學校使用,因為它提供了一種廉價的解決方案,可以讓許多人使用一臺機器工作。
中間程式碼介於目的碼和機器程式碼之間。它比原始碼執行速度快,而且具有高度可移植性,因為它可以透過使用虛擬機器來讀取它,可以在許多不同的平臺上執行。當計算機啟動時,它會執行啟動序列。解釋 BIOS 在啟動計算機中的作用 [6]
Spitfire Protection 是一家專門為教育機構和醫院提供消防保護系統的公司。在這些型別的場所,在火警啟用的情況下,人員疏散建築物尤為重要。
該公司安裝的計算機系統使用迴圈排程來告知消防隊長和消防巡邏員學校或醫院的特定區域是否已清空。
公司使用虛擬機器進行開發工作。描述使用虛擬機器對軟體開發的影響。[9]
答案
接受任何關於在虛擬例項中使用不同作業系統的合理答案。答案應包括執行中間程式碼的可能性。對於每個有效答案,允許 I 標記。
中斷
[edit | edit source]在任何時間點,程序都處於以下狀態之一
- 就緒 - 任務正在等待執行
- 執行 - CPU 正在執行任務
- 阻塞 - 任務正在等待正在使用的裝置/此時無法執行
中斷允許就緒的應用程式請求 CPU 時間。
中斷是由 I/O 裝置或系統軟體例程等來源發出的訊號,它會導致當前例程的執行中斷。中斷有各種不同的型別
- I/O 中斷 - 由 I/O 裝置生成,以訊號通知工作已完成或發生錯誤。
- 定時器中斷 - 由內部時鐘生成,以訊號通知處理器應處理一個時間關鍵的活動。
- 硬體錯誤 - 例如電源故障,計算機必須嘗試儘可能安全地關閉。
- 程式中斷 - 由程式中的錯誤生成,例如違反記憶體使用情況。
在每個 FDE 週期的結束時,透過檢查中斷暫存器來檢測中斷。系統將比較當前正在執行的任務的優先順序和中斷的優先順序 - 如果當前任務具有更高的優先順序,則當前任務將繼續執行。但是,如果中斷具有更高的優先順序,則中斷服務例程 (ISR) 開始執行。它將 CPU 暫存器的內容複製到堆疊,然後執行中斷,直到它完成。接下來,重置中斷佇列中的中斷標誌,系統在從堆疊恢復暫存器的內容之前檢查是否有任何進一步的優先順序中斷。在儲存過程中,中斷儲存在佇列中,它們在佇列中的位置決定了它們對系統、使用者和當前作業的重要性。優先順序到位,允許系統在中斷和當前任務之間做出決定。它允許系統在同時發生兩個中斷的情況下,在中斷之間進行選擇。它確保首先執行最緊急的任務,並有效利用處理器。值得注意的是,如果在較低優先順序中斷完成執行之前觸發了較高優先順序中斷,則一箇中斷可能會中斷另一箇中斷。
作業系統使用中斷來管理任務。
(i) 任務可以處於三種狀態之一:就緒、執行或阻塞。簡要描述每種狀態。[3]
(ii) 什麼是計算機中斷?[1]
(iii) 舉兩個計算機中斷的例子。[2]
(iv) 作業系統正在處理中斷,此時生成了另一個具有更高優先順序的中斷。詳細解釋第二個更高優先順序中斷後的事件序列 [3]
[6]
答案
(i) 就緒 - 任務正在等待執行 1
執行 - CPU 正在執行任務 1
阻塞 - 任務正在等待正在使用的裝置/此時無法執行 1
(ii) 中斷 - 任何一種:1x1
• 中斷是由裝置或軟體生成的訊號,它可能會導致當前例程的執行中斷
• 中斷是由裝置或軟體生成的訊號,請求注意
注意 - 不要接受中斷是在發生故障時生成的(這是一個示例)
(iii) 可以生成的中斷 - 任何兩個:2x1
• 硬體或軟體故障
• 輸入/輸出裝置請求注意,例如印表機缺紙/請求更多資料/按鍵/滑鼠點選
• 使用者中斷,例如<ctrl> <break>
• 作業系統生成的中斷,例如時間片結束
• 執行時錯誤,例如除以零
注意 - 答案可以是上面任何一種的具體示例
(iv) 生成中斷 - 答案必須顯示事件序列
• O/S 停止/當前中斷例程 1
• O/S 執行新的更高優先順序中斷例程 1
• OS 返回到原始中斷例程(或另一箇中斷例程)並繼續 1
排程
[edit | edit source]排程演算法決定如何分配處理時間。
排程級別
[edit | edit source]排程有 3 個不同的級別
- 低階排程 - 作業系統必須有一種方法來決定何時給程式使用處理器。排程演算法將作業放入和移出就緒狀態,並決定以什麼順序放置它們以執行。
- 中級排程 - 在記憶體和備份儲存器之間交換作業。
- 高階排程 - 這是將新程式載入到記憶體中的方法。
排程還有兩種不同的型別
- 非搶佔式 - 系統將作業置於執行狀態,並將其保留在那裡,直到作業不再需要執行,但必須進入另一種狀態,例如,它進入阻塞狀態,因為需要來自使用者的輸入。
- 搶佔式 - 系統有權決定當前正在執行的作業應該停止以騰出空間供其他作業執行。
排程演算法
[edit | edit source]先到先服務 (FCFS) - 第一個進入執行佇列的作業是第一個進入執行狀態的作業。此演算法有利於更長的作業。
最短作業優先 (SJF) - 按所需的執行時間升序對就緒佇列中的作業進行排序。
迴圈輪詢 (RR) - 每個作業被分配最大處理器時間(一個時間片)。此後,它將返回到佇列。作業完成後,它將離開佇列。
最短剩餘時間 (SRT) - 就緒佇列按預計剩餘時間進行排序。這有利於較短的作業,因為較長的作業可能永遠不會開始。
多級反饋佇列 - 使用多個不同的佇列,每個佇列都有不同的優先順序。根據作業的行為,演算法可以在佇列之間移動作業。
排程的目的是確保所有作業都被處理,並在必要時更改優先順序。它確保儘可能多的作業在最短的時間內被處理,同時最大化使用者數量和系統響應時間。它的主要目標是有效地利用處理器。
作業系統使用排程。
(i) 解釋排程的目的。[4]
(ii) 一些多使用者作業系統使用迴圈輪詢排程。描述迴圈輪詢排程。[4]
iii) 描述可能使用的其他排程方法。[2]
答案
(a) (i) 確保所有作業都得到處理/在必要時更改優先順序
處理儘可能多的作業(在儘可能短的時間內)
最大化互動式使用者的數量…
…接收快速的響應時間
有效地利用資源/處理器時間
接受“對所有使用者公平”
(ii) 每個使用者分配一個時間片
時間片是非常短的時間/秒的幾分之一
在時間片結束時,使用者/作業移動到佇列的末尾
對所有使用者依次重複此操作
順序可能取決於使用者的優先順序
使用者不知道搶佔式排程的任何延遲
接受基於作業而不是使用者的答案
(iii) 先到先服務
作業按到達順序或優先順序系統(最高優先順序優先)或作業長度(最短作業優先)進行處理
2 for FCFS,如果描述了 FIFO,則接受 FIFO,接受其他示例