DevGang

[OS-07] 상호 배제 기법&동기화 기법 본문

정보처리/OS

[OS-07] 상호 배제 기법&동기화 기법

별천랑 2021. 2. 7. 17:03

1. 상호 배제 기법(Mutual Exclusion)

  • 공유자원을 어느 시점에서 단지 한 개의 프로세스만이 사용할 수 있도록 하며, 다른 프로세스가 공유자원에 대하여 접근하지 못하게 제어하는 기법
  • 여러 프로세스가 동시에 공유 자원을 사용할 때 각 프로세스가 번갈아 가며 공유 자원을 사용하도록 하는 것으로 임계 구역을 유지하는 기법임

- 데커(Dekker) 알고리즘

  • 교착상태가 발생하지 않음을 보장
  • 공유 데이터에 대한 처리에 있어서 상호 배제를 보장
  • 별도의 특수 명령어 없이 순수하게 소프트웨어로 해결

2. 동기화 기법(Synchronization) 

  • 두 개 이상의 프로세스를 한 시점에서는 동시에 처리할 수 없으므로 각 프로세스에 대한 처리 순서를 결정하는 것으로 상호 배제의 한 형태
  • 동기화 구현 방법에는 세마포어와 모니터 기법이 있음

- 세마포어(Semaphore)

  • E. J. Dijkstra 가 제안하였으며, P와 V라는 2개의 연산에 의해서 동기화를 유지하며 상호 배제의 원리를 보장
  • S는 P와 V 연산만으로 만 접근 가능한 세마포어 변수로, 공유 자원의 개수를 나타내며 0과 1 혹은 0과 양의 값을 가질 수 있음

- 모니터(Monitor)

  • 모니터 내의 자원을 공유하려면 프로세스는 반드시 모니터의 진입부를 호출해야 함
  • 모니터 외부의 프로세스는 모니터 내부의 데이터를 직접 액세스 할 수 없음
  • 모니터의 경계에서 상호 배제가 시행됨
  • 모니터에서는 한순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있음
  • 모니터에서는 Wait와 Signal 연산이 사용
  • 특정의 공유자원을 할당하는데 필요한 데이터 및 프로시저를 포함하는 병행성 구조임

'정보처리 > OS' 카테고리의 다른 글

[OS-09] 프로세스 스케줄링  (0) 2021.02.07
[OS-08] 교착상태  (0) 2021.02.07
[OS-06] 병행 프로세스&임계구역  (0) 2021.02.07
[OS-05] 스레드&문맥 교환  (0) 2021.02.07
[OS-04] 인터럽트(Interrupt)  (0) 2021.02.07
Comments