[Chapter 12] 프로세스 동기화 - 1 동기화란

Kim Seohyun·2024년 2월 3일
0
post-thumbnail

동기화, 공유 자원, 임계 구역, 상호 배제
운영체제의 프로세스 관리 서비스 중 가장 중요한 두 가지를 꼽자면 스케줄링과 동기화입니다. 지난 장에서 스케줄링을 학습했다면 이번에는 동기화에 대해 알아봅시다.

동기화의 의미

프로세스들은 협력적으로 실행되기 때문에 동기화(synchronization)가 필요하다. 특히 프로세스 동기화는 프로세스 사이의 시기를 맞추는 것을 의미하며 두 가지 목적이 있다.

첫째, 실행 순서 제어를 위한 동기화

동시에 실행하는 프로세스를 올바른 순서대로 실행하기 위한 동기화이다. 예를 들어, 특정 텍스트파일은 Write 프로세스가 진행된 후, Read 프로세스가 진행되어야 하므로 순서에 따라 실행이 일어난다.

둘째, 상호 배제를 위한 동기화

상호 배제(mutual exclusion)는 동시에 접근해서는 안 되는자원에 동시에 접근하지 못하게 하기 위한 동기화다. 예를 들어, A라는 계좌에서 B와 C라는 계좌에 각각 3만원 씩 송금할 때 B에 송금과 차액 동기화가 된 후에 C로 입금이 진행되어야만 거래가 의도대로 진행된다.

생산자와 소비자 문제

생산자와 소비자 문제는 물건을 계속해서 생산하는 프로세스인 생산자와 물건을 계속해서 소비하는 프로세스인 소비자로 이루어져 있다. 이들은 총합이라는 데이터를 공유한다. 자세한 내용은 링크의 자료에서 알아보자.

공유 자원과 임계 구역

두 개 이상의 프로세스를 동시에 실행하면 문제가 발생하는 자원을 공유 자원(shared resource)라고 한다. 그리고 이런 공유 자원에 접근하는 코드 영역을 임계 구역(critical section)이라고 한다.
두 개 이상의 프로세스가 임계 구역에 진입하고자 하면 둘 중 하나는 대기해야 하며 오류로 여러 프로세스가 동시 다발적으로 실행되는 경우를 레이스 컨디션(race condition)이라고 한다. 이는 데이터의 일관성이 깨지는 문제를 발생한다.
운영체제는 이러한 임계 구역 문제를 방지하고자,상호 배제를 위한 동기화를 위해, 아래 세 가지 원칙을 지킨다.

  • 상호 배제(mutual exclusion): 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없음
  • 진행(progress): 임계구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 함
  • 유한 대기(bounded waiting): 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어야 함

4가지 키워드로 정리하는 핵심 포인트

  • 동기화는 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나 프로세스를 올바른 순서대로 실행하게 하는 것을 의미합니다.
  • 공유 자원은 공동으로 사용하는 자원으로, 전역 변수가 될 수도 있고, 파일이 될 수도있고, 입출력장치, 보조기억장치가 될 수도 있습니다.
  • 임계 구역은 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역을 의미합니다. 임계 구역에 진입한 프로세스가 있다면 다른 프로세스는 임계구역 밖에서 기다려야합니다.
  • 상호 배제는 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어하는 것입니다.
profile
EWHA Cyber Security 19

0개의 댓글