系統程式設計 - I/O模型

一匹夫發表於2020-10-11

 

I/O處理五種模型

***  阻塞I/O模型

 

***  非阻塞I/O模型

  

***  I/O多路轉接模型

  

***  訊號驅動I/O模型

   

 當資料包準備好的時候,核心會嚮應用程式傳送一個訊號,程式對訊號進行捕捉,並且呼叫訊號處理函式來獲取資料包。

 該模型分為兩個階段:

 1.資料準備階段:未阻塞,當資料準備完成之後,會主動的通知使用者程式資料已經準備完成,對使用者程式做一個回撥。

 2.資料拷貝階段:阻塞使用者程式,等待資料拷貝。

 

***  非同步I/O模型

 同步和非同步是針對應用程式和核心互動而言的;

 同步是使用者程式觸發IO操作並等待或輪詢的去檢視是否就緒;

 非同步是指使用者程式觸發IO操作以後便開始做自己的事情,而當IO操作已經完成的時候會得到IO完成的通知,這需要CPU支援。

 類比一下,將非同步I/O模型類比為叫外賣

 此時科技已經非常發達,外賣機器人將外賣自動送達並轉換成營養快速注入我的體內,同時還能得到口感的滿足。

 注入結束後,機器人會提醒我注入完畢。

 在這個期間我可以放心大膽的做其他事情,甚至注射的時候也不需要停下來!

 即使用者程式發起系統呼叫後,立刻就可以開始去做其他的事情,然後直到I/O資料準備好並複製完成後,核心會給使用者程式傳送通知,告訴使用者程式操作已經完成了

 1.非同步I/O執行的兩個階段都不會阻塞讀寫操作,由核心完成。

 2.完成後核心將資料放到指定的緩衝區,通知應用程式來取。

 

 

 

 

 

 

 

 

 

 

 

 

.

 

相關文章