It is just my opinion, so don't you attack me. please!
But if this posting has some incorrect informations, you comment about that
Please!!
κ²°μ μ±
Β· νλ‘μΈμ€λ€μ΄ μμ°¨μ μΌλ‘ μ€ν λλ κ²μ΄ μ΄μΌκΈ°ν©λλ€. μ¦ λΉκ²°μ μ±μ λλ€λ©΄ λκΈ°νλ₯Ό ν΅ν΄ λ°μ΄ν°μ 무결μ±μ μ μ§ν΄μΌνκ² μ£ .
Β· λΉκ°μ κ΄κ³μ μ μ
1.νλ‘μΈμ€ μμ€ν
μμ ν νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€λ₯Ό μ νν λ μ΄λ€μ΄ μλ‘ λ
립μ
2.ν νλ‘μΈμ€μ μΆλ ₯ μ₯μκ° λ€λ₯Έ νλ‘μΈμ€μ μ
λ ₯ μ₯μλ μΆλ ₯ μ₯μκ° μλ λ, μ΄ νλ‘μΈμ€λ€μ λΉκ°μ κ΄κ³μ μλ€κ³ μ μν¨.
λͺ¨λ μμ νλ‘μΈμ€κ° λΉκ°μ β μμ€ν
μ λΉκ°μ <μμ€ν
μμ λΉκ°μμ κ²°μ μ±κ³Ό νμ μΆ©λΆ μ‘°κ±΄>
λν 곡μ λ³μκ°μ κ°μμ΄ μμ΄μΌ κ²°μ μ±μ λ§μ‘±ν©λλ€.
Critical section(μκ³ μμ)
Β· λ κ° μ΄μμ νλ‘μΈμ€κ° λμμ μ¬μ©ν μ μλ μμ(μκ³μμ(Critical Resource))μ λν΄ μ κ·Όνκ³ μ€ννλ νλ‘κ·Έλ¨λ΄μ μ½λ λΆλΆμ΄λ€. νλ‘μΈμ€κ° 곡μ μλ£λ₯Ό λ³κ²½νλ μμμ΄κ³ , νλμ νλ‘μΈμ€λ§ 곡μ λ°μ΄ν°μ μ κ·Όνκ³ λλ¨Έμ§ νλ‘μΈμ€λ€μ 곡μ λ°μ΄ν°μ μ κ·Όν νμκ° μλλΌλ κΈ°λ€λ €μΌ ν©λλ€.
μκ³κ΅¬μμ κ°λ₯ν ν 빨리 μνλμ΄μΌλ§ νλ©°, νλ‘μΈμ€κ° μκ³κ΅¬μμ λ€μ΄κ° ν νλ‘μΈμ€κ° λΈλ‘ μνλ‘ λμ΄μλ μ λ©λλ€.
Β· Critical sectionμ λν μꡬμ¬ν 3κ°μ§
1.μνΈ λ°°μ (λ€λ₯Έ μ΄λ€ νλ‘μΈμ€λ C.Sλ₯Ό μ€νν μ μλ€.)
2.μ§ν(λΉμ΄μλ C.Sμ λ Pκ° λμ μ κ·Όνλ€λ©΄ μ μ ν κ²°μ κΈ°λ²(pipe)μ΄ μμ΄μΌ ν¨.)
3.μ νλ λκΈ° (μ§μ
μμ² νλΆν° μλ½κΉμ§ μ¬μ΄μ λ€λ₯Έ Pκ° C.Sμ μ€νν μ μλ νμμ μ νμ΄ μμ΄μΌν¨.)
μνΈ λ°°μ μ ꡬν
function mutex() {
var turn;
function p0() {
while(true) {
while(turn == 1);
criticalSection();
turn = 1;
}
}
function p1() {
while(true) {
while(turn == 0);
criticalSection();
turn = 0;
}
}
turn = 0;
p0();
p1();
}
function mutex(lock) {
lock = false;
}
function enterMutex(lock) {
while(lock);
lock = true;
}
function mutex(lock) {
lock = false;
}
function enterMutex(lock) {
lock = true;
while(lock);
}
function enterMutex(lock) {
flag[i] = 1;
turn = j; //1
while(flag[j] == 1
&& turn == j);//3
}
function enterMutex(lock) {
flag[j] = 1;
turn = i; //2
while(flag[i] == 1
&& turn == i);//4
}
Β· 1μ΄ 2λ³΄λ€ λ¨Όμ μνλμμ κ²½μ° 3κ³Ό 4μ whileλ¬Έ μ€ μ΄λκ²μ΄ κ±Έκ΅ λ¨Όμ μ μΌνκ² λΉ μ Έλκ°κΉμ? 3
μ΄μ λ 4κ° 3λ³΄λ€ λ¨Όμ μνλμμ΄λ, κ²°κ΅ λ¬Έλ§₯ κ΅νμ μν΄ μΈμ κ°λ 3μ΄ μνλμ΄ λ€μ΄κ°
Β· μ¦, λ¨Όμ μ보ν μ¬λμ΄ λ€μ΄κ°κ² λμ΄μλ ꡬ쑰μ
λλ€.