Deadlock

Introduction

Deadlock 是一組 processes 都在等待 event,而該 event 只能由同一組裡的其他 process 造成。

在 synchronization 中,這個 event 通常是 lock / semaphore 被釋放。

Semaphore Example

兩個 semaphores SQ 初始值都是 1:

P0: wait(S);        P1: wait(Q);
    wait(Q);            wait(S);
    ...                 ...
    signal(S);          signal(Q);
    signal(Q);          signal(S);

P0 取得 SP1 取得 Q,接著 P0QP1S,兩邊都等對方 release,形成等待循環。

Effect

Deadlock 代表 progress 完全停止,不只是變慢。完整處理通常屬於 resource allocation、deadlock prevention / avoidance / detection 的主題。