2011年3月6日 星期日

作業系統

作業系統
第四章 行程
第四章 行程
 行程概念 Process Concept
 行程的狀態 Process State
 行程控制區塊 Process Control Block (PCB)
 行程排程Process Scheduling
 行程的建立與結束
 執行緒
 行程合作Cooperating Processes
 行程間溝通Interprocess Communication
行程概念
Process Concept
 行程與程式主要的不同點:
 程式是被放在外部的儲存裝置如磁碟上,而行程則被放在記憶體中。
 程式在儲存裝置中是靜態的,而行程在記憶體中是動態的,它會隨著一些事件的發生而產生相對的改變。
 行程,簡單來說,就是一個執行中的程式 。
 行程的狀態 Process State
 行程控制區塊 Process Control Block (PCB)
行程的狀態
Process State
 一個行程在執行過程中,會改變很多狀態。
 一個行程的狀態(process state)通常有下列幾種:
 新建new: The process is being created.
 執行running: Instructions are being executed.
 等待waiting: The process is waiting for some event to occur.
 就緒ready: The process is waiting to be assigned to a process.
 終結terminated: The process has finished execution

行程狀態圖
Diagram of Process State
行程控制區塊
Process Control Block (PCB)
 行程控制區塊(PCB),儲存行程在執行時相關的資訊。
 PCB 中通常包括了
 行程狀態 (Process State)
 排程資訊 (scheduling information, such as, priority)
 CPU 暫存器 (stacking return-address and registers)
 程式計數器 (Program counter)
 記憶体資訊 (Memory-management information)
 I/O 狀態 (I/O status information)
 當行程進行切換時,需要將目前行程的相關資訊記錄在該行程的 PCB 中,並將另一個行程的 PCB 載入至系統中,這個動作稱為內文切換。
行程控制區塊
排程佇列 Queuing
 一個行程在執行期間會在各種不同的佇列中進出。
 工作佇列 Job queue – set of all processes in the system.
 就緒佇列 Ready queue – set of all processes residing in main memory, ready and waiting to execute.
 等待佇列 Waiting queue
 裝置佇列 Device queues – set of processes waiting for an I/O device.




就緒佇列與裝置佇列
行程排程
process Scheduling
 為了增加 CPU 的使用效率而提出多個行程的觀念。
 一個單 CPU 的系統來說,隨時只能有一個行程在執行。
 其他行程則必須等待 CPU 空閒下來,然後再經由排程器選出,才能取得 CPU 的使用權。
 如何排程是影響作業系統效能最重要的因素。
行程的切換
內文切換 Context Switch
 當 CPU 的使用權由一個行程轉到另一個行程時需進行內文切換。 (the system must (1)save the state of the old process and (2)load the new process.)
 內文切換動作所花的時間對系統而言是額外的負擔 。 (Context-switch time is overhead; the system does no useful work while switching.)
 執行緒降低內文切換所花的時間。(Time dependent on hardware support.)
行程的建立
 一個行程能在執行的期間 透過系統呼叫 建立 很多新的行程。
 建立新行程的行程稱為父行程,而新建立的行程稱為子行程。
 UNIX 系統中,使用行程代號(PID)來分辦不同的行程。
 系統呼叫
 fork()
 execve()
 wait()
行程樹
行程的結束
 一個行程結束時,需要將執行期間內用到的資源如實體記憶體、虛擬記憶體、開啟的檔案和使用的 I/O 裝置等,都會交還給作業系統。
 系統呼叫
 exit()
 abort()
執行緒 Thread
 系統呼叫 fork() 的缺點
 需要做大量記憶體的複製
 進行內文切換時需付出相當的代價
 兩個行程間無法直接進行溝通
 若行程間可以共用一部分的記憶體空間,那麼額外的負擔就能減少,這也就是建立執行緒的基本理由。
 For example, 網路聊天室.
 Server needs to send every user same copy of the chat content.
執行緒觀念
 執行緒
 輕量級行程 (light weight process, LWP)
 視為使用 CPU 資源的基本單元
 每個執行緒包含了一個程式計數器、一組暫存器和一個堆疊空間
 與其他的執行緒共用同一個位址空間
 傳統的行程
 重量級行程 (heavy weight process, HWP)
 可看成是只有一個執行緒在執行的行程
傳統行程與執行緒行程
執行緒的優點
 使用執行緒來取代傳統行程有幾項優點:
 資源共享容易
 節省記憶體空間
 快速的內文切換
 平行處理
使用者和核心執行緒
 在作業系統中,有兩種方式來支援執行緒
 使用者執行緒
 利用執行緒函式庫來提供的
 建立與管理執行緒時比較有效率
 若行程中的執行緒暫停,則同行程中其他所有執行緒也都會暫停執行
 核心執行緒
 由作業系統直接支援
 建立與管理執行緒時比使用者執行緒來得慢
 若行程中的執行緒暫停,核心可以安排其他在同行程中的執行緒繼續執行
多執行緒的模型
 實作執行緒時通常有三種模型
 多對一模型 - 將許多個使用者執行緒對應到同一個核心執行緒。
 一對一模型 - 將一個使用者執行緒對應到一個核心執行緒。
 多對多模型 - 將使用者執行緒對應到相同或是較少數目的核心執行緒。
多對一模型
一對一模型
多對多模型

沒有留言:

張貼留言