1. 동기화(Synchronization)란?

  • 다중 프로그래밍(multi-programming) 시스템에서는 다수의 프로세스(스레드 포함)가 동시에 실행
  • 동시에 실행되는 프로세스간에 공유하는 자원이나 데이터가 존재할 경우 문제가 발생할 수 있음
  • 프로세스가 서로 비동기적이라고 함은 프로세스가 서로의 존재를 모르고 독립적으로 동작중임을 의미한다.
  • 프로세스의 실행 순서를 맞추거나 공유 자원에 대한 접근 정책을 설정여 문제를 해결하는 것을 동기화라고 한다.

 

 

2. 상호 배제(Mutual Exclusion)

  • 코드에서 여러 프로세스가 공유하는 데이터에 접근하는 부분을 임계 영역(Critical Section)라고 한다.
  • 임계 영역에 여러 프로세스가 동시에 들어가지 않도록 하는 것을 상호 배제(Mutual Exclusion)라고 한다.

  • 기본 연산
    • Lock
      • 임계영역에 진입하기 위한 연산
      • 임계영역에 진입한 다른 프로세스가 존재하지 않을 경우 진입
      • 진입하는 즉시 다른 프로세스가 들어오지 못하도록 함

    • Unlock
      • 임계영역에서의 작업을 마치고 빠져나오는 연산
      • 임계영역에 다른 프로세스가 들어올 수 있도록 비어있음을 알림

  • 상호배제 구현의 조건
    • 상호 배제(Mutual Exclusion)
      • 말그대로 임계영역에 진입한 프로세스가 있다면 다른 프로세스는 진입할 수 없도록 해야함

    • 진행(Progress)
      • 임계영역에 진입한 프로세스가 없는 상태이고 하나 이상의 프로세스가 임계영역에 진입하고자
        하는 상황일 경우 어느 프로세스를 임계영역에 진입시킬지 정해진 시간 내에 선택해야함

    • 한정된 대기(Bounded Waiting)
      • 프로세스의 임계영역으로의 진입까지의 대기시간은 유한해야한다.

  • 상호배제 구현의 방식
    • 소프트웨어적 해결책(SW Solution)
      • 개발자가 소프트웨어 수준에서 직접 상호배제를 보장하는 코드를 작성하는 방식
      • Dekker's Algorithm, Peterson's Algorithm, Dijkstra's Algorithm 등이 있다.

    • 하드웨어적 해결책(HW Solution)
      • 하드웨어 수준에서 자체적으로 상호배제를 보장하도록 설계하는 방식
      • TestAndSet(TAS) 구조 등이 있다.

    • OS에서 지원하는 소프트웨어적 해결책(OS Supported SW Solution)
      • 운영체제가 자체적으로 지원하는 소프트웨어적 해결책
      • 스핀 락(Spin Lock), 뮤텍스(Mutex), 세마포어(Semaphore) 등이 있다.

    • 언어 수준에서의 해결책(Language-Level Solution)
      • 프로그래밍 언어에서 자체적으로 지원하는 소프트웨어적 해결책
      • 자바의 모니터(Monior)가 대표적이다.

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

#6 동기화(Synchronization) 3 - HW Solution  (0) 2021.12.24
#5 동기화(Synchronization) 2 - SW Solution  (0) 2021.12.23
#3 프로세스 스케줄링(Scheduling)  (0) 2021.12.21
#2 스레드(Thread)  (0) 2021.12.20
#1 프로세스(Process)  (0) 2021.12.14

+ Recent posts