




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2015年操作系統操作系統Operating System操作系統22.1 進程及其描述2.2 進程控制2.3 進程同步2.4 進程通信2.5 線程及其實現2.6 處理機調度2.7 死鎖習題第第2 2講講 處理機管理處理機管理操作系統32.4 進程通信 進程通信是指進程之間的信息交換。 由于進程的互斥與同步,需要在進程間交換一定的信息,故不少學者將它們也歸為進程通信,但只能把它們稱為低級進程通信。 我們以信號量機制為例來說明,它們之所以低級的原因在于: 效率低,生產者每次只能向緩沖池投放一個產品(消息),消費者每次只能從緩沖區中取得一個消息; 通信對用戶不透明,OS只為進程之間的通信提供了共享
2、存儲器。 操作系統4進程通信的要求(1) 使用方便 隱藏了實現進程通信的具體細節,向用戶提供了一組用于實現高級通信的命令(原語),用戶可方便地直接利用它實現進程之間的通信。或者說,通信過程對用戶是透明的。這樣就大大減少了通信程序編制上的復雜性。(2) 高效地傳送大量數據 用戶可直接利用高級通信命令(原語)高效地傳送大量的數據。在進程之間要傳送大量數據時,應當利用OS提供的高級通信工具,該工具最主要的特點是:操作系統52.6.1進程通信的類型1. 共享存儲器系統(Shared-Memory System)2. 管道(pipe)通信系統3. 消息傳遞系統(Message passing syste
3、m)4. 客戶機-服務器系統(Client-Server system)操作系統61. 共享存儲器系統(Shared-Memory System) 在共享存儲器系統中,相互通信的進程共享某些數據結構或共享存儲區,進程之間能夠通過這些空間進行通信。 據此,又可把它們分成以下兩種類型:(1) 基于共享數據結構共享數據結構的通信方式。(2) 基于共享存儲區共享存儲區的通信方式。操作系統72. 管道(pipe)通信系統 所謂“管道”,是指用于連接一個讀進程和一個寫進程以實現它們之間通信的一個共享文件,又名pipe文件。 向管道(共享文件)提供輸入的發送進程(即寫進程)以字符流形式將大量的數據送入管道;
4、 而接受管道輸出的接收進程(即讀進程)則從管道中接收(讀)數據。 由于發送進程和接收進程是利用管道進行通信的,故又稱為管道通信。這種方式首創于UNIX系統,由于它能有效地傳送大量數據,因而又被引入到許多其它操作系統中。操作系統8例如 我們可以使用管道符|來連接進程。 在Linux系統中,由管道連接起來的進程可以自動運行,就如同在他們有一個數據流一樣。 在下面的這個例子中,我們要使用sort命令來排序ps的輸出。操作系統9不使用管道VS 使用管道$ ps psout.txt$ sort psout.txt pssort.out$ ps | sort pssort.out操作系統10要在屏幕上看到
5、他們,要使用第三個進程$ ps | sort | more操作系統11管道機制必須提供三方面的協調即當一個進程正在對pipe執行讀/寫操作時,其它(另一)進程必須等待。 互斥指當寫(輸入)進程把一定數量(如4KB)的數據寫入pipe,便去睡眠等待,直到讀(輸出)進程取走數據后再把它喚醒。當讀進程讀一空pipe時,也應睡眠等待,直至寫進程將數據寫入管道后才將之喚醒。 同步只有確定了對方已存在時才能進行通信。 確定對方是否存在操作系統12 在該機制中,進程不必借助任何共享存儲區或數據結構,而是以格式化的消息 (message)為單位,將通信的數據封裝在消息中,并利用操作系統提供的一組通信命通信命令
6、令(原語原語),在進程間進行消息傳遞,完成進程間的數據交換。操作系統13兩種消息傳遞通信方式(1) 直接通信方式發送進程利用OS提供的發送原語把消息直接發送給目標進程(2) 間接通信方式 發送進程把消息發送至共享中間實體(郵箱),接收進程從其中接收。基于消息傳遞系統的通信方式屬于高級通信方式,因其實現方式的不同,可進一步分成兩類:操作系統144. 客戶機-服務器系統(Client-Server system)操作系統151) 套接字(Socket) 套接字起源于20世紀70年代加州大學伯克利分校版本的UNIX(即BSD Unix),是UNIX 操作系統下的網絡通信接口。 一開始,套接字被設計用
7、在同一臺主機上多個應用程序之間的通信(即進程間的通信),主要是為了解決多對進程同時通信時端口和物理線路的多路復用問題。 隨著計算機網絡技術的發展以及UNIX 操作系統的廣泛使用,套接字已逐漸成為最流行的網絡通信程序接口之一。操作系統16文件型 通信進程都運行在同一臺機器的環境中,基于本地文件系統支持,一個套接字關聯到一個特殊的文件,通信雙方通過對這個特殊文件的讀寫實現通信 類似于管道操作系統17網絡型 非對稱方式,發送者需要提供接收者命名 通信雙方進程可運行不同主機的網絡環境中,分配一對套接字(接收進程+發送進程)操作系統182) 遠程過程調用和遠程方法調用 遠程過程(函數)調用RPC(Rem
8、ote Procedure Call),是一個通信協議,用于通過網絡連接的系統。 該協議允許運行于一臺主機(本地)系統上的進程調用另一臺主機(遠程)系統上的進程,而對程序員表現為常規的過程調用,無需額外地為此編程。 如果涉及的軟件采用面向對象編程,那么遠程過程調用亦可稱做遠程方法調用。操作系統19RPC過程(1) 本地過程調用者以一般方式調用遠程過程在本地關聯的客戶存根,傳遞相應的參數,然后將控制權轉移給客戶存根;(2) 客戶存根執行,完成包括過程名和調用參數等信息的消息建立,將控制權轉移給本地客戶進程;(3) 本地客戶進程完成與服務器的消息傳遞,將消息發送到遠程服務器進程;(4) 遠程服務器
9、進程接收消息后轉入執行,并根據其中的遠程過程名找到對應的服務器存根,將消息轉給該存根; (5) 該服務器存根接到消息后,由阻塞狀態轉入執行狀態,拆開消息從中取出過程調用的參數,然后以一般方式調用服務器上關聯的過程;(6) 在服務器端的遠程過程運行完畢后,將結果返回給與之關聯的服務器存根;(7) 該服務器存根獲得控制權運行,將結果打包為消息,并將控制權轉移給遠程服務器進程;(8) 遠程服務器進程將消息發送回客戶端;(9) 本地客戶進程接收到消息后,根據其中的過程名將消息存入關聯的客戶存根,再將控制權轉移給客戶存根;(10) 客戶存根從消息中取出結果,返回給本地調用者進程,并完成控制權的轉移。操作
10、系統202.6.2 消息傳遞通信的實現方式 1. 直接消息傳遞系統 2. 信箱通信操作系統211. 直接消息傳遞系統 在直接消息傳遞系統中采用直接通信方式,即發送進程利用OS所提供的發送命令(原語),直接把消息發送給目標進程。操作系統221) 直接通信原語(1) 對稱尋址方式 收發雙發顯式提供對方ID Send(receiver,message):發送message給receiver Receive(sender,message):從sender接收message 不足:依賴名稱(2) 非對稱尋址方式 接收進程可以與多個發送進程通信,無法制定發送進程 Send(Receiver,message
11、):發送message給Receiver Receive(ID,message):從ID接收message,ID可變操作系統232) 消息的格式在消息傳遞系統中所傳遞的消息,必須具有一定的消息格式。在單機系統環境中,由于發送進程和接收進程處于同一臺機器中,有著相同的環境,所以消息的格式比較簡單,可采用比較短的定長消息格式,以減少對消息的處理和存儲開銷。該方式可用于辦公自動化系統中,為用戶提供快速的便箋式通信。但這種方式對于需要發送較長消息的用戶是不方便的。為此,可采用變長的消息格式,即進程所發送消息的長度是可變的。對于變長消息,系統無論在處理方面還是存儲方面,都可能會付出更多的開銷,但其優點在
12、于方便了用戶。操作系統243) 進程的同步方式 在進程之間進行通信時,同樣需要有進程同步機制,以使諸進程間能協調通信。 不論是發送進程還是接收進程,在完成消息的發送或接收后,都存在兩種可能性,即進程或者繼續發送(或接收)或者阻塞。 操作系統254) 通信鏈路 為使在發送進程和接收進程之間能進行通信,必須在兩者之間建立一條通信鏈路。 有兩種方式建立通信鏈路。 第一種方式:由發送進程在通信之前用顯式的“建立連接”命令(原語)請求系統為之建立一條通信鏈路,在鏈路使用完后拆除鏈路。 第二種方式:發送進程無須明確提出建立鏈路的請求,只須利用系統提供的發送命令(原語,系統自動為之建立一條鏈路。操作系統26
13、2. 信箱通信 屬于間接通信 需要中間實體(信箱) 信箱是一個共享的數據結構,建立在RAM的公用緩沖區上,暫存發送方發送目標方的消息,接收方可以從中取出發送方發給自己的消息操作系統271) 信箱的結構(1) 信箱頭(2) 信箱體存放有關信箱的描述信息信箱ID,信箱擁有者,信箱口令,信箱空格數由若干可以存放消息的信箱格組成,數目和大小在創建信箱時確定操作系統28雙向信箱示意圖操作系統292) 信箱通信原語 (1) 郵箱的創建和撤消 創建 撤銷 (2) 消息的發送和接收 Send(mailbox,message) Receive(mailbox,message)操作系統303) 信箱的類型 (1)
14、 私用郵箱 (2) 公用郵箱 (3) 共享郵箱操作系統312.6.3直接消息傳遞系統實例 消息緩沖隊列通信機制首先由美國的Per Brinch Hansen提出,并在RC 4000系統上實現,后來被廣泛應用于本地進程之間的通信中。在這種通信機制中,發送進程利用Send原語將消息直接發送給接收進程;接收進程則利用Receive原語接收消息。Per Brinch Hansen (November 13, 1938 July 31, 2007) was a Danish-American computer scientist known for concurrent programming theo
15、ry操作系統321. 消息緩沖隊列通信機制中的數據結構 (1) 消息緩沖區。 (2) PCB中有關通信的數據項。操作系統33(1) 消息緩沖區typedef struct message_bufferint sender;int size;char *text;struct message_buffer *next;操作系統34(2) PCB中有關通信的數據項typedef struct processcontrol_block.struct message_buffer *mq;semaphore mutex;semaphore sm;.PCB;操作系統35發送與接收操作系統362. 發送原語void send(receiver,a)getbuf(a.size,i);i.sender=a.sender;i.size=a.size;copy(i.text,a.text);i.next=0;getid(PCBset
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 木材加工過程中的能耗分析與節能考核試卷
- 疫病防控監測設備使用與維護考核試卷
- 羽絨制品企業人力資源績效管理考核試卷
- 舞臺燈光設備的人機工程學考量考核試卷
- 英語電影分析與討論考核試卷
- 石棉制品生產過程中的環境保護考核試卷
- 羽絨加工企業生產安全應急預案考核試卷
- 紙質文具行業市場前景與消費趨勢預測方法考核試卷
- 天然氣開采業的社會經濟效益評估與分析考核試卷
- 石材表面裝飾工藝探討考核試卷
- 2025-2030工程塑料行業市場深度分析及發展策略研究報告
- 人教版高中地理必修二 同步練習冊電子版
- 鋅銀電池的資料
- 七人學生小品《如此課堂》劇本臺詞手稿
- RFJ05-2009-DQ人民防空工程電氣大樣圖集
- 畢業設計(論文)-純電動汽車電池管理系統(bms)管理資料
- 醫療機構消毒技術規范(2023年版)
- 農戶貸款管理辦法銀監發〔2012〕50號
- 兒科-補液-液體療法課件
- 優生優育TORCH檢測臨床意義與臨床咨詢課件
- 《踏雪尋梅》合唱譜
評論
0/150
提交評論