1. λ³ν νλ‘μΈμ€μ κ°λ
λ³νμ±
- μ¬λ¬κ°μ νλ‘μΈμ€ νΉμ μ°λ λκ° λμμ μ€νλλ μμ€ν μ νΉμ±μ μλ―Ένλ€.
- CPU(μ½μ΄)κ° νκ°λΌλ©΄ 짧μ μκ°λμ λ²κ°μκ°λ©° μ€ννλ©° μλλ©΄ μ¬λ¬κ°μ CPUλ₯Ό κ°κ°μ νλ‘μΈμ€ νΉμ μ°λ λκ° μ¬μ©νλ€.
- λ©λͺ¨λ¦¬ ꡬ쑰μ λ°λΌ κ°κ²°ν© λ©ν°νλ‘μΈμ νΉμ μ½κ²°ν© λ©ν°νλ‘μΈμλ‘ λλλ€.
- κ°κ²°ν©: μ¬λ¬ CPUκ° νλμ λ©λͺ¨λ¦¬λ₯Ό 곡μ (νλμ μ΄μ체μ )
- μ½κ²°ν©: κ° μμ€ν μ΄ λ 립λ μ΄μ체μ μ λ©λͺ¨λ¦¬λ₯Ό κ°μ§κ³ μλ‘ ν΅μ λ§ν¬λ₯Ό κ°μ§
λ¨μΌ νλ‘μΈμ€ λ΄μ λ³νμ±
λ¨μΌ νλ‘μΈμ€ λ΄μμ λ³νμ±μ μ°μ μμ κ·Έλν, Fork/Join ꡬ쑰, λ³νλ¬Έ λ±μ ν΅ν΄ μ€λͺ νλ€.
νλ‘μΈμ€ κ°μ λ³νμ±
- νλ‘μΈμ€ κ°μ λ³νμ±μμ μνΈ νλ ₯νλ κ²½μ°λ₯Ό λΉλκΈ°μ μ΄λΌκ³ νλ€.
- λΉλκΈ° λ³ν νλ‘μΈμ€λ μλ‘ μμμ 곡μ νλ©° μν₯μ λΌμΉ μ μλ€.
2. λκΈ°νμ μκ³ μμ
- νλ‘μΈμ€ λκΈ°νλ 2κ° μ΄μμ νλ‘μΈμ€μ μ²λ¦¬ μμλ₯Ό κ²°μ νλ κ²μ λ§νλ€.
- μκ³ μμμ΄λ, νλ‘μΈμ€κ° κ³΅μ© λ³μλ₯Ό μ½κ±°λ, ν μ΄λΈμ κ°±μ νκ±°λ, νμΌμ μ°λ λ±μ μμ μ νλ μ½λ μΈκ·Έλ¨ΌνΈλ₯Ό μλ―Ένλ€.
- μκ³ μμμ κ°λ νλ‘μΈμ€μ μΌλ°μ ꡬ쑰λ λ€μκ³Ό κ°λ€.
- μ§μ μμ : μκ³ μμμ μ§μ ν μ μλμ§ νμΈ
- ν΄μ μμ : μκ³ μμμμ μμ μ λ§μΉκ³ λ€λ₯Έ νλ‘μΈμ€μ μ§μ μ νμ©
- μλ₯ μμ : λλ¨Έμ§ μμ
- μκ³ μμμ λκΈ°ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μλ λ€μκ³Ό κ°μ μ‘°κ±΄μ΄ νμνλ€.
- μνΈλ°°μ : μλ‘ λ€λ₯Έ νλ‘μΈμ€κ° μκ³μμμμ λμμ μμ μ ν μ μλ€.
- μ§ν : μκ³μμμ μ§μ ν νλ‘μΈμ€λ₯Ό μ μ ν μ ννλ€. μ΄ μμ μ 무νν λ―Έλ£¨μ΄ μ§ μ μλ€.
- μ νλ λκΈ° : μ΄λ ν νλ‘μΈμ€κ° μκ³μμμ μμ²νλ©΄ λ€λ₯Έ νλ‘μΈμ€κ° μ§μ ν μ μλ νμλ₯Ό μ νν΄μΌ νλ€.
Test - and - Set
- μνΈλ°°μ μ νλμ¨μ΄μ ν΄κ²° λ°©λ²μ΄λ©°, λΆλ¦¬κ° λΆκ°λ₯ν λ¨μΌ λͺ λ Ήμ΄μ΄λ€. μ€μ¬μ TSλΌκ³ λ νλ€.
- λ©λͺ¨λ¦¬ λ΄μ νλμ λΉνΈλ₯Ό key λ‘ μ¬μ©νμ¬ busy μνλ₯Ό νννλ€.
- λ€λ₯Έ νλ‘μΈμ€κ° μκ³μμμ μ§μ νκΈ° μ μ, ν΄λΉ μμμ΄ μ κ±° μνμΈμ§ 체ν¬νκ³ μ¬μ©μ΄ λλ νλ‘μΈμ€λ key λΉνΈλ₯Ό 0μΌλ‘ 리μ ν΄μ€λ€.
- λͺ¨λ μ μ°¨λ μΈν°λ½νΈ λμ§ μκ² μμμ μΌλ‘ μνλλ€.
- TS λ©μ»€λμ¦μλ λκ°μ§ κ²°μ μ΄ μλ€.
- λ§μ νλ‘μΈμ€κ° λμμ μκ³μμμ λ€μ΄κ°κΈ°λ₯Ό μνλ©΄ ‘κΈ°μ’μνκ° λ°μνλ€. (μ°λ λκ° νμν μμμ ν λΉλ°μ§ λͺ»νκ³ κ³μ λκΈ°ν¨)
- λκΈ° νλ‘μΈμ€λ λΉ μμ°μ μ΄κ³ μμλ§ μλΉνλ busy wating μνμ μλ€.
μΈλ§ν¬μ΄(semaphore)
- TS κΈ°λ²λ³΄λ€ μ‘°κΈ λ μΌλ°νμ μ©μ΄νλλ‘ λ€μ΅μ€νΈλΌκ° μ μν μλ‘μ΄ λκΈ°ν λꡬμ΄λ€.
- κ²μ¬μ°μ°μΈ P(s) μ°μ°κ³Ό μ¦κ° μ°μ°μΈ V(s) μ°μ°μΌλ‘ λλμ΄ μ§λ€.
- P, V μ°μ°μ κ°κ° μμμ μ°μ°μΌλ‘ κ°μ£Όλλ€. (λμ€μ μΈν°λ½νΈ λμ§ μλλ€.)
3. νλ‘μΈμ€μ μνΈ νλ ₯
- λͺ κ°μ νλ‘μΈμ€κ° 곡ν΅μμ μ μννκΈ° μν΄ μλ‘ νλνλ κ²½μ°κ° μλ€.
- λ κ°μ§ μ λͺ ν μμ κ° μλλ° μμ°μμ μλΉμ, νλ κΈ°μ κΈ°λ‘κΈ° μμ μ΄λ€.
μμ°μμ μλΉμ λ¬Έμ
- κ°μ
- κ³ μ λ ν¬κΈ°λ₯Ό κ°μ§ λ²νΌλ₯Ό μ¬μ΄μ λκ³ λ²νΌκ° λΉμ΄ μλ€λ©΄ μλΉμκ° κΈ°λ€λ¦¬κ² λκ³ λ²νΌκ° κ°λ μ°¨κ² λλ©΄ μμ°μκ° κΈ°λ€λ¦¬κ² λλ€.
- μνΈλ°°μ
- ν μκ°μ ν νλ‘μΈμ€λ§ λ²νΌλ₯Ό μ¬μ©ν΄μΌ νλ€.
- λκΈ°ν
- μμ°μ΄ μ΄λ£¨μ΄μ ΈμΌ μλΉκ° μ΄λ£¨μ΄μ§λ©°, λ²νΌ μ©λ μ΄μμΌλ‘ μμ°νλ©΄ μλλ€.
- μμ°μ νλ‘μΈμ€ μμ¬μ½λ
repeat
...
nextpμ λ°μ΄ν° νλͺ©μ μμ°ν¨
...
P(empty);
P(mutex);
...
nextpλ₯Ό λ²νΌμ λ£μ
...
V(mutex)
V(full)
until false;
- μλΉμ νλ‘μΈμ€ μμ¬μ½λ
repeat
P(full);
P(mutex);
...
λ²νΌμμ λ°μ΄ν° νλͺ©μ κΊΌλ΄ nextcμ λ£μ
...
V(mutex);
V(empty);
...
nextxcμ μλ λ°μ΄ν° νλͺ© μλΉ
...
until false;
νλ κΈ°/κΈ°λ‘κΈ° λ¬Έμ
- κ°μ
- λ°μ΄ν° μ€λΈμ νΈμ λν΄ μ½κ³ μ νλ νλ‘μΈμ€λ₯Ό νλ κΈ°(reader), μ°κ³ μ νλ νλ‘μΈμ€λ₯Ό κΈ°λ‘κΈ° (writer) λΌκ³ νλ€. μ΄μ λν΄ λ³΅μμ νλ κΈ°κ° λμμ 곡μ κ°μ²΄μ μ κ·Ό νλ κ²μ λ¬Έμ κ° λμ§ μμ§λ§, νλμ κΈ°λ‘κΈ°μ λ€λ₯Έ νλ‘μΈμ€κ° λμμ 곡μ κ°μ²΄μ μ κ·Όνλ κ²μ λ°°νμ μΌλ‘ μ΄λ£¨μ΄μ ΈμΌ νλ€.
- μ 1νλ
κΈ° λ¬Έμ
- κΈ°λ‘κΈ°μ κΈ°μ μνλ₯Ό μ λ°ν μ μλ€.
- κΈ°λ‘κΈ°κ° κ³΅μ κ°μ²΄λ₯Ό μ¬μ©νλλ‘ νκ°λμ§ μλλ€.
- μ 2νλ
κΈ° λ¬Έμ
- νλ κΈ°μ κΈ°μ μνλ₯Ό μ λ°ν μ μλ€.
- κΈ°λ‘κΈ°κ° μ€λΉ λμλ€λ©΄ μ΅λν κΈ°λ‘μ κ°λ₯ν ν 빨리 μννλλ‘ νλ€.
4. νλ‘μΈμ€ κ°μ ν΅μ
곡μ κΈ°μ΅μ₯μΉ κΈ°λ²
μμ λ€λ£¬ μ νλ²νΌ λ¬Έμ μ κ°μ΄ 곡μ λ³μλ₯Ό μ΄μ©νμ¬ ν΅μ νλ κΈ°λ²μ΄λ€. ν΅μ κΈ°λ₯μ μ 곡νλ μ± μμ μμ© νλ‘κ·Έλλ¨Έμκ² μκ³ , μ΄μ체μ λ λ¨μν 곡μ λ³μλ§μ μ 곡νλ€.
λ©μμ§ μμ€ν κΈ°λ²
λ κ° μ΄μμ νλ‘μΈμ€κ° 곡μ λ³μμ μμ‘΄νμ§ μκ³ μ λ©μμ§λ₯Ό μ£Όκ³ λ°μ μ μλλ‘ ν΅μ λ§ν¬λ₯Ό μ€μΉνλ€. μλμ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λλ° μ΅μ ν λμ΄μκ³ , ν΅μ μ λν μ± μμ νλ‘μΈμ€μ μλ€.
- μ§μ ν΅μ
- ν΅μ μ μνλ λͺ¨λ νλ‘μΈμ€ μ μ¬μ΄μ ν΅μ λ§ν¬κ° μ€μ λμ΄μΌ νλ€.
- ν΅μ μ μν΄ μλμ μ μμ μμμΌ νλ€.
- νλμ λ§ν¬λ λ νλ‘μΈμ€ μ¬μ΄μλ§ μ°κ²°λλ€.
- λ§ν¬λ μλ°©ν₯μ΄λ€.
- κ°μ ν΅μ
- μ°νΈν¨ κ°μ²΄λ₯Ό ν΅ν΄ λ©μμ§λ₯Ό μ£Όκ±°λ λ°μ μ μλ€.
- μ‘μ μ/μμ μλ₯Ό λΆλ¦¬νλ―λ‘ ν΅μ μ μ μ°μ±μ΄ μ¬λΌκ°λ€.
- ν λ§ν¬λ λκ° μ΄μμ νλ‘μΈμ€λ€κ³Ό μ°κ΄λ μ μλ€.
- λ§ν¬μ μ©λ
- μ©λμ΄ μλ κ²½μ°
- λ§ν¬λ μ΄λ€ λ©μμ§λ κ°μ§ μ μμΌλ―λ‘ λ©μμ§λ₯Ό μμ ν λ κΉμ§ κΈ°λ€λ €μΌ νλ€.
- μ νλ μ©λ
- λ§ν¬λ μ ν κΈΈμ΄ nμ κ°μ§λ€. λ°λΌμ νκ° κ°λ μ°¨λ©΄ μ‘μ μλ λκΈ°κ° λ°μνλ€.
- 무μ ν μ©λ
- λ§ν¬μ νλ 무νν κΈΈμ΄λ₯Ό κ°μ§κ³ μμΌλ―λ‘ μ‘μ μλ κ²°μ½ λκΈ°κ° μλ€.
- μ©λμ΄ μλ κ²½μ°λ₯Ό κ°λ¦¬μΌ ‘λΉλ²νΌλ§ λ©μμ§ μμ€ν ’ μ΄λΌκ³ λ νλ€.
- μ©λμ΄ μ‘΄μ¬νλ κ²½μ° μ‘μ κ³Ό μμ μ΄ λΆλ¦¬λλ―λ‘ λΉ λκΈ°μ ν΅μ μ΄λΌκ³ λ νλ€.
- μμΈμ‘°κ±΄
- μ΄λ° λ©μμ§ μμ€ν μ λ³΄ν΅ λΆμ° νκ²½μμ ꡬμ±νλλ°, ν΅μ κ³Ό μ²λ¦¬ κ³Όμ μμ μ€λ₯κ° λ°μν κ°λ₯μ±μ΄ λ¨μΌ μμ€ν λ³΄λ€ ν¬λ€.
- μμΈλ₯Ό 미리 μ μμνμ¬ κ³ μ₯ νλ³΅μ΄ μΌμ΄λμΌ νλ€.
- μΌμ΄λ μ μλ μμΈ
- νλ‘μΈμ€ μ’
λ£
- μ΄λ―Έ μ’ λ£λ νλ‘μΈμ€λ‘μ λ©μμ§λ₯Ό 보λ΄κ±°λ, νλ‘μΈμ€λ‘λΆν° λ©μμ§λ₯Ό κΈ°λ€λ¦΄ μ μλ€. μ΄ κ²½μ° νλ‘μΈμ€ μ’ λ£ μ¬μ€μ μλ νλ‘μΈμ€μ μλ €μΌ νλ€.
- λ©μμ§ μμ€
- ν΅μ λ€νΈμν¬ λ΄μμ λ©μμ§κ° μμ€λ μ μλ€. 보νΈμ μΌλ‘ μκ° μ ν κΈ°λ²μ μ΄μ©ν΄ μ΄λ₯Ό νμ§νλ©°, μν©μ λ°λΌ λ©μμ§λ₯Ό μ¬ μ‘μ ν μ μλ€.
- λ©μμ§ νΌν©
- λ©μμ§κ° μ‘μ λμ€ λ³μ§λλ κ²½μ°λ₯Ό λ§νλ€. μ΄λ° ννμ μ€λ₯ νμ§λ₯Ό μν΄ κ²μ¬ ν©κ³(CheckSum)λ₯Ό μ΄μ©νλ€.
- νλ‘μΈμ€ μ’
λ£
'λ ΈνΈ > μ΄μ체μ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ΄μ체μ ] 6. λ©λͺ¨λ¦¬ κ΄λ¦¬ (0) | 2022.05.25 |
---|---|
[μ΄μ체μ ] 5. κ΅μ°© μν (0) | 2022.05.19 |
[μ΄μ체μ ] 3. μ€μΌμ€λ§ μκ³ λ¦¬μ¦ (0) | 2022.05.10 |
[μ΄μ체μ ] 2. νλ‘μΈμ€ κ°μ (0) | 2022.04.08 |
[μ΄μ체μ ] 1. μ΄μ체μ κ°μ (0) | 2022.04.08 |