4. 동기화와 Deadlock

1. 동기화(Synchronization)

동기화(Synchronization)는 여러 개의 스레드 또는 프로세스가 공유된 자원에 접근하거나 작업을 수행할 때 상호 작용을 조정하는 메커니즘을 말합니다. 동기화는 데이터의 일관성과 무결성을 보장하고, 경쟁 조건(Race Condition)이나 잘못된 결과를 방지하기 위해 사용됩니다.

동기화의 주요 목적은 다음과 같습니다

1) 상호 배제(Mutual Exclusion)

공유 자원에 대한 동시 접근을 제어하여 여러 스레드 또는 프로세스가 동시에 해당 자원을 수정하거나 읽는 것을 방지합니다. 이를 통해 데이터의 일관성을 유지하고 충돌을 방지할 수 있습니다.

2) 순차적 실행(Sequential Execution)

동기화 메커니즘을 사용하여 스레드 또는 프로세스의 실행 순서를 제어할 수 있습니다. 이를 통해 특정 작업의 실행이 다른 작업에 의존하는 경우 올바른 순서로 실행할 수 있습니다.

3) 상호 협력(Cooperation)

동기화를 사용하여 스레드 또는 프로세스 간에 작업의 진행을 조정하고 데이터를 안전하게 공유할 수 있습니다. 이를 통해 작업 간의 상호 협력이 가능해집니다.

2. 교착상태(Deadlock)

반면, 교착상태(Deadlock)는 여러 프로세스 또는 스레드가 서로가 가진 자원을 기다리며 무한히 진행할 수 없는 상태를 말합니다. 교착상태는 다음 네 가지 조건이 동시에 성립할 때 발생합니다:

1) 상호 배제(Mutual Exclusion)

한 자원에 대해 동시에 여러 프로세스 또는 스레드가 접근할 수 없는 상태입니다.

2) 점유 대기(Hold and Wait)

최소한 하나의 자원을 점유한 상태에서 다른 자원을 기다리는 상태입니다.

3) 비선점(No Preemption)

다른 프로세스 또는 스레드가 점유한 자원을 강제로 빼앗을 수 없는 상태입니다.

4) 순환 대기(Circular Wait)

프로세스 또는 스레드 간에 자원을 기다리는 사이클이 형성되는 상태입니다.

교착상태는 시스템의 작업이 멈추게 되므로 심각한 문제입니다. 교착상태를 해결하기 위해 교착상태 회피, 교착상태 탐지 및 회복, 교착상태 예방 등의 방법을 사용합니다. 이러한 방법들은 자원 할당 정책을 조정하거나 프로세스 간의 통신을 조율하여 교착상태를 방지하거나 해결하는 데 도움을 줍니다.

Last updated