Race Condition
Race Condition
Definitions
Race Conditionμ΄λ λ κ° μ΄μμ νλ‘μΈμ€κ° κ³΅ν΅ μμμ Concurrentlyνκ² μ½κ±°λ μ°λ λμμ ν λ,
κ³΅μ© λ°μ΄ν°μ λν μ κ·Όμ΄ μ΄λ€ μμμ λ°λΌ μ΄λ£¨μ΄μ‘λμ§μ λ°λΌ κ·Έ μ€ν κ²°κ³Όκ° κ°μ§ μκ³ λ¬λΌμ§λ μν©μ λ§νλ€.
EXAMPLES
컀λ μμ μ μννλ μ€μ μΈν°λ½νΈ λ°μ
λ¬Έμ μ : 컀λ λͺ¨λμμ λ°μ΄ν°λ₯Ό λ‘λνμ¬ μμ μ μννλ€κ° μΈν°λ½νΈκ° λ°μνμ¬ κ°μ λ°μ΄ν°λ₯Ό μ‘°μνλ κ²½μ°
ν΄κ²°λ² : 컀λλͺ¨λμμ μμ μ μννλ λμ, μΈν°λ½νΈλ₯Ό disable μμΌ CPU μ μ΄κΆμ κ°μ Έκ°μ§ λͺ»νλλ‘ νλ€.
νλ‘μΈμ€κ°
System Callμ νμ¬ μ»€λ λͺ¨λλ‘ μ§μ νμ¬ μμ μ μννλ λμ€ λ¬Έλ§₯ κ΅ν(Context Switching)μ΄ λ°μν λ.
λ¬Έμ μ : νλ‘μΈμ€1μ΄ μ»€λλͺ¨λμμ λ°μ΄ν°λ₯Ό μ‘°μνλ λμ€, μκ°μ΄ μ΄κ³Όλμ΄ CPU μ μ΄κΆμ΄ νλ‘μΈμ€2λ‘ λμ΄κ° κ°μ λ°μ΄ν°λ₯Ό μ‘°μνλ κ²½μ°. ( νλ‘μΈμ€2κ° μμ μ λ°μλμ§ μμ )
ν΄κ²°λ² : νλ‘μΈμ€κ° 컀λλͺ¨λμμ μμ μ νλ κ²½μ° μκ°μ΄ μ΄κ³Όλμ΄λ CPU μ μ΄κΆμ΄ λ€λ₯Έ νλ‘μΈμ€μκ² λμ΄κ°μ§ μλλ‘ ν¨.
λ©ν° νλ‘μΈμ νκ²½μμ 곡μ λ©λͺ¨λ¦¬ λ΄μ 컀λ λ°μ΄ν°μ μ κ·Όν λ
λ¬Έμ μ : λ©ν° νλ‘μΈμ νκ²½μμ 2κ°μ CPUκ° λμμ 컀λ λ΄λΆμ 곡μ λ°μ΄ν°μ μ κ·Όνμ¬ μ‘°μνλ κ²½μ°
ν΄κ²°λ² : 컀λ λ΄λΆμ μλ κ° κ³΅μ λ°μ΄ν°μ μ κ·Όν λλ§λ€, κ·Έ λ°μ΄ν°μ λν lock/unlockμ νλ λ°©λ²
Raceμ λ» κ·Έλλ‘, κ°λ¨ν λ§νλ©΄ κ²½μνλ μν, μ¦ λ κ°μ μ€λ λκ° νλμ μμμ λκ³ μλ‘ μ¬μ©νλ €κ³ κ²½μνλ μν©μ λ§νλ€.
μ΄λ¬ν κ²½μ νλ‘μΈμ€μ κ²½μ°, λ€μ μΈ κ°μ§ μ μ΄λ¬Έμ μ μ§λ©΄νλ€.
Mutual Exclusion
Race conditionμ λ§κΈ° μν΄μλ λ κ° μ΄μμ νλ‘μΈμ€κ° κ³΅μ© λ°μ΄ν°μ λμμ μ κ·Όμ νλ κ²μ λ§μμΌ νλ€.
μ¦, ν νλ‘μΈμ€κ° κ³΅μ© λ°μ΄ν°λ₯Ό μ¬μ©νκ³ μμΌλ©΄ κ·Έ μμμ μ¬μ©νμ§ λͺ»νλλ‘ λ§κ±°λ,
λ€λ₯Έ νλ‘μΈμ€κ° κ·Έ μμμ μ¬μ©νμ§ λͺ»νλλ‘ λ§μΌλ©΄ μ΄ λ¬Έμ λ₯Ό νΌν μ μλ€. μ΄κ²μ μνΈ λ°°μ (mutual exclusion)λΌκ³ λΆλ₯Έλ€.
DeadLock
κ·Έλ¬λ μμ κ°μ μνΈ λ°°μ λ₯Ό μννλ©΄ μΆκ°μ μΈ μ μ΄ λ¬Έμ κ° λ°μνλ€. νλλ κ΅μ°©μν μ¦ μ¬κΈ°μ λ§νλ Deadlockμ΄λ€.
νλ‘μΈμ€κ° κ°μ νλ‘κ·Έλ¨μ μ€ννκΈ° μν΄ λ μμ λͺ¨λμ μμΈμ€ ν΄μΌ νλ€κ³ κ°μ ν λ,
νλ‘μΈμ€λ λ μμ λͺ¨λλ₯Ό νμλ‘ νλ―λ‘ νμν λ 리μμ€λ₯Ό μ¬μ©νμ¬ νλ‘κ·Έλ¨μ μνν λκΉμ§ μ΄λ―Έ μμ ν 리μμ€λ₯Ό ν΄μ νμ§ μλλ€.
μ΄λ¬ν μν©μμ λ νλ‘μΈμ€λ κ΅μ°© μνμ λΉ μ§κ² λλ λ¬Έμ κ° λ°μν μ μλ€.
Starvation
μ΄ μ μ΄ λ¬Έμ λ βκΈ°μ μνβλΌκ³ λ νλ€. μ΄λ¬ν λ¬Έμ λ νλ‘μΈμ€λ€μ΄ λ μ΄μ μ§νμ νμ§ λͺ»νκ³ μꡬμ μΌλ‘ λΈλ‘λμ΄ μλ μνλ‘,
μμ€ν μμμ λν κ²½μ λμ€μ λ°μν μ μκ³ νλ‘μΈμ€ κ°μ ν΅μ κ³Όμ μλ λ°μν μ μλ λ¬Έμ μ΄λ€.
λ κ° μ΄μμ μμ μ΄ μλ‘ μλλ°©μ μμ μ΄ λλκΈ°λ§μ κΈ°λ€λ¦¬κ³ μκΈ° λλ¬Έμ κ²°κ³Όμ μΌλ‘λ μ무κ²λ μλ£λμ§ λͺ»νλ μνκ° λκ² λλ€.
μ΄λ κ² race condition μΈ κ²½μ°μλ μ€λ λμ μ€ν μμλ₯Ό μ μ‘°μ ν΄μ£Όμ§ μμΌλ©΄ μ΄μν μν, λΉμ μμ μΈ μνκ° λμ€κ² λλ€.
μ΄ λ¬Έμ λ νμ λ°μνλ κ²μ΄ μλλΌ νΉμ ν μμλλ‘ μνλμμ λ λ°μνλ κ²μ΄λ€.
μ΄ λ¬Έμ λ λλ²κΉ μ ν λμλ μ ν 보μ΄μ§ μλ λ¬Έμ μ μ΄κ³ ,
λ°μ μμ λͺ¨λ νλ‘μΈμ€μ μνλ κ²°κ³Όκ° λ°μνλ κ²μ 보μ₯ν μ μμΌλ―λ‘ νμ λμ± ν° λ¬Έμ λ₯Ό μΌκΈ°ν μ μμΌλ―λ‘ λ°λμ νΌν΄μΌ νλ μν©μ΄λ€.
μ΄λ¬ν λ¬Έμ κ° λ°μνμ§ μλλ‘, OSλ λ€λ₯Έ νλ‘μΈμ€μ μλνμ§ μμ κ°μμΌλ‘λΆν° κ° νλ‘μΈμ€μ λ°μ΄ν° λ° λ¬Όλ¦¬μ μμμ 보νΈν΄μΌ νλ©°
μ¬κΈ°μ λ©λͺ¨λ¦¬, νμΌ λ° I/O μ₯μΉμ κ΄λ ¨λ λ΄μ©μ΄ ν¬ν¨λλ€.
κ·Έλ¦¬κ³ νλ‘μΈμ€μμ μννλ λ΄μ©κ³Ό νλ‘μΈμ€κ° μμ±νλ κ²°κ³Όλ, λ€λ₯Έ λμ νλ‘μΈμ€μ μ€ν μλμ 무κ΄, μ¦ κΈ°λ₯κ³Ό κ²°κ³Όλ μλ‘ λ 립μ μ΄μ΄μΌ νλ€.
Sources
Last updated