進程的阻塞與喚醒 掛起與激活


進程的阻塞與喚醒:

1. 引起阻塞與喚醒的事件

  1)向系統中請求共享資源失敗      當無足夠的資源分配時,獲取資源的線程會進行阻塞,加入到阻塞隊列中;當有資源后,被阻塞的線程會被喚醒,加入到就緒隊列中。

  2)等待某種操作完成    

  3)新數據尚未到達     比如生產者消費者模型,只要產品數量為0,那么消費者就會阻塞,得到產品數量大於0,進行喚醒

  4)等待新任務到達

2. 進程阻塞過程

  當要進行阻塞的事件發生時,進程通過調用阻塞原語 block 將自己阻塞,所以,阻塞是一個主動的過程,將自己進行阻塞。 進程控制塊的狀態由 執行 改為阻塞,並將PCB插入到阻塞隊列。

3. 進程喚醒過程

  當要進行喚醒的事件發生時,進程調用喚醒原語 wakeup ,將等待該事件的線程喚醒,喚醒是通過別的進程來進行喚醒的!!將阻塞的進程從等待該事件的阻塞隊列中移出,將其PCB中的狀態由阻塞改為 就緒,然后 將該PCB插入到就緒隊列中。

進程的掛起與激活:

  (為什么要有掛起與激活???  與進程的阻塞和喚醒有關系嗎??)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM