[Computer Science][Operating System] Race Condition에 대한 이해 🏁

김상욱·2024년 8월 12일
post-thumbnail

공유 자원에 대해 여러 프로세스가 동시에 접근할 때 발생하는 상태인 Race Condition은 결과값에 영향을 줄 수 있습니다. 이로 인해 동시 접근 시 자료의 일관성을 해치는 결과가 나타날 수 있습니다.

Race Condition이 발생하는 경우 🔍

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

    • 문제점: 커널 모드(운영체제가 하드웨어 자원에 직접 접근할 수 있는 특권 모드)에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우, 일관성이 깨질 수 있습니다.
    • 해결법: 커널 모드에서 작업을 수행하는 동안 인터럽트를 비활성화하여 CPU 제어권을 가져가지 못하도록 합니다.
  2. 프로세스가 'System Call'을 하여 커널 모드로 진입할 때 문맥 교환 발생

    • 문제점: 프로세서1이 커널 모드에서 데이터를 조작하는 도중, 시간이 초과하여 CPU 제어권이 프로세스2로 넘어가면 같은 데이터를 조작하게 됩니다. 이 경우 프로세스1의 작업이 완료되지 않아 데이터의 일관성이 깨지거나 프로세스2의 작업이 반영되지 않을 수 있습니다.
    • 해결법: 프로세스가 커널 모드에서 작업을 하는 경우, 시간이 초과되더라도 CPU 제어권이 다른 프로세스에게 넘어가지 않도록 설정합니다.
  3. 멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근할 때

    • 문제점: 멀티 프로세서 환경에서 두 개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우, 예기치 않은 결과가 발생할 수 있습니다.
    • 해결법: 커널 내부에 있는 각 공유 데이터에 접근할 때마다, 그 데이터에 대한 lock/unlock을 통해 동시 접근을 방지합니다.

이와 같은 방법들을 통해 Race Condition을 예방하고, 시스템의 안정성을 높일 수 있습니다. 이러한 문제를 이해하고 적절한 해결책을 적용하는 것은 안정적인 소프트웨어 개발에 필수적입니다.


[1] 네이버 블로그 - Race Condition / ① - 네이버 블로그 - NAVER (https://m.blog.naver.com/365blackstar/223367838123)
[2] velog - [운영체제]Race Condition과 DeadLock (feat.뮤텍스, ... (https://velog.io/@tjdtn0219/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9CRace-Condition%EA%B3%BC-DeadLock-feat.%EB%AE%A4%ED%85%8D%EC%8A%A4-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4)
[3] 애송이 개발 블로그 - 경쟁 상태(Race Condition) (https://parkmuhyeun.github.io/etc/operating%20system/2022-09-08-Race-Condition/)
[4] 티스토리 - [운영체제] 경쟁 상태(Race Condition) 란 - DailyStudyNote (https://daily-progress.tistory.com/65)

0개의 댓글