[OS] Race Condition(경쟁 상태)

윤정민·2023년 9월 28일
0

OperationSystem

목록 보기
11/16

1. Race Condition

  • 공유 자원에 대해 여러 프로세스가 동시에 접근을 시도할 때, 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태
  • 자료의 일관성을 해치는 결과가 나타날 수 있음

2. Race Condition이 발생하는 경우

  • 커널 작업을 수행 중 인터럽트 발생
    • 문제점: 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작
    • 해결법: 커널모드에서 작업을 수행하는 동안, 인터럽트를 disable시켜 CPU제어권을 가져가지 못하도록 설정
  • 프로세스가 System Call을 하여 커널 모드로 진입하여 작업을 수행하는 도중 문맥 교환이 발생
    • 문제점: 프로세스1이 커널모드로 데이터를 조작하는 중, 시간이 초과되어 CPU제어권이 프로세스2로 넘어가 같은 데이터를 조작하는 경우, 프로세스2 실행시 프로세스1의 작업이 반영되지 않음
    • 해결법: 프로세스가 커널모드에서 작업하는 경우 시간이 초과되어도 CPU제어권이 다른 프로세스에게 넘어가지 않도록 설정
  • 멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근
    • 문제점: 멀티 프로세서 환경에서 2개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우
    • 해결법: 커널 내부에 있는 각 공유 데이터에 접근할 때마다, 그 데이터에 대한 lock/unlock을 설정
profile
그냥 하자

0개의 댓글