Process Synchroization 문제

정하윤·2022년 8월 26일
0
post-custom-banner


Queueing models

  • 확률 분포로 주어지는 arriva rate와 service rate 등을 통해 각종 performance index 값을 계산

Implementation(구현) & Measurement(성능 측정)

  • 실제 시스템에 알고리즘을 구현하여 실제 작업에 대해서 성능을 측정 비교

Simulation(모의 실험)

  • 알고리즘을 모의 프로그램으로 작성후 trace를 입력으로 하여 결과 비교

Process Synchroization

OS에서 race condition은 언제 발생하는가?

  1. kernel 수행 중 인터럽트 발생시

  2. Process가 system call을 하여 kernel mode로 수행 중인데 context switch가 일어나는 경우

  3. Multiprocessor에서 shared memory 내의 kernel data

위의 경우 Kernel 에서 count++ 작업의 처리가 끝날때까지 interrupt 가 들어와도 처리하지않고 count++의 작업 처리가 끝난후에 Count--을 해준다. 그렇지 않게 되면 interrupt 처리 루틴으로 넘어가서 count-- 작업을 하고 다시 Kernel 로 돌아와서 count++ 작업을 해준다 이렇게되면 결과적으로 1이감소시킨건 저장이 안

되고 1이 증가한 것 만 저장이 된다.


  1. 해결책: 커널 모드에서 수행 중일 때는 CPU를 preempt하지 않음

    커널 모드에서 사용자 모드로 돌아갈 때 preempt

어떤 CPU가 마지막으로 count를 store했는가? →race condition

multiprocessor 의 경우 interrupt enable/disable 로 해결되지 않음

방법1) 한번에 하나의 CPU 만이 커널에 들어갈 수 있게 하는 방법

방법2) 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대한 lock/ unlock 을 하는 방법

Process Synchroization 문제

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

Race condition

  • 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황
  • 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐

-race condition을 막기 위해서는 concurrent process는 동기화 되어야 한다.

post-custom-banner

0개의 댓글