μ΅λͺ μ± λ³΄μ₯μ μν΄ νμ 1,2,3μΌλ‘ νκΈ°νμ΅λλ€.
μ λ νμ3μ λλ€.
β task 1 & 2
- ν¬μΈν° μ¬μ©μ μ’ λ μ΅μν΄ μ‘κ³ , ν¨μκ° μ¬μ©λλ λ°©λ²μ reference κ²μμ ν΅ν΄μ μ°Ύμλ΄
- pintosλ₯Ό μμνλ©΄μ busy waitingμ λ°©μμΌλ‘ context switchingμ΄ μ΄λ£¨μ΄μ§κ³ μμλ€λ κ²μ λ§ν©λλ€.
κ·Έλ λ€λ©΄ context switchingμ΄λ 무μμΈκ°μ?
context swichingμ νμ¬ μ€ν μ€μΈ νλ‘μΈμ€μμ λ€λ₯Έ νλ‘μΈμ€λ‘ cpuμ μ΄λ₯Ό μ ννλ νλ‘μΈμ€λ₯Ό μλ―Έν©λλ€.
busy waitingμ νΉμ μ‘°κ±΄μ΄ μΆ©μ‘±λ λκΉμ§ νλ‘μΈμ€λ μ€λ λκ° λκΈ°νλ λ°©μμ λ§ν©λλ€.
μ¬κΈ°μ λκΈ°νλ€λ ννμ μ€λ λκ° μ€νμ λ©μΆκ³ μνλ₯Ό νμΈνλ κ²μ΄ μλλΌ, cpuκ° μ€λ λμ λͺ λ Ήμ κ³μ μννλ©΄μ ν΄λΉ μ‘°κ±΄μ΄ μΆ©μ‘±λλ μ§λ₯Ό κ³μ 체ν¬νκ² λλ€λ μλ―Έμ λλ€.
- CμΈμ΄μ deadlockμνλ₯Ό ν΄κ²°νκΈ° μν λ°©λ²λ€λ‘ mutex, semaphoreλ±μ κ°λ μ μ νκ² λμκ³ , ν¨μλ€μ μΆμν(?)νλ λ°©λ²μ μ΅ν κ² κ°μ΅λλ€. ν¨μκ°
μμμ μΌλ‘ (atomically)
μλλλ€λ κ±°μ λν κ°λ .
/threads/synch.c
μ nested_donation(struct lock *lock, int priority)
β‘οΈlock aquire & lock releaseν΄μ€ λ nested priority donate ν΄μ£ΌκΈ° μν