iT邦幫忙

DAY 25
0

Linux kernel模組的開發系列 第 25

Process wake up 的注意事項

當一個 sleep 的 process 再度被喚醒之後,有幾件事情也是必須注意的:我們無法預期 process 會 sleep 多久,也就是說 process 被叫醒之後,很難保證 process 在 sleep 這段時間發生了甚麼事情,或許原本 process 需要的資源已經不存在,又或許有其他 process 已經更動了那些你原本需要的資料等等,都會讓你的下一個執行狀態變得不確定。所以安全的做法是,你不能預設 process 在 wake up 後的狀態,你必須在 wake up 之後進行檢查並確保條件正常。

還有一項重點,就是你必須確保 process 能夠在某個地方或被某人所喚醒的前提下,才能允許他進入 sleep。而要執行 wake up 的程式也必須要知道該 process 在哪裡,在 Linux 中,採用了稱之為 wait queue (wait_queue_head_t) 的資料結構,用來記錄所有在等代某的特定事件發生的 process。


上一篇
Process sleep 的注意事項
下一篇
Blocking 與 Non-blocking I/O
系列文
Linux kernel模組的開發30

尚未有邦友留言

立即登入留言