使用者空間和核心空間
使用者空間:使用者空間是常規程序所在的區域,是非特權的空間,在該空間執行的**不能訪問硬體裝置
核心空間:是作業系統所在的區域,是特權空間,能與裝置控制器通訊,控制著使用者區域程序的執行狀態,最重要的是所有的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.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...