作業系統
第四章 行程
第四章 行程
行程概念 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)
可看成是只有一個執行緒在執行的行程
傳統行程與執行緒行程
執行緒的優點
使用執行緒來取代傳統行程有幾項優點:
資源共享容易
節省記憶體空間
快速的內文切換
平行處理
使用者和核心執行緒
在作業系統中,有兩種方式來支援執行緒
使用者執行緒
利用執行緒函式庫來提供的
建立與管理執行緒時比較有效率
若行程中的執行緒暫停,則同行程中其他所有執行緒也都會暫停執行
核心執行緒
由作業系統直接支援
建立與管理執行緒時比使用者執行緒來得慢
若行程中的執行緒暫停,核心可以安排其他在同行程中的執行緒繼續執行
多執行緒的模型
實作執行緒時通常有三種模型
多對一模型 - 將許多個使用者執行緒對應到同一個核心執行緒。
一對一模型 - 將一個使用者執行緒對應到一個核心執行緒。
多對多模型 - 將使用者執行緒對應到相同或是較少數目的核心執行緒。
多對一模型
一對一模型
多對多模型
沒有留言:
張貼留言