프로세스 동기화

공덕이형·2023년 12월 18일
0

CS

목록 보기
6/17

Critical Section

멀티 스레딩에 문제점에서도 나오듯, 동일한 자원을 동시에 접근하는 작업을 실행하는 코드 영역을 Critical Section (임계영역)이라 칭한다.

Critical Section Problem(임계영역 문제)

프로세스들이 Critical Section을 함께 사용할 수 있는 프로토콜을 설계하려는 것

Requirements (해결을 위한 선제조건)

  • Mutual Exclusion(상호배제)
    프로세스 P1이 Critical Section 에서 실행중이라면, 다른 모든 프로세스들은 그들의 critical section에 들어가면 안 된다.

  • Progress(진행)
    아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세스가 있으면 critical section에 들어가게 해줘야 한다.

  • Bounded Waiting(한정된 진행)
    프로세스가 critical section에 들어가려고 요청한 후부터 그 요청이 허용될 때 까지 다른 프로세스들이 critical section에 들어가는 횟수에 한계가 있어야 한다.

해결책

  • Mutex Lock

    • 동시에 공유 자원에 접근하는 것을 막기 위해 Critical Section에 진입하는 프로세스는 Lock을 획득하고 Critical Section을 빠져나올 때, Lock을 방출함으로써 동시에 접근이 되지 않도록 한다.
  • Semaphores

    • 소프트웨어 상에서 Critical Section 문제를 해결하기 위한 동기화 도구
    • 종류
      • 카운팅 세마포
        도메인이 0 이상인 임의의 정수값
        가용한 개수를 가진 자원에 대한 접근 제어용, 세마포어는 그 가용한 개수로 초기화됨. 자원을 사용하면 세마포어가 감소, 방출하면 증가됨
      • 이진 세마포
        MUTEX라고도 부르며, 0과 1사이의 값만 가능. 다중 프로세스 사이의 Critical Secion 문제를 해결하기 위해 사용
    • 단점
      • Busy Waiting
        Spin Lock이라고 불리는 Semaphore 초기에는 Critical Section에 진입해야하는 프로세스는 진입 코드를 계속 반복 실행해야 해서 CPU 자원을 낭비했음. (바쁜 대기)
        이를 방지하기 위해 Semaphore에서 Critical Section에 진입을 시도했지만 실패할 경우 해당 프로세스를 Block 시킨 후 Critical Section에서 자리가 나면 다시 wake up 하는 방식을 사용한다.

DeadLock

일련의 프로세스들이 서로가 가진 자원을 기다리며 Block된 상태

발생조건

  • Mutual Exclusion (상호배제)

    • 매 순간 하나의 프로세스만이 자원을 사용할 수 있음
  • No Preemption(비선점)

    • 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음
  • Hold And Wait (보유대기)

    • 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음
  • Circular Wait (순환 대기)

    • 자원을 기다리는 프로세스간에 사이클이 형성되어야 함

DeadLock 처리 방법

  • Deadlock Prevention (예방)

    • 자원 할당 시 Deadlock의 4가지 필요 조건 중 어느 하나가 만족되지 않도록 하는 것
  • Deadlock Avoidance (회피)

    • 자원 요청에 대한 부가적인 정보를 이용해서 deadlock의 가능성이 없는 경우에만 자원을 할당
    • 시스템 state가 원래 state로 돌아올 수 있는 경우에만 자원 할당
  • Deadlock Detection and recovery (회복)

    • Deadlock 발생은 허용하되 그에 대한 detection 루틴을 두어 deadlock 발견시 recover
  • Deadlock Ignorance (무시)

    • Deadlock을 시스템이 책임지지 않음
    • 대부분의 OS가 채택
profile
형이 먹여살릴게

0개의 댓글