ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] Race Condition 경쟁상태란?
    OS 2021. 8. 15. 16:46

     

     

    (Race Condition) 경쟁상태란?


     

     

    Race Condition?


    Race Condition이란 두 개 이상의 cocurrent한 프로세스(혹은 스레드)들이 하나의 자원(리소스)에 접근하기 위해 경쟁하는 상태를 말합니다.

     

     

    Critical Section(임계영역)


     

     통장에 돈이 100만원 있습니다. 지난달에 친구에게 빌렸던 50만원을 갚으려고 이체를 하고 있었습니다. 계좌번호와 금액을 입력하고 송금 버튼을 눌렀습니다. 그런데, 오늘 마침 카드값 70만원이 빠져나가는 날입니다. 정말정말 우연히 저의 이체와 카드값 이체가 동시에 일어났습니다. 그런데 두 이체가 통장에 있는 잔액을 확인 했을 때 100만원으로 이체들이 모두 성공해 버렸습니다. 은행에 비상이 걸렸습니다! 이런 일이 계속 반복된다면 은행은 곧 파산하겠군요.😂

     

    이처럼 통장에 동시에 접근하게 되면 곤란한 문제가 생길 수 있습니다. 통장에 아무나 접근하지 못하게 보호를 해야 할 것 같습니다! 통장처럼 보호되어야 하는 부분 Critical Section(임계영역)이라고 합니다.

     

     

    Critical Section에 접근하려면 각 프로세스의 code segment에 공유 데이터에 접근하는 코드를 사용합니다.

     

     

    Race Condition 해결을 위한 충족 조건 3가지


    Mutual Exclusion (상호 배제)

    어떤 프로세스가 임계 영역을 수행 중이면 다른 모든 프로세스들은 그 임계 영역에 들어가지 못하게 막는 것이다.

     

    Progress(진행)

    임계 영역에 들어간 프로세스가 있지 않은 상태에서 임계 영역에 들어가려는 프로세스가 있으면 들어가게 해주어야 한다. 즉, 임계영역에 있는 프로세스 외에는 다른 프로세스가 임계 영역에 진입하는 것을 방해하면 안된다.

     

    Bounded Waiting(한정 대기)

    기아(starvation) 상태를 방지하기 위해 프로세스가 임계 영역에 들어가려고 요청한 후부터 다른 프로세스들이 임계 영역에 들어가는 횟수에 한계가 있어야 한다. 임계 영역에 한 번 들어갔다 나온 프로세스는 다음에 들어갈 떄 제한을 준다.

     

     

     

     

     

    Post


    •  

    References


     

     


    잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)

     

     

     

    댓글