Computer Science/운영체제

[OS] 운영체제 6 Process Synchronization & Race Condition

minjiwoo 2023. 5. 28. 20:09
728x90

Process Synchronization 

컴퓨터 시스템 내에서 데이터가 접근되는 패턴이 있다. 

위의 그림처럼 데이터가 저장되는 공간에서 연산할 데이터만 로드시켜서 CPU에서 연산을 한다. 연산 결과는 다시 저장공간에 저장된다. 

  • 공유 데이터의 동시 접근이 일어나면 데이터의 불일치 문제가 발생할 수 있다. 
  • 일관성 유지를 위해서 협력 프로세스 간의 실행 순서를 정해주는 매커니즘이 필요

 

Race Condition

  • 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황 
  • 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐 
  • race condition을 막기 위해서 concurrent process는 동기화 되어야 한다. 

 

Race Condition 이 발생하는 상황 

1. Kernel Code 수행 중 인터럽트가 발생하는 경우
- 인터럽트 작업을 disable시킨 후, kernel 작업이 다 끝나면 처리한다. 

2. Process가 system call 을 하여 kernel mode로 수행중인데, context switch가 일어나는 경우 
- 커널 모드에서 수행 중일 때는 CPU를 빼앗지 않는다. 대신 커널모드에서 사용자 모드로 돌아갈 때 CPU를 preempt 한다. 

3. Multiprocessor에서 shared memory 내에 kernel data에 여러 CPU가 접근하는 경우 
- 한번에 하나의 CPU만이 커널에 들어갈 수 있게 함 
- 커널 내부에 있는 각 공유 데이터에 접근할 때마다 lock / unlock 을 하는 방법 

Critical Section Problem 

  • N개의 프로세스가 공유 데이터를 동시에 사용하기 원하는 경우 
  • 각 프로세스의 code segment에는 공유 데이터를 접근하는 코드인 critical section이 존재 
  • 하나의 process가 critical section에 있을 때 다른 모든 processs는 critical section에 들어갈 수 없어야 한다. 

 

728x90