CS지식/운영체제

운영체제 Ch.4 동기화

뮤츠 2023. 1. 29. 16:58

4-1. 동기화 개요

  • 프로세스 동기화
    • 프로세스들 사이의 수행 시기를 맞추는 것.
    • 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기.
    • 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기.

  • 공유 자원
    • 전역변수, 파일, 입출력장치, 보조기억장치 등 프로세스들이 공유하는 자원.

  • 임계 구역 (critical section)
    • 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역.

    • 레이스 컨디션 (race condition)
      • 잘못된 실행으로 인해 여러 프로세스가 동시에 임계 구역의 코드를 실행하여 문제가 발생하는 상황.

  • 상호 배제를 위한 동기화의 세 가지 원칙
    1. 상호 배제 (mutual exclusion)
      • 한 프로세스가 임계 구역에 진입했다면, 다른 프로세스는 임계구역에 들어올 수 없다.

    2. 진행 (progress)
      • 임계구역에 어떤 프로세스도 진입하지 않았다면, 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 한다.

    3. 유한 대기 (bounded waiting)
      • 한 프로세스가 임계 구역에 진입하고 싶다면, 그 프로세스가 무한 대기를 해서는 안 된다.

4-2. 동기화 기법

  • 뮤텍스 락 (MUTual Exclusion lock)
    • 상호 배제를 위한 동기화 도구.

    • 기초적인 뮤텍스 락의 진행과정
      1. 프로세스가 임계구역에 진입 전, 임계구역의 lock 여부를 확인.
      2. 임계구역이 unlock 상태라면, 프로세스가 임계구역에 진입하고 상태를 lock으로 변경.
      3. 작업 완료 후 임계구역을 나오기 전에 임계구역을 unlock 상태로 변경.
      4. 만약 임계구역이 lock 상태라면, 대기하면서 지속적으로 1을 반복하여 임계구역 상태를 확인(바쁜대기)
  • 세마포(semaphore)
    • 임계구역과 비슷하나, 임계구역이 하나인 경우만 가정하는 뮤텍스 락과 달리, 임계구역이 여럿인 경우에도 적용 가능함.
    • 이진 세마포(뮤텍스락과 비슷), 카운팅 세마포 등.
    • 뮤텍스락 알고리즘에서 이용가능한 임계구역의 갯수를 추가함.

  • 모니터(monitor)
    • 공유 자원과 공유 자원에 접근하기 위한 인터페이스를 묶어 관리.
    • 모니터는 인터페이스에 접근하기 위한 프로세스를 담은 큐를 만들고, 모니터 안에 항상 하나의 프로세스만 돌어오게 하여 상호 배제를 위한 동기화 제공.
    • 실행 순서 제어를 위한 동기화로 조건변수(condition variable) 사용.
      1. 각 조건 변수에 대한 큐를 새로 만들어서, 해당 조건 변수로 wait 처리된 프로세스를 해당 큐에 넣음.
      2. 조건 충족으로 해당 조건변수에 대한 signal 함수 등으로 호출시, 해당 큐에 peek값인 프로세스를 모니터 안으로 들여보낸다.

 

참고 : 혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)