3-5 進程操作
1.進程控制
①進程有生命週期:產生、運行、暫停、終止。對進程的這些操作叫進程控制。
②進程控制的職責是對系統中進程實施有效的管理,它是CPU的管理的一部分(還有進程同步、通信和調度)。
③當系統允許多進程併發執行時,爲了實現共享,協調併發進程的關係,處理機管理必須對進場實施有效的管理。
2.進程創建的情況
①作業調度:在批處理系統中,作業調度程序調度到某個作業以後,就把這個作業裝入內存,並分配必要的資源,創建進程,插入就緒隊列。
②用戶登錄:在分時系統中,用戶在終端鍵入登錄命令後,若是合法用戶,系統建立一個進程,並插入就緒隊列。
③提供服務:用戶向系統提出請求後,系統專門建立一個進程爲用戶服務(如打印請求)。
④應用請求:應用進程的需要,由它自己創建一個新進程,使新進程以併發運行的方式完成特定的任務。(如輸入數據並將處理結果輸出到表格上)。
3.典型的UNIX系統中的進程樹
父進程創建了子進程,如此輪流創建進程下去,構成一棵進程樹。
4.進程創建的問題
①資源共享 Resource Sharing,三種可能:
- 父進程和子進程共享所有的資源
- 子進程共享父進程資源的子集
- 父進程和子進程無資源共享
②執行 Execution
- 父進程和子進程併發執行
- 父進程等待,直到子進程終止
③地址空間 Address Space
- 子女複製雙親(兩者地址空間一樣)
- 子女有一個程序被調入(不一樣) Child has a program loaded into it.
3-6 進程創建
1.進程創建 UNIX例子 Process Creation
①在UNIX中用戶鍵入一個命令(如date,ps,ls),shell就創建一個進程。
②fork系統調用創建新進程。
③在fork之後採用ececlp系統調用用一個新程序代替進程的內存空間。
2.進程終止 Process Termination
①進程執行最後一項並詢問操作系統做出決定,從子進程向父進程輸出數據,操作系統收回進程的資源。
②父進程可中止子進程的執行(終止)的情況:
- 子進程超量分配資源
- 賦予子進程的任務不再需要
- 父進程終止,若父進程終止,不允許子進程繼續(級聯終止)
3.進程阻塞 Process Blocking
一個處在運行狀態的進程,因等待某個事件發生(如等待打印機)而不能繼續運行時,將調用阻塞原語,把進程置爲阻塞狀態,並轉程度調度程序(等於讓出處理機)。
調用進程阻塞操作是進程處於運行狀態下執行的,它的執行將引起等待某事件的隊列的改變。
4.進程喚醒
①當進程所等待的事件發生時,該進程將被喚醒(由進程喚醒操作完成)。
②喚醒一個進程有兩種方法:
- 由系統進程喚醒
- 由事件發生進程喚醒
3-7 進程通信:共享存儲
生產者——消費者問題
思考問題:緩衝區buffer容量爲n,爲什麼至多n-1可用?
3-8 消息傳遞
1.若P與Q要通信:
①建立通信連接
- 物理的,如共享存儲,硬件總線
- 邏輯的,邏輯特性
②通過send/receive交換信息
2.連接的問題
①連接如何建立
②連接可同多於兩個進程相關嗎? Can a link be associated with more than two processes?
③每對通信進程有多少連接?
④一個連接的容量是多少?
⑤連接可使用的固定消息大小?或可變消息的大小?
⑥連接是雙向的還是無向的。
3.直接通信
①進程必須是顯示的命名
send(P,message) 向P發信息
receive(P,message) 從進程Q接收消息
②通信連接的特性:
- 連接自動建立
- 連接精確地與每一對在通信的進程相關
- 每一對之間存在一個連接
- 連接可以無向,但通常是雙向的
③非對稱通信 asymmetric communication
發送信息 send(P,message)
接收 receive(id,message) 不指定接收方
4.間接通信
①消息導向至信箱,並從信箱接收(被視作端口)
每一個信信箱有一個唯一的id
僅當共享一個信箱時,進程才能通信
②send(A,message) 從信箱A發出
receive(A,message) 從A接收
③特性
- 僅當共享一個信箱時,進程才能通信
- 連接可與多個進程相關
- 每一對進程可共享多個通信連接(共享多個信箱)
- 連接可以是無向的或雙向的
5.操作 operation
- 創建新信箱
- 通過信箱發送和接收信息
- 銷燬信箱
6信箱共享
P1發送消息到信箱A,P2和P3都可以接收信息,誰收到信息不確定
解決方案:
- 允許一個連接最多2個進程相關
- 允許一個時刻有一個進程執行接收操作
- 允許系統任意的選擇接受者,發送者被通知誰是接收者
7.同步與異步 Synchronization and Asynchronization
①同步
- 阻塞的發送,發送者阻塞,發消息後直到被接收才被喚醒
- 阻塞的接收,接收者阻塞,未接收時阻塞,接收後被喚醒
②異步
- 非阻塞的發送
- 非阻塞的接收
8.緩衝
消息隊列附加在連接上,有以下三種實現方案:
①零容量——0消息 發送者必須等待接收者
②有界容量——n個消息有限長度 若連接滿了,發送者必須等待
③無界容量——無限長度 發送者從不等待
本文知識以及圖片來源:慕課_操作系統原理_田麗華
網址:https://www.icourse163.org/learn/XJTU-1003409001?tid=1206408203#/learn/content