什麼是程序阻塞

2022-03-15 16:58:06 字數 854 閱讀 9186

①什麼是程序阻塞

正在執行的程序由於提出系統服務請求(如i/o操作),但因為某種原因未得到作業系統的立即響應,或者需要從其他合作程序獲得的資料尚未到達等原因,該程序只能呼叫阻塞原語把自己阻塞,等待相應的事件出現後才被喚醒。

②阻塞狀態

正在進行的程序由於發生某事件而暫時無法繼續執行時,便放棄處理機而處於暫停狀態,亦即程序的執行受到阻塞,我們把這種暫停狀態叫阻塞程序阻塞,有時也成為等待狀態或封鎖狀態。通常這種處於阻塞狀態的程序也排成乙個佇列。有的系統則根據阻塞原因的不同而處於阻塞狀態程序排成多個佇列。

③程序阻塞的典型事件

程序阻塞的典型事件有:生產者/消費者問題,理髮店問題

生產者/消費者問題

生產者/消費者問題(英語:producer-consumer problem),也稱有限緩衝問題(英語:bounded-buffer problem)通常可描述為有乙個或多個生產者產生某種型別的資料(記錄、字元),並放置在緩衝區中,有乙個消費者從緩衝區中取資料,每次取一項;系統保證避免對緩衝區的重複操作,也就是說,在任何時候只有乙個**(生產者或消費者)可以訪問緩衝區。生產者的是生成一定量的資料放到緩衝區中,然後重複此過程。與此同時,消費者也在緩衝區消耗這些資料。該問題的關鍵就是要保證生產者不會在緩衝區滿時加入資料,消費者也不會在緩衝區中空時消耗資料,否則會造成阻塞。

程序阻塞理髮店問題

如果理髮店中顧客數已滿,新來的就不能再進入。顧客一旦進入理髮店,可以坐在沙發上等待,如果沙發已座滿就站著。當一位理髮師空閒時,在沙發上坐的時間最久的顧客得到服務,並且,如果還有顧客站著,進入理髮店站的時間最久的顧客就可以坐在沙發上。當一位顧客理髮結束後,任何理髮師都可以接受付款,但由於只有一台收銀機,因此一次只能有一位顧客付款。理髮店人滿後的這種狀態就是程序阻塞狀態。

NIO(二) 什麼是阻塞?什麼是非阻塞?

阻塞 當某個事件或者任務在執行過程中,它發出乙個請求操作,但是由於該請求操作需要的條件不滿足,那麼就會一直在那等待,直至條件滿足 非阻塞 當某個事件或者任務在執行過程中,它發出乙個請求操作,如果該請求操作需要的條件不滿足,會立即返回乙個標誌資訊告知條件不滿足,不會一直在那等待。這就是阻塞和非阻塞的區...

什麼是阻塞式和非阻塞io流

阻塞io socket 的阻塞模式意味著必須要做完io 操作 包括錯誤 才會返回。非阻塞io 非阻塞模式下無論操作是否完成都會立刻返回,需要通過其他方式來判斷具體操作是否成功。兩者區別 所謂阻塞方式的意思是指,當試圖對該檔案描述符進行讀寫時,如果當時沒有東西可讀,或者暫時不可寫,程式就進入等待 狀態...

什麼是殭屍程序?

什麼是殭屍程序?在 unix linux 系統中,通過 fork 建立子程序。子程序結束時,他的父程序並沒有等待 呼叫 wait waitpid 他,則他成為乙個殭屍程序。但如果該程序的父程序已經結束了,那麼該程序就不會變成殭屍程序,因為每個程序結束的時候,系統都會掃瞄當前系統中所執行的所有程序,看...