프로세스 동기화

2021. 5. 29. 17:19Study/CS

  • Critical Section
    • 동일한 자원을 동시에 접근하는 작업을 실행하는 코드영역
    • 해결법
      • Mutual Exclusion(상호 배제)
        • P1이 CS에서 실행중이라면 다른 프로세스들은 해당 CS에서 실행될 수 없다.
      • Progress(진행)
        • CS에서 실행중인 프로세스가 존재하지 않고, 별도의 동작인 없는 프로세스만 CS진입 후보로서 참여될 수 있다.
      • Bounded Waiting(한정된 대기)
        • P1이 CS에 진입 신청 후 부터 받아들여질 때까지, 다른 프로세스들이 CS에 진입하는 횟수에 제한이 있어야한다.
    • 해결책
      • Lock
        • 하드웨어 기반 해결책
        • 임계영역에 진입하는 프로세스는 Lock을 획득하고 빠져나올때 Lock을 방출하여 동시진입을 막는다.
        • 다중처리기 환경에서는 시간적인 효율성 측면에서 적용할 수 없다.
      • Semaphore
        • 소프트웨어 기반 해결책
        • Counting Semaphore
          • 가용한 개수를 가진 자원에 대한 접근 제어용으로 사용된다.
          • Semaphore는 그 가용한 개수로 초기화 된다.
          • 자원을 사용하면 감소 , 방출하면 증가가된다.
        • Binary Semaphore
          • Mutex라 불린다.(MUTual EXclusion)
          • 0과 1 사이의 값만 가능하며, 다중 프로세스 사이의 임계영역 문제를 해결하기 위해 사용된다.
          • Busy Waiting
            • Lock을 얻을때까지 의미없이 접근을 시도하여 시간이 낭비된다.
          • DeadLock

'Study > CS' 카테고리의 다른 글

Stack / Queue  (0) 2021.05.30
Array vs List  (0) 2021.05.30
Scheduler / Scheduling  (0) 2021.05.29
DeadLock  (0) 2021.05.28
Transaction  (0) 2021.05.28