1、作業系統的 系統呼叫 包含 類型 系統呼叫概略分成五類 行程的控制 (process control)、檔案的管理 (File management)、裝置的管理(Device management) 、 資 訊 維 護 (Information maintenance) 、 通 信(communication) 行程執行時可能會有那些狀態 (state)及 狀態的轉換關係 行程狀態 - 因為多行程共同分享系統資源 ,故行程在執行時會改變其狀態 - 行程的狀態 (state)是指該行程目前的動作,每一個行程可能會處於以下數種狀態之一 新產生 (new) : 該行程正在產生中 執行 (runni
2、ng) : 指令正在執行 等待 (waiting) : 等待某件事件的發生 (譬如輸出入完成或接收到一個信號 ) 新產生 (new) : 該行程正在產生中 就緒 (ready) : 該行程正等待指定一個處理器 結束 (terminated) : 該行程完成執行 何謂 內容 置 換 (context switch) 內容 置 換 (context switch) - 中斷使作業系統改變 CPU目前的工作而執行核心常式,此種作業常發生在一般用途系統上。當中斷發生時, 系統需要儲存目前在 CPU上執行行程的內容(context),因此當作業完成時,它可以還原內容,基本上就是暫停行程,再取回行程 -
3、置換 CPU至另一項行程時必須將舊行程的狀態儲存起來 (行程內容以行程 PCB表示 ),然後再載入新行程的儲存狀態,這項任務稱為內容置換。要改進行程的混合行程可能必須採用置換的方法 - 內容置換所花的時間純粹是浪費,一時間長短大多決定於硬體的支援程度 (暫存器數目、記憶體速度、特殊指令載入及儲存暫存器 )。一般而言,它的速度在幾毫秒 (ms) 為何要使用執行緒池 (thread pool) 執行緒池 (thread pools) - 多執行緒的伺服器仍須經常產生執行緒以服務要求,服務完成後須拋棄執行緒,增加耗時量。且若不限制產生的執行緒數量,可能耗盡系統資源 (如 CPU時間或記憶體 ) -
4、執行緒池的概念是行程開始就產生一些執行緒,放入池中等待工作。當伺服器接到服務要求時,喚醒一個執行緒傳給要求者執行服務。當服務完成時,該執行緒又返回池中等待其它工作 - 執行緒池的優點有 通常對於服務一項要求時,使用現存的執行緒比等待產生一個執行緒快 執行緒限制了任何時候執行緒的個數。這對於無法支援大 量並行執行緒的系統特別重要 行程 在那些時機 會 啟動 內容 置 換 (context switch) - 中斷使作業系統改變 CPU目前的工作而執行核心常式,此種作業常發生在一般用途系統上。當中斷發生時,系統需要儲存目前在 CPU上執行行程的內容(context),因此當作業完成時,它可以還原內
5、容,基本上就是暫停行程,再取回行程 何謂 I/O 傾向行程 (I/O-bound process)與 CPU 傾向行程 (CPU-bound process) I/O傾向行程 (I/O-bound process)與 CPU傾向行程 (CPU-bound process) - I/O 傾向行程 在做 I/O 的時間遠比做計算的時間還多,而 CPU 傾向行程 在做計算的時間遠比做 I/O 的時間還多 。 長程排班程式選擇一個適當的 I/O 傾向與CPU 傾向的混合行程是十分重要的 為何稱 單一執行緒行程稱為重量級行程 (heavyweight process)? - 執行緒是 CPU使用時的一個
6、基本單位,執行緒是由一個執行緒 ID、程式計數器、一組暫存器,以及一個堆疊空間所組成。 - 若 執行緒屬於同一行程,則它們是使用相同的程式碼區、資料區及作業系統資源 (如檔案和信號 ),而各執行緒則使用個別的程式計數器、一組暫存器,以及一個堆疊空間 - 單一執行緒行程稱為重量級行程 (heavyweight process),而多 執行緒行程稱為輕量級行程 (lightweight process) 請說明撰寫多執行緒程式的好處 - 提供 多執行緒的動機 許多在桌上型 PC執行的套裝軟體都是多執行緒 : 應用程式通常都製作成有許多執行緒控制的個別行程。網頁瀏覽器可能有一個執行緒顯示影像或文字,
7、而另一執行緒則從網路擷取資料。文書處理 器可能有一個執行緒在顯示圖形,另一個執行緒從使用者讀入按鍵,而第三個執行緒在背景下執行拼字和文法校正 以往伺服器以執行單一行程的方式來接受 client端的要求。當伺服器收到一項要求時,它就產生一個個別的行程去服務該項要求。然而,行程的產生對系統是相當重的負擔,但新舊行程都執行相同工作,實際上可以不必增加額外的負擔。有效率的方法是讓一個行程包含許多執行緒來達到相同的目的。即伺服器將產生一個個別的執行緒去傾聽及服務 client端的要求 現在許多的作業系統核心是多執行緒,幾個執行緒在核心操作,如裝置管理、中斷 處理、系統閒置記憶體的數量管理 - 利益 :
8、撰寫多執行緒程式的好處可以分成四個主要類別 應答 : 將交談式的應用程式多執行緒化,可以在一個程式某一部份被暫停,或程式在執行冗長操作時,依然持續執行,以 增加對使用者的應答 資源分享 : 執行緒間將共用它們所屬行程的記憶體和資源。程式碼和資料共用的好處是 讓應用程式有數個不同的執行緒在同一位址空間活動 經濟 : 相對於行程產生所配置的記憶體和資源耗費較少。因為 執行緒共用它們所屬行程的資源,所以執行緒的產生和內容交換就比較經濟 。憑經驗去測量出產生和維護行程比執行緒 多出多少時間可能很困難,但通常 產生和維護行程會比執行緒更費時 使用多處理器架構 : 在多處理器的架構下,多執行緒的利益可以大幅提升,因為 每一執行緒可以並行地在不同的處理器上執行 。不論有多少 CPU 可以使用,單一執行緒只能在一個 CPU 上執行。多處理器上並行增加多執行緒