1 / 34

第三章 處理程序的說明及控制 Process Description and Control

第三章 處理程序的說明及控制 Process Description and Control. 所有多重程式 (multi-programmed) 作業系統都建立在 process 的概念 大部分作業系統需滿足的需求 交錯多個 process 的執行,在理想反應時間下達到最大的處理器使用率。 遵從特定的政策 ( 例如,高優先權 ) 來配置資源給 process ,且避免死結的發生。 支援 process 間的相互通訊 (inter-process communication) 、使用者 process 的建立。 從了解 process 的表示與控制,開始學習作業系統 !.

lainey
Download Presentation

第三章 處理程序的說明及控制 Process Description and Control

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 處理程序的說明及控制Process Description and Control • 所有多重程式(multi-programmed)作業系統都建立在process的概念 • 大部分作業系統需滿足的需求 • 交錯多個process的執行,在理想反應時間下達到最大的處理器使用率。 • 遵從特定的政策(例如,高優先權)來配置資源給process,且避免死結的發生。 • 支援process間的相互通訊(inter-process communication)、使用者process的建立。 • 從了解process的表示與控制,開始學習作業系統!

  2. 3.1 處理程序的狀態 • 從處理器的觀點看process交錯執行 • 處理器藉由改變程式計數器(Program Counter, PC)的數值,依序執行指令。 • 追蹤process的軌跡(trace):列出每個process執行指令的順序。

  3. 處理程序A, B, C的軌跡 5000 8000 12000 5001 8001 12001 5002 8002 12002 5003 8003 12003 5004 12004 5005 12005 5006 12006 5007 12007 5008 12008 5009 12009 5010 12010 5011 12011 (a) (b) (c) Figure 3.1 Snapshot of Example Execution (Figure 3.3) at Instruction Cycle 13 3

  4. 所有處理程序結合的軌跡 5000 5001 5002 5003 5004 5005 --------時間到 100 101 102 103 104 105 8000 8001 8002 8003 -------I/O請求 100 101 102 103 104 105 12000 12001 12002 12003 12004 12005 --------時間到 100 101 102 103 104 105 5006 5007 5008 5009 5010 5011 --------時間到 100 101 102 103 104 105 12006 12007 12008 12009 12010 12011 --------時間到 Figure 3.3 Combined Trace of Processes of Figure 3.1

  5. 雙狀態(two-state)處理程序模型 • Process的兩種狀態: • 執行(Running) • 未執行(Not Running) 。 • 中斷的process被移至等待佇列中。 • 分派程式由佇列中選擇一個process執行。

  6. 建立處理程序的原因 • 新的批次工作:讀入下一個工作控制命令(Job Control Command) 。 • 互動式登入:使用者在終端機登入到系統。 • 被作業系統建立來提供服務:產生新process以進行特定功能,避免使用者等待。 • 由現有的process產生:為了模組化或平行處理,使用者程式可建立其他process。 • Process產生另一Process時,彼此為親子關係 (Parent and Child)。

  7. 處理程序終止的原因 • 正常完成 (Normal completion) • 批次工作下達停止(Halt)指令或系統呼叫。 • 使用者登出。 • Process發出終止執行的請求。 • 執行時發生錯誤: • 超過時間限制(Time limit exceeded)、記憶體不足(Memory unavailable)、違反記憶體邊界(Memory bounds violation) • 保護錯誤(Protection error):write to read-only file • 算術錯誤(Arithmetic error):除以0,或超出最大值。 • 時間超過(Time overrun) :process waited longer than a specified maximum for an event • 管理者或作業系統介入(如發生deadlock) 、輸出入失敗(I/O failure)、不合法指令(Invalid instruction)、特權指令(Privileged instruction)、資料誤用、parent process要求、parent process終止。

  8. 五狀態(five-state)處理程序模型 • 雙狀態模型不完備之處 • 未執行狀態的process有兩種情形:(1)可以執行;(2)等待I/O動作的完成而被懸置(blocked) 。 • 分派程式必須掃描整個佇列,找出未被懸置且等待最久的process。 • 擴充雙狀態模型成為五種狀態 • 執行中(Running) • 未執行狀態再區分為: 備妥(Ready);懸置(Blocked) • 另為方便管理process,新增二種狀態: • 新建(New):剛被系統建立,尚未允許進入執行區。(尚未載入主記憶體,僅建立表格) • 離開(Exit):因停止或取消,被系統由執行區離開。(釋放佔用的主記憶體,但保留相關表格)

  9. 五狀態處理程序模型(續)

  10. Figure 3.6 Process States for Trace of Figure 3.3 10

  11. 圖3.7(a)有兩個佇列:備妥佇列與懸置佇列 • 圖3.7(b)對每一事件分別有一佇列 Figure 3.7 Queuing Model of Figure 3.5 11

  12. 置換的需要 The need for swapping • 在未使用虛擬記憶體的系統,每個process必須完全地載入記憶體中才能執行。 • 由於處理器比I/O動作快太多,即使在多工環境下,處理器大部分時間仍處於閒置狀態。 • 解決方法:容納更多的process • 擴充主記憶體:如此會增加成本。 • 置換(swapping) :將process的部分或全部由主記憶體移至磁碟上,本身也是I/O動作。 • 使用置換,需增加新的狀態:暫停(suspend ) • 當所有主記憶體中的process都處於懸置狀態時,系統可將某個process暫停,並置換至磁碟,其所佔據的主記憶體空間就可釋放出來給其他process使用。

  13. 單一暫停狀態 • 置換之後,選擇載入process的方法 • 容許新process的產生。問題:將增加系統的負擔。 • 載入一處於暫停狀態的process。問題:所有暫停process都是被懸置的process,即使載入也仍無法執行。

  14. 雙暫停狀態 • 有兩個獨立的概念: • 是否等待事件(懸置)、是否被置換(暫停) • 2 * 2組合:共四種狀態: • (1)備妥;(2)懸置;(3)懸置,暫停;(4)備妥,暫停。

  15. 暫停的其他使用 • 暫停process的概念 • Process無法立即被執行。 • Process可能在等待某個事件。 • Process可被其他process或作業系統置於暫停狀態。 • Process不能離開這個狀態,直到讓它陷入暫停狀態的人解除為止。 • process暫停的原因 • 置換:作業系統必須釋出主記憶體空間,以容許載入其他process。 • 其他作業系統理由:作業系統可能會暫停背景、工具或產生問題的process。 • 互動使用者要求:使用者希望暫停某一process。 • 時間:如週期性執行的process。 • parent process要求。

  16. 3.2 處理程序描述 Process Description • 作業系統控制結構 • 作業系統要管理process與資源,必須擁有各process與資源目前狀態的資訊。 • 最簡單的方法:作業系統建立並維護所管理實體的資訊表格,包括:記憶體、輸出入(I/O)、檔案、Process。 Figure 3.9 Processes and Resources (resource allocation at one snapshot in time)

  17. Figure 3.10 General Structure of Operating System Control Tables 17

  18. Process的控制結構 • Process的位置 • 影像(image):即Process的構成,包含:程式、資料、堆疊與屬性。 • Process的image的位置: • (a) 連續的記憶體區塊; 或 • (b) 一系列不一定連續的區塊。區塊可為不同長度(區段, Segment) ,或使用固定長度(頁, page) ,或二者結合。 • Process的屬性 • Process控制區塊(Process Control Block):所有屬性的集合。

  19. Process控制區塊 • Process識別資訊(identification information):該process的識別碼、parent process的識別碼、使用者識別碼 • Process狀態資訊(state information): • 使用者可見暫存器; • 控制與狀態暫存器:Program Counter, Program Status Word, … • 堆疊指標。 • Process控制資訊(control information): • 優先權、排班相關資訊、 • 事件、結構資訊(process間的資料結構鏈結)、 • process間通訊(inter-process communication)、process的權限、 • 記憶體管理、資源所有權與使用率。

  20. 處理程序的屬性- Pentium EFLAGS暫存器 • 控制位元: • ID識別碼:是否支援CPUID指令,該指令提供製造商、型號資訊。 • RF:繼續旗標(Resume flag)。 • IOPL:輸出入特權層級(I/O privilege level) • IF:中斷致能旗標(Interrupt enable flag)。 • TF:陷阱旗標(Trap flag) ,使所有指令的執行產生中斷,以用來偵錯。 • 運作模式位元 • VM:虛擬8086模式(Virtual 8086 mode)。 • VIF (Virtual interrupt flag):用於虛擬8086模式,取代中斷致能旗標(IF)。 • 狀況代碼 • CF:進位旗標(Carry flag)。

  21. Figure 3.12 User Processes in Virtual Memory 21

  22. 22 Figure 3.13 Process List Structures

  23. 3.3 處理程序控制 • 大部分處理器支援至少兩種執行模式 • 較低特權的模式:稱使用者模式(user mode)。 • 較高特權的模式:稱系統模式(system mode )、控制模式(control mode)、或核心模式(kernel mode)。 • 理由:作業系統本身及其表格有保護的必要。 • 執行模式的區別及改變 • 程式狀態字組(Program Status Word, PSW)有一位元表示執行模式。 • VAX的改變模式指令(CHM):使用者呼叫系統服務,或發生中斷控制轉移至系統常式時,常式就執行CHM指令﹔返回控制權給使用者process前,再執行一次CHM進入較低特權模式。 • Process的建立 • 配置一process識別碼,在process表格中加入一新項目。 • 分配空間,包含process影像(image)的所有元素。 • Process控制區塊(Process Control Block)的初始化。 • 設定Process的鏈結、各種Process佇列、其他資料結構。

  24. 處理程序切換 (process switch) • 何時process切換?作業系統取得控制權的事件: • 中斷(Interrupt):由外部發出,例如:I/O動作完成。時鐘中斷(Timer Interrupt),輸出入中斷(I/O Interrupt),記憶體錯誤。 • 陷阱(Trap) :與目前執行的指令相關,例如:非法存取檔案。An error resulted from the last instruction. It may cause the process to be moved to the Exit state. • 監督者呼叫 (Supervisor Call):程式明確要求,例如:開啟檔案。explicit request by the program (ex: file open). The process will probably be blocked. • 中斷週期的模式切換(Mode Switch) • 儲存目前執行中程式的序文(context):PSW, PC, 其他暫存器、堆疊。 • 將程式計數器(PC)設至中斷處理器的位址。 • 由使用者模式切換至核心模式,讓中斷處理程式可執行特權指令。

  25. 處理程序切換 (Process Switch) (續) • 模式切換(mode switching) vs. 處理程序切換(process switching) • (也有稱context switch, 但容易與thread切換混淆) • 模式切換不會改變process從執行狀態至另一狀態。 • 在此情況下,序文(context)的儲存及之後的回存,額外的負擔較少。 • 但執行中的Process被移至其他狀態,則必須做完整的process切換。 • Process切換的步驟: • 儲存處理器的序文,包括:程式計數器與其他暫存器。 • 更新Process控制區塊:改變Process執行狀態至另一狀態。將Process移至適當的佇列。 • 選擇另一Process來執行(課本第4部分討論)。更新選擇的Process的控制區塊。 • 更新記憶體管理資料結構。 • 回存處理器的序文到該Process被切換之前。

  26. 作業系統的執行方式 • 作業系統的特殊角色 • 作業系統是電腦軟體,也就是處理器執行的程式。 • 作業系統時常放棄控制,且依賴處理器允許它取回控制權。 • 作業系統是個Process嗎?它如何控制? • 非Process核心 (Non-process Kernel): • 常在舊作業系統見到的方法。 • 作業系統在所有Process外執行,是分開執行的實體,擁有特權模式。 • 所謂Process即為User Process。 Figure 3.14 (a) Separate kernel

  27. 與User Process一起執行 • 將整個作業系統視為User Process的內容 • 作業系統是常式的集合,讓使用者呼叫來執行各種功能 • 在User Process的環境中執行。 • 當中斷、陷阱或管理者呼叫發生,處理器就進入核心模式,並將控制權交給作業系統。 • 並未做處理程序切換,只進行了模式切換。作業系統碼以共享的方式,被User Process所執行。 Figure 3.14 (b) OS functions execute within user processes

  28. 與User Process一起執行(續) • 在核心模式時,使用分開的核心堆疊(kernel stack)管理呼叫/返回。 • 作業系統在共享的位址區域,可被所有User Process共享 Figure 3.15 Process Image: Operating System Executes Within User Space 28

  29. 處理程序為基礎的作業系統Process-based Operating System • 將作業系統視為許多Process的集合 • 主要的核心函數組織成分離的Process • 優點: • 模組化的設計。 • 採Process設計,各函數可以設定不同的優先權執行,並與其他Process交錯執行。 • 對多處理器或分散式系統而言,可將作業系統服務移至其他處理器上執行,來提昇效率。 Figure 3.14 (c) OS functions execute as separate processes

  30. 3.4 Unix SVR4 Process管理 • 大部分Unix作業系統的功能,都在User Process的環境下執行。(圖3.14 (b)的模式) • 使用兩種類型的Process • System Process: 核心模式下執行,例如:配置記憶體、置換Process。 • User Process: (1) run in user mode for user programs; (2) run in kernel modes for system calls, traps, and interrupts. • Process狀態:共9種狀態,類似之前的7狀態轉移圖。 • Created=New; Zombie(僵屍)=Exit;…。 • 執行中(Running)分為: [User Running], [Kernel Running],表示在使用者模式或核心模式內執行。 • 區分備妥[Ready to Run in Memory]及被先佔[Preempted]: 二者本質上相同,只是區別進入此狀態的途徑,二者也放在同一佇列上。 • 先佔動作(Preemption)只發生在Process由 kernel轉移至user mode時。使得Unix不適於即時處理(Real-time processing)。

  31. 31 Figure 3.16 UNIX Process State Transition Diagram

  32. Unix System Processes • Process 0 是在系統啟動時(boot time)建立的特殊process, • 預先定義成一個啟動時載入的資料結構。 • 稱為置換者處理程序(“swapper process” )。 • Process 0 fork process 1 (the init process) • 所有系統中的process都是Process 1的child process。 • 當使用者登錄系統,Process 1 建立一User Process 給該使用者。

  33. Unix處理程序影像(Process Image) • 使用者階層序文 (User-level context) • Process本文(Text):程式的可執行機器指令(code: read-only) • Process資料(Data) • 使用者堆疊(User Stack):calls/returns in user mode • 共享記憶體(Shared memory):用於行程間通訊(IPC)。只有一份實體,但藉由虛擬記憶體,出現在每個Process的位址空間中。 • 暫存器序文(Register context): 處理器狀態資訊。 • 系統階層序文(System-level context) • Process表格項: Process的狀態, UID, PID, 優先權(priority), 等待的事件(event awaiting), 已送出但尚未處理的訊號(signals), 指向text、data的記憶體指標。 • 使用者區域:額外的Process控制資訊,包括:生效的UID (effective UID), 計時器, 使用中的檔案(files in use) ... • 每個Process的區域表(Per Process Region Table):記憶體管理用。 • 核心堆疊(Kernel stack):calls/returns in kernel mode

  34. 處理程序控制 Process Control • 建立Process: fork() • 在Process表格中,配置一個槽(slot)給新的Process。 • 指派唯一的識別碼(unique PID )給child process。 • child process得到parent process的image的複本。 • child process擁有parent process所有檔案。 • 分配child process至備妥執行狀態。 • fork()返回child的 PID給parent process; 返回0給child process。 • 上述工作都在parent process的核心模式下執行,核心的分派常式選擇進行下列其中一項工作: • 停留在parent process,控制權回到使用者模式呼叫fork後的位置。 • 轉移控制權至child process,child process在由fork呼叫返回後同時開始執行。 • 轉移控制權至其他process,但child及parent仍停留在備妥執行狀態。

More Related