[운영체제] 프로세스 동기화 (process synchronization)

강민혁·2023년 3월 19일
0

기술면접 | 운영체제

목록 보기
18/32

프로세스 동기화(process synchronization)에 대해 설명하세요

Keyword

수행 시기, 실행 순서, 상호 배제, race condition


Script

간단하게 이야기하면, 프로세스 동기화는 프로세스 간의 수행 시기를 맞추는 것을 의미합니다. 즉, 실행 순서를 제어하여 올바른 순서대로 실행하도록 하고, 상호 배제(mutual exclusion)를 통해 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근할 수 있도록 하는 것을 의미합니다.

만약 임계 구역을 여러 프로세스가 동시 다발적으로 사용하는 일이 발생하는, race condition이 발생하면, 데이터의 일관성이 깨지게 됩니다. 그래서 프로세스 동기화를 통해 데이터의 일관성을 지켜야 합니다.


Additional

생산자와 소비자 문제 with 상호 배제(mutual exclusion)

먼저, 생산자는 물건을 계속해서 생산하는 프로세스이고, 소비자는 계속해서 소비하는 프로세스이다.

둘은 'sum'이라는 데이터를 공유한다. 예를 들어, 이 sum이라는 데이터에 초기에 10이라는 수가 저장되어있다고 하자.

그랬을 때, 생산자는 이 sum을 증가시키고, 소비자는 감소시킨다.

만약, 이 두 과정이 동시에 실행되면 어떤 문제가 생길까?

두 과정이 동기화가 안된 상태에서는 분명히 생산자가 생산하기 전에도 소비자가 소비하는 역전된 현상이 발생한다.

즉, 동시에 접근하면 안되는 자원에 동시에 접근했기 때문에 발생하는 문제라고 할 수 있다.

이를 상호 배제를 통해 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하는 동기화 작업이 필요한 것이다.

공유 자원(shared resource)과 임계 구역(critical section)

공유 자원은 전역 변수나, 파일, 입출력장치, 보조기억장치 등 동시에 실행되는 프로세스나 스레드가 공동으로 사용하는 자원을 의미한다.

그런데 이 공유 자원 중에서 동시에 사용하면 문제가 발생하는 자원들이 있는데, 그것은 임계 구역(critical section)이라고 한다.

상호배제를 위한 동기화의 세 가지 원칙

  1. 상호 배제(mutual exclusion)

한 프로세스가 임계 구역에 진입했다면, 다른 프로세스는 임계 구역에 들어올 수 없다.

  1. 진행(progress)

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

  1. 유한 대기(bounded waiting)

한 프로세스가 임계 구역에 진입하고 싶다면, 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어야 한다. (임계 구역에 들어오기 위해 무한정 대기해서는 안된다.)

Race Condition

두개 이상의 프로세스가 공유 자원을 concurrently하게 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 실행 결과가 같지 않고 달라지는 상황을 말한다.

즉, 두 개 이상의 프로세스나 스레드가 자원을 놓고 서로 사용하려고 경쟁하는 상황이다.


Reference

Book - 혼자 공부하는 컴퓨터 구조+운영체제

profile
with programming

0개의 댓글