Introduction (рдкрд░рд┐рдЪрдп)
Operating System рдореЗрдВ рдХрдИ processes рдПрдХ рд╕рд╛рде run рдХрд░рддреА рд╣реИрдВ рдФрд░ resources (CPU, memory, files рдЖрджрд┐) рдХреЛ share рдХрд░рддреА рд╣реИрдВред
рдХрдИ рдмрд╛рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ processes рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ resources рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреА рд░рд╣рддреА рд╣реИрдВ рдФрд░ рдХреЛрдИ рднреА process рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рдкрд╛рддрд╛ред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ Deadlock рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
Deadlock рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ
Deadlock рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдБ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ processes рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ resources рдХрд╛ wait рдХрд░рддреЗ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рднреА process execute рдирд╣реАрдВ рдХрд░ рдкрд╛рддрд╛ред
Simple Definition
Deadlock = рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЬрд┐рд╕рдореЗрдВ processes рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП wait рдХрд░рддреА рд░рд╣рддреА рд╣реИрдВ
Example

рдорд╛рди рд▓реЛ:
- Process P1 рдХреЗ рдкрд╛рд╕ Resource R1 рд╣реИ рдФрд░ рд╡рд╣ R2 рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ
- Process P2 рдХреЗ рдкрд╛рд╕ Resource R2 рд╣реИ рдФрд░ рд╡рд╣ R1 рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдЕрдм:
- P1 рдХреЛ R2 рдЪрд╛рд╣рд┐рдП
- P2 рдХреЛ R1 рдЪрд╛рд╣рд┐рдП
- рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдХреЗ рдкрд╛рд╕ рдЬреЛ resource рд╣реИ, рдЙрд╕реЗ рдЫреЛрдбрд╝ рдирд╣реАрдВ рд░рд╣реЗ
рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ process рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП wait рдХрд░рддреЗ рд░рд╣реЗрдВрдЧреЗ
рдпрд╣реА Deadlock рд╣реИ
Real Life Example
рдорд╛рди рд▓реЛ рджреЛ рд▓реЛрдЧ рдПрдХ рд╕рдВрдХрд░реЗ рд░рд╛рд╕реНрддреЗ (bridge) рдкрд░ рдЖрдордиреЗ-рд╕рд╛рдордиреЗ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ:
- рдХреЛрдИ рдкреАрдЫреЗ рдирд╣реАрдВ рд╣рдЯрддрд╛
- рджреЛрдиреЛрдВ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рд╕рдХрддреЗ
рджреЛрдиреЛрдВ рд╡рд╣реАрдВ рдлрдБрд╕ рдЬрд╛рддреЗ рд╣реИрдВ
рдпрд╣ Deadlock рдХрд╛ real-life example рд╣реИ
Deadlock рд╣реЛрдиреЗ рдХреА Conditions
Deadlock рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ conditions рдХрд╛ рдПрдХ рд╕рд╛рде рд╣реЛрдирд╛ рдЬрд░реВрд░реА рд╣реИ:
1. Mutual Exclusion
Resource рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ process use рдХрд░ рд╕рдХрддрд╛ рд╣реИ
2. Hold and Wait
Process рдПрдХ resource hold рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ resource рдХрд╛ wait рдХрд░рддрд╛ рд╣реИ
3. No Preemption
Resource рдХреЛ forcefully рдЫреАрдирд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛
4. Circular Wait
Processes рдПрдХ circular chain рдореЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рдХрд╛ wait рдХрд░рддреЗ рд╣реИрдВ
Example:
P1 тЖТ P2 тЖТ P3 тЖТ P1
Deadlock Graph Concept
Deadlock рдХреЛ graph рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- Nodes = Processes рдФрд░ Resources
- Edges = request рдпрд╛ allocation
рдЕрдЧрд░ graph рдореЗрдВ cycle рдмрдирддрд╛ рд╣реИ, рддреЛ deadlock рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрддреА рд╣реИ
Deadlock рдХреЗ Effects
- System рдХреА performance рд░реБрдХ рдЬрд╛рддреА рд╣реИ
- Processes stuck рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ
- Resources block рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ
- System hang рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
Important Point
Deadlock рддрднреА рд╣реЛрдЧрд╛ рдЬрдм рдЪрд╛рд░реЛрдВ conditions рдПрдХ рд╕рд╛рде true рд╣реЛрдВ
рдЕрдЧрд░ рдПрдХ рднреА condition remove рдХрд░ рджреА рдЬрд╛рдП, рддреЛ deadlock рдирд╣реАрдВ рд╣реЛрдЧрд╛
Deadlock рдХреЛ handle рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ
Deadlock рдХреЛ handle рдХрд░рдиреЗ рдХреЗ рдЪрд╛рд░ main рддрд░реАрдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:
- Prevention
- Avoidance
- Detection
- Recovery
(рдЗрдирдХреЛ рд╣рдо рдЕрдЧрд▓реЗ topics рдореЗрдВ detail рдореЗрдВ рдкрдврд╝реЗрдВрдЧреЗ)
Key Points
- Deadlock = infinite waiting
- 4 conditions рдЬрд░реВрд░реА рд╣реИрдВ
- Circular wait рдмрд╣реБрдд important concept рд╣реИ
Conclusion
Deadlock Operating System рдХреА рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ processes рдПрдХ-рджреВрд╕рд░реЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реБрдП stuck рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ system рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рдкрд╛рддрд╛ред
рдЗрд╕рд▓рд┐рдП deadlock рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдЙрд╕реЗ avoid рдХрд░рдирд╛ system design рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд░реВрд░реА рд╣реИред