[운영체제] Thread 동기화 문제

woonchoi·2022년 2월 28일
0

42Cursus

목록 보기
5/9

스레드 동기화

프로세스에서 스레드를 나누어 병렬처리를 하고 결과값을 출력해야 한다면?

  • 최종 결과값을 알기 위해서는 모든 스레드가 종료되어야 한다.

    • 이를 제어하기 위해 join과 같은 스레드 함수를 이용하여 모든 스레드의 종료상태를 받았을 경우 결과값을 출력하도록 만든다.
  • 만약 스레드 하나가 작업을 수행하는 시간이 길어진다면?

    • 스레드 1이 작업 도중에 Context Switching이 발생하여 스레드 2가 실행된다면 결과값에 각 스레드의 연산값이 누적되기 전에, 또는 갱신되기 전에 다음 스레드가 실행되어 문제가 발생할 수 있다.
    • 이를 해결하기 위한 기법이 바로 Mutual exclusion (Mutex)이다.

만약 스레드 1이 임계영역에서 작업을 수행하고 있다고 가정해보자.

임계영역에서 스레드 1의 작업이 끝나지 않은 시점에 스레드 2로 Context Switching 이 발생하고, 스레드 2가 동일한 임계영역에서 작업을 한다면 예상하지 못하는 결과가 발생할 수 있다.

따라서 만약 스레드 1의 작업이 끝나지 않았다면 스레드 2는 임계영역에 접근하기 전에 대기하도록 만든다면 이러한 문제를 해결할 수 있다.

profile
개발공부

0개의 댓글