[운영체제] 세마포어(Semaphore)

이나영·2022년 6월 5일
0

운영체제

목록 보기
1/1
post-thumbnail

세마포어란?

  • 상호 배제를 위한 알고리즘으로, 상호 배제의 원리를 보장하는 데 사용
  • 여러 개의 프로세스가 동시에 그 값을 수정하거나 접근하지 못함
  • 연산 처리 중에 인터럽트 되어서는 안됨
  • E.J.Dijkstra가 제안한 방법
  • 일반적으로 실수형 변수 사용 X

세마포어 알고리즘

  • 프로세스 사이의 동기를 유지
  • P 연산과 V 연산의 구현 방법에 따라 바쁜 대기(busy waiting)을 해결할 수 있다.

예시 (C언어)

if (S == 0) Wait(S); else S = S-1;

P 연산 (Wait 연산)

  • 임계 영역을 사용하려는 프로세스들의 진입 여부를 결정하는 조작, 즉 Wait 동작

V 연산 (Signal 연산)

  • 큐에 대기 중인 프로세스를 깨우는 신호 (Wake-up), 즉 Signal 동작

0개의 댓글