본문으로 바로가기

운영체제(8) -Semaphores ,Monitor

category CS/운영체제 2023. 10. 5. 19:25
반응형

Semaphores

정수 값을 가지며, 두 가지 연산인 P, V 연산에 의해서만 접근 가능한, 다중 프로그래밍 환경에서 공유 자원에 대한 접근을 제어하기 위한 동기화 도구 중 하나이다.

 

Busy wait 방식

 

P(S) : while ( S<= 0) do no-op;

           S--; // if positive, decrement & enter. otherwise, wait until positive ( busy -wait)

V(S) : S++; 

 

Block and Wake up 방식

Semahpore를 다음과 같이 정의

 

typedef struct

{ int value;    /* semapohre */

  struct process *L ; /*process wait queue */

} semapohre;

 

Block과 wakeup을 다음과 같이 가정

  1. Block : 커널은 block을 호출한 프로세스를 suspend 시킴, 이 프로세스의 PCB를 Semaphore에 대한 wait queue에 넣넣음
  2. Wakeup(P) : block된 프로세스 P를 wakeup 시킴, 이 프로세스의 PCB를 ready queue로 옮김

P(S) : S.value -- ; /* prepare to enter */

           if( S.value < 0 ) /* negative, I can't enter */

           {   //add this process to S. L;

              block();

            }

V(S) : S.value ++ ;

           if(S.value<=0)

           {    //remove a process P from S.L;

                wakeup(P);

            }

    

 

Busy- wait vs Block / wakeup

  • Critical Section의 길이가 긴 경우 Block / wakeup이 적당
  • 매우 짧으면 Block / wakeup 오버헤드가 Busy-wait 오버헤드보다 더 커질 수 있음
  • 보통의 경우엔 Block / wakeup 방식이 더 효율적이다.

 

세마포어에는 두 종류가 있다

  1. Counting Semaphore
    • 도메인이 0 이상인 임의의 정수값
    • 주로 resource counting에 사용
  2. Binary Semaphore ( = mutex)
    • 0 또는 1 값만 가질 수 있는 Semaphore
    • 주로 Mutual Exclusion ( lock / unlock)에 사용

Semaphore의 단점, 문제점

  1. 코딩하기 힘들다
  2. 정확성 ( correctness ) 의 입증이 어렵다
  3. 자발적 협력 ( voluntary cooperation )이 필요하다
  4. 한번의 실수가 모든 시스템에 치명적 영향

Monitor

  • 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high - level synchronization construct
  • 모니터 내에서는 한번에 하나의 프로세스만이 활동가능
  • 프로그래머가 동기화 제약조건을 명시적으로 코딩할 필요없음
  • Lock을 거는 코드가 없다

이 포스팅은 이화여대에서 무료로제공하는 반효경님의 운영체제강의를 수강하며 정리한 내용입니다.

필자가 잘 이해하지 못해서 잘못된 내용이 있을 수 있으므로 주의바라며, 발견되면 알려주시면 감사하겠습니다.

http://www.kocw.net/home/search/kemView.do?kemId=1046323 

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

 

 

반응형