공동의 목적을 위해 동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받음
이 과정에서 자원의 일관성을 보장해야 함 => 동기화 방식
프로세스 & 스레드 모두 동기화의 대상임
프로세스 동기화 (Process Synchronization)란
다중 프로세스 환경에서 프로세스 / 스레드의 공유 자원 접근 순서를 제어하여, 데이터 불일치, Race Condition, 교착 상태 등의 문제를 방지하고 일관성을 유지하는 기술
[동기화의 목적]
1. 실행 순서 제어: 프로세스를 올바른 순서대로 실행
e.g. Reader Writer Problem
2. 상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기
e.g. Bank account Problem, Producer Consumer Problem
여러 프로세스가 동시에 접근할 수 있는 자원
공유 자원에 접근하는 코드 중에서 동시에 실행되면 문제가 발생하는 코드 영역 (Mutual Exclusion 위반)
입계 구역에 두 개 이상의 실행 흐름이 같은 자원을 동시에 다루어 결과가 실행 순서에 의존하게 되는 상태
서로 다른 프로세스가 임계 구역에 동시에 접근하면 자원의 일관성이 깨질 수 있음
여러 프로세스가 공유 자원에 접근할 때 데이터의 일관성과 실행의 공정성을 보장하는 것
이를 달성하기 위해 OS는 다음 3가지 조건을 만족시켜야 함
어떤 프로세스가 계속해서 자원을 얻지 못 해 무한히 기다리는 상태 (공정성 결여)
시스템은 전체적으로 돌아가지만, 해당 스레드가 작업을 완료하지 못하는 상태