[理工] OS I/O種類

看板Grad-ProbAsk作者 (chiu)時間6年前 (2017/12/31 01:56), 編輯推噓5(5016)
留言21則, 3人參與, 6年前最新討論串1/1
想請問 PollingI/O, Interrupted I/O 和 Blocking I/O, Non-blocking I/O, AsynchronousI/O 之間有什麼關係嗎? 是可以2*3這樣互相搭配 還是後面三種各自使用到前面兩種運作方式之一? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.66.86 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1514656575.A.5F3.html

12/31 09:10, 6年前 , 1F
上面是Cpu如何處理I/O
12/31 09:10, 1F

12/31 09:11, 6年前 , 2F
下面是user process如何handle IO
12/31 09:11, 2F

12/31 09:12, 6年前 , 3F
我猜兩個應該是完全不相關的
12/31 09:12, 3F

12/31 11:48, 6年前 , 4F
可以相關或不相關 下面更是描述整個
12/31 11:48, 4F

12/31 11:49, 6年前 , 5F
Io event 的處理流程
12/31 11:49, 5F

12/31 13:19, 6年前 , 6F
我目前理解是blocking io是不載入新的process然後是inte
12/31 13:19, 6F

12/31 13:19, 6年前 , 7F
rrupted io
12/31 13:19, 7F

12/31 13:19, 6年前 , 8F
Non blocking是載入新的但是polling
12/31 13:19, 8F

12/31 13:20, 6年前 , 9F
然後asynchronous io是載入新的然後interrupted io
12/31 13:20, 9F

12/31 13:20, 6年前 , 10F
請問這樣理解正確嗎?
12/31 13:20, 10F

12/31 14:08, 6年前 , 11F
你可以想像socket通訊中 某個個server
12/31 14:08, 11F

12/31 14:08, 6年前 , 12F
有許多task在listen client端的請求
12/31 14:08, 12F

12/31 14:09, 6年前 , 13F
若是blocking io ,假設沒有pending request
12/31 14:09, 13F

12/31 14:10, 6年前 , 14F
則會被強迫一直等到client端有請求
12/31 14:10, 14F

12/31 14:11, 6年前 , 15F
而nonblocking就可以此時切換下一個task作別的事
12/31 14:11, 15F

12/31 14:13, 6年前 , 16F
至於怎麼檢查有沒有pending你要用polling
12/31 14:13, 16F

12/31 14:13, 6年前 , 17F
或interrupt都可以 所以block/nonblocking
12/31 14:13, 17F

12/31 14:14, 6年前 , 18F
看得是一整個流程
12/31 14:14, 18F

12/31 14:15, 6年前 , 19F
或者也可以用生產者消耗者問題來思考也行
12/31 14:15, 19F

12/31 15:02, 6年前 , 20F
了解~那可以再問一下non-blocking和asynchronous差別嗎
12/31 15:02, 20F

12/31 15:02, 6年前 , 21F
?覺得兩個好像~
12/31 15:02, 21F
文章代碼(AID): #1QHzC_Np (Grad-ProbAsk)