ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PintOS - Busy Waiting 바쁜대기 - 1
    운영체제 2020. 1. 22. 15:27

    세마포의 정의

     

    P(S) : wait(S){

    while S<=0;       //바쁜대기,

       S--;

    }

     

    V(S) : signal(S) {

       S++;               //다른 프로세스의 접근 허용

    }

     

     

    바쁜대기란?

    프로세스 A와 B가 있다고 가정하자, A프로세스는 임계영역에서 실행중이고 B는 대기상태이다.

    이때, B프로세스는 A가 작업이 완료될 때 까지 계속 일어났다 깨어나기를 반복하는 상황을 말한다.

     

    바쁜대기의 장점: 공유자원을 사용하는 프로세스들의 자원사용시간이 짧으면 효율적일 수 있다.

    ''              단점: 반복문을 통한 자원낭비(효율)이 떨어진다.

     

     

     

     

     

     

     

    이번 Pintos의 1번 프로젝트는 Threads를 다루는 프로젝트로 /pintos/src/devices/timers.c 에서의

    timer_sleep함수는 Busy Waiting 방식으로 되어있다.

     

     

    /* Sleeps for approximately TICKS timer ticks.  Interrupts must
       be turned on. */
    void
    timer_sleep (int64_t ticks)
    {
      int64_t start = timer_ticks ();     //현재 시간을 불러온다 

      ASSERT (intr_get_level () == INTR_ON);      //인터럽드가 가능하도록 설정한다.

      while (timer_elapsed (start) < ticks)          // ticks(설정한 시간)만큼 지나지 않았으면 CPU를 양보한다.
        thread_yield ();
    }

     

     

    '운영체제' 카테고리의 다른 글

    PintOS - Busy Waiting 바쁜대기 - 2  (2) 2020.01.22
Designed by Tistory.