Skip to content

Latest commit

 

History

History
40 lines (19 loc) · 1.81 KB

5_1_병행제어.md

File metadata and controls

40 lines (19 loc) · 1.81 KB

병행제어 - (1)

동기화의 문제

Race Condition(경쟁 상태)

  • 공유 자원에 대해 여러 프로세스가 동시에 접근할때, 결과값에 영향을 줄 수 있는 상태
  • 데이터의 최종 연산 결과는 그 데이터를 마지막에 다른 프로세스에 따라 달라짐
  • Race Condition을 막기 위해 Concurrent Process는 동기화되어야함
  1. Kernel 수행 중 인터럽트 발생 시
  • 커널 모드에서 데이터 조작하다가 인터럽트 발생해서 같은 데이터 조작하는 경우
  • 해결책 : 커널모드에서 작업 수행하는 동안에는 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하도록 함
  1. 프로세스가 시스템 콜해서 커널
  • A가 사용자모드에서 실행중이다가 시스템콜해서 커널모드로 변경됐는데 그때 인터럽트(Timer 인터럽트 등..) 발생
  • 해결책 : 커널모드에서 수행중일 때에는 CPU를 선점하지 않음. 사용자모드로 돌아갈 때 선점함.
  1. 멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근할때
  • 각각의 프로세서들이 시스템콜해서 OS의 데이터에 접근할 때 문제가 생김
  • 해결책 : 한번에 하나의 CPU만 커널에 들어갈수있게 하는 방법 / 커널의 공유 데이터에 접근할때마다 그 데이터를 lock/unlock하는 방법

Critical Section

  • 여러 프로세스가 공유 데이터를 동시에 사용하고자 하는 경우, 각 프로세스의 Code segment에는 공유 데이터를 접근하는 코드인 Critical section존재

  • 하나의 프로세스가 Critical Section에 있을때 다른 모든 프로세스는 Critical section에 들어갈수없어야함

  • ex) critical section 전에 예외처리를 해서 lock걸려있으면 기다리게 하는 등..