操作系統原理學習_第三週(下)_進程

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章