동기화 때문에 발생할 수 있는 문제

라마·2023년 7월 25일

운영체제

목록 보기
22/32

※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.

우선순위 역전 ( Priority Inversion )

쓰레드의 동기화로 인해 높은 순위의 쓰레드가 낮은 순위의 쓰레드보다 늦게 스케줄링 되는 현상을 우선순위 역전 이라고 합니다.

이 경우 실시간 시스템에서 큰 문제가 되는데, 우선순위가 높은 쓰레드가 늦게 실행되면 심각한 문제가 발생할 수 있기 때문입니다.

  • 일반적으로 높은 우선순위의 작업이 중요한 경우가 많음

예시

  • 가정
    • T1 과 T3 가 공유 변수 사용 ( 세마포어로 동기화 )
    • T2 는 공유 변수 사용 X

해결책

  • 우선순위 올림 ( Priority Ceiling )
    • 쓰레드가 공유 자원을 소유하게 될 때, 쓰레드의 우선순위를 미리 정해진 높은 우선순위로 일시적으로 올림
    • 선점되지 않고 빨리 실행되도록 유도
  • 우선순위 상속 ( Priority Inheritance )
    • 낮은 순위의 쓰레드가 공유 자원을 가지고 있는 동안 높은 순위의 쓰레드가 공유자원 요청 → 공유 자원을 가진 쓰레드의 우선순위를 요청한 쓰레드보다 높게 설정해서 빨리 실행시킴

위의 예제를 예로 들면, 우선순위가 가장 높은 T3 가 우선적으로 실행되도록 하는 방법들이라고 볼 수 있습니다.

0개의 댓글