Gi-Log

동기화 문제 본문

카테고리 없음

동기화 문제

돌잔 2021. 8. 23. 14:58

동기화

경쟁 상황(Race Condition)을 막기 위해 공유 자원으로의 복수 프로세스의 접근을 순차적으로 처리될 수 있도록 하는 것

경쟁 상황(Race Condition)

공유 자원에 2개 이상의 프로세스가 동시에 접근하여 수정, 갱신 등을 진행하려고 할 때 프로세스의 접근 순서에 따라서 그 결과가 달라지는 상황

임계 영역(Critical Section)

  • 2개 이상의 프로세스가 공유 자원에 동시에 접근하는 작업을 실행하는 (코드)여역
  • 하나의 프로세스가 접근 중일 때는 다른 프로세스가 진입하지 못하게 보장해주어야 하는 영역

임계 영역 문제

2개 이상의 프로세스가 CS에 동시에 접근할 때 발생하는 동기화 문제

문제 해결을 위한 세가지 조건

  • 상호 배제
    • 임계 영역 내에 어떤 프로세스 P1이 존재한다면 다른 프로세스들은 임계 영역에 진입할 수 없어야한다.
    • 자명하지만 상호 배제로 인해 Deadlock과 Starvation 문제 발생 야기
  • 진행
    • 임계 영역에 프로세스가 없고, 진입하고자 하는 프로세스가 여러 개 있다면 어떤 프로세스가 진입할 지 결정해주어야 한다.
  • 한정 대기(Bounded Waiting)
    • 어떤 프로세스 P1이 Entry Section에서 진입 요청을 했다면, 대기하는 동안에 임계 영역에 진입할 수 있는 프로세스들의 수를 제한하여 무한정 대기하지 않도록 한다.
    • 다른 프로세스의 기아를 방지하기 위해서 다음번 임계 영역으로 진입에는 제한이 있어야 한다.
    • (위 두 조건은 관점의 차이이며 같은 설명으로 보임)
Comments