iT邦幫忙

DAY 26
1

Linux kernel模組的開發系列 第 26

Blocking 與 Non-blocking I/O

允許 sleep/awaken 動作的 process 稱之為 blocking I/O,反之不允許 sleep 動作的稱之為 non-blocking I/O。

採用 blocking I/O 的時候,必須做到以下兩個基本動作:一,當 process 進行 read 動作但是資料尚未就緒時,process 必須被 block 住 (sleep),而當有資料進來時就需要立即被喚醒 (awaken),就算資料仍不完整也是。二,當 process 進行 write 動作但是 buffer 沒有空間時,process 也必須被 block 住,而且必須被放到跟 read 動作不同的 wait queue 中去等待 wake-up (buffer 騰出空間寫入)。

而 non-blocking I/O 的 read/write 行為方式就很不同了,簡單的說,當讀不到資料或寫不進 buffer 時,他會送出 retry 的動作,再試一次。


上一篇
Process wake up 的注意事項
下一篇
輸出訊息到當下 tty 的範例
系列文
Linux kernel模組的開發30

尚未有邦友留言

立即登入留言