πΎ Synchronization
λκΈ°ν(Synchronization)μ νΉμ μμμ μ κ·Όν λ ν κ°μ Process(Thread)λ§ μ κ·Όνκ² νκ±°λ Process(Thread)λ₯Ό μ¬λ°λ₯Έ μμλλ‘ μ€ννλ κ²μ μλ―Έν©λλ€.
Process(Thread)μ λκΈ°νλ₯Ό ν΅ν΄ μ€ν μμμ μμμ μΌκ΄μ±μ 보μ₯ν μ μμ΅λλ€.
μ€ν μμ μ μ΄λ₯Ό μν λκΈ°ν | μνΈ λ°°μ λ₯Ό μν λκΈ°ν |
---|---|
λμμ μ€νλλ Process(Thread)λ₯Ό μ¬λ°λ₯Έ μμλλ‘ μ€ννλ κ² | 곡μ μμμ λμμ μ κ·Όνμ§ λͺ»νκ² νλ κ² |
Β | Race Conditionμ΄ λ°μνμ§ μλλ‘ λ κ° μ΄μμ Process(Thread)κ° μκ³ κ΅¬μμ λμμ μ κ·Όνμ§ λͺ»νλλ‘ κ΄λ¦¬νλ κ² |
- 곡μ μμ(Shared Resource): 곡λμΌλ‘ μ΄μ©νλ λ³μ, νμΌ, μ₯μΉ λ±
- Race Condition: μ¬λ¬ Process(Thread)κ° λμ λ€λ°μ μΌλ‘ μκ³ κ΅¬μμ μ½λλ₯Ό μ€ννμ¬ μκΈ°λ λ¬Έμ
- μκ³ κ΅¬μ(Critical Section): 곡μ μμμ μ κ·Όνλ μ½λ μ€ λμμ μ€ννλ©΄ λ¬Έμ κ° λ°μνλ μ½λ μμ
πΎ Synchronization Techniques
- Mutex Lock(MUTual Exclusion Lock): νλμ 곡μ μμμ λμμ μ κ·Όνμ§ λͺ»νλλ‘ λ§λλ λꡬ
- Counting Semaphore: νλμ 곡μ μμμ΄ μλ μ¬λ¬ κ°μ 곡μ μμμ λν΄ μ κ·Όμ μ μ΄νλ μ‘°κΈ λ μΌλ°νλ λ°©μμ λκΈ°ν λꡬ
- Monitor: 곡μ μμμ λ€λ£¨λ Interfaceμ μ κ·ΌνκΈ° μν Queueλ₯Ό λ§λ€κ³ Monitor μμ νμ νλμ Process(Thread)λ§ λ€μ΄μ€λλ‘ νμ¬ μνΈ λ°°μ λ₯Ό μν λκΈ°νμ 쑰건 λ³μλ₯Ό ν΅ν΄ μ€ν μμ μ μ΄λ₯Ό μν λκΈ°νλ₯Ό μ 곡νλ λκΈ°ν