同步 非同步 阻塞 非阻塞

2021-08-30 11:25:36 字數 1187 閱讀 2925

使用者空間和核心空間

使用者空間:使用者空間是常規程序所在的區域,是非特權的空間,在該空間執行的**不能訪問硬體裝置

核心空間:是作業系統所在的區域,是特權空間,能與裝置控制器通訊,控制著使用者區域程序的執行狀態,最重要的是所有的i/o都直接或間接的通過核心空間。

執行內容

是否有特權

是否可以訪問硬體

使用者程序

常規程序否否

核心程序

作業系統是是

i/0模型

對於網路的i/o操作,可以分為兩個準備階段和操作階段。

準備階段:判斷資料是否能夠操作(即等待資料是否可用),在核心空間進行。

操作階段:從核心緩衝區拷貝資料到使用者緩衝區,這是實際的i/o操作。

同步&非同步

同步/非同步是使用者空間的呼叫

同步 i/o:使用者呼叫系統i/o服務,如果核心空間沒有資料,程序將被掛起,核心著手把資料讀進記憶體。

非同步 i/o:使用者發起系統呼叫,系統會立即返回,如果沒有資料,就返回特定標識,由系統負責等待資料,資料到達就通知使用者。

實際上同步與非同步是針對應用程式與核心的互動而言的。同步過程中程序觸發io操作並等待或者輪詢的去檢視io操作是否完成。非同步過程中程序觸發io操作以後,直接返回,做自己的事情,io交給核心來處理,完成後核心通知程序io完成。如下圖所示:

阻塞&非阻塞

阻塞/非阻塞是核心空間的呼叫

阻塞:核心空間判斷資料是否到達,沒有到達就處於等待狀態。

非阻塞:核心判斷資料是否到達,如果未到達就立即返回。

簡單理解為需要做一件事能不能立即得到返回應答,如果不能立即獲得返回,需要等待,那就阻塞了,否則就可以理解為非阻塞。如下圖所示:

參考資料

阻塞,非阻塞,非同步,同步

之前一直對這個概念理不太清楚,今天看到一篇文章感覺不錯 本文 老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通 水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻...

同步 非同步 阻塞 非阻塞

故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...

同步 非同步 阻塞 非阻塞

故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...