경쟁 상태(Race Condition)

June·2022년 2월 20일
0
post-thumbnail

경쟁 상태(Race Condition)이란?

  • 프로세스가 어떤 순서로 데이터에 접근하냐에 따라 결과값이 달라질 수 있는 상황
  • 둘 이상의 입력이나 조작이 동시에 일어나서 의도치 않은 결과를 가져오는 경우
    (경쟁 상태도 교착상태의 종류 중에 하나이다.)

경쟁상태(Race Condition)이 발생하는 경우

  • 커널 작업을 수행하는 중에 인터럽트 발생

    • 문제점 : 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우
    • 해결법 : 커널모드에서 작업을 수행하는 동안, 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하도록 한다.
  • 프로세스가 'System Call'을 하여 커널 모드로 진입하여 작업을 수행하는 도중 문맥 교환이 발생할 때

    • 문제점 : 프로세스1이 커널모드에서 데이터를 조작하는 도중, 시간이 초과되어 CPU 제어권이 프로세스2로 넘어가 같은 데이터를 조작하는 경우 ( 프로세스2가 작업에 반영되지 않음 )
    • 해결법 : 프로세스가 커널모드에서 작업을 하는 경우 시간이 초과되어도 CPU 제어권이 다른 프로세스에게 넘어가지 않도록 함
  • 멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근할 때

    • 문제점 : 멀티 프로세서 환경에서 2개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우
    • 해결법 : 커널 내부에 있는 각 공유 데이터에 접근할 때마다, 그 데이터에 대한 lock/unlock을 하는 방법

출처

  1. https://jungeun960.tistory.com/118
  2. https://gyoogle.dev/blog/computer-science/operating-system/Race%20Condition.html
profile
회사와 “함께” 성장하는 개발자

0개의 댓글