이전에 뮤텍스 락과 세마포에 대해서 다룬 적이 있습니다. 현재 글은 이전 글을 다듬어서 새로 작성된 게시물입니다.https://server-technology.tistory.com/338 동기화가 필요한 이유여러 스레드가 동시에 임계 구역(Critical Section)에 접근하면 데이터 일관성 문제가 발생할 수 있다. 임계 구역이란 공유 자원에 여러 스레드가 동시에 접근하였을 때 문제가 발생할 수 있는 코드 영역이다. 여러 스레드가 동시에 임계 구역에 접근하여 문제가 발생하는 것을 레이스 컨디션(Race Condition)이라고 한다.레이스 컨디션 문제를 해결하기 위해서는 동기화 처리가 필요하다. 동기화란 실행 순서를 제어하고 상호 배제를 준수하는 것이다.실행 순서 제어 : 여러 스레드가 존재할 때 ..
식사하는 철학자 문제식사하는 철학자 문제는 교착 상태를 설명하기 위해서 사용되는 문제입니다. 5명의 철학자가 존재하고 왼쪽과 오른쪽에 포크가 존재합니다. 앞에 놓인 음식을 먹기 위해서는 양손에 포크를 가지고 있어야 합니다. 단, 조건이 존재합니다.왼쪽 포크를 사용할 수 있다면 집어든다.오른쪽 포크를 사용할 수 있다면 집어든다.왼쪽과 오른쪽 포크 모두 집었다면 앞에 놓인 음식을 먹을 수 있다.식사가 끝나면 오른쪽 포크를 내려놓는다.오른쪽 포크를 놓은 후 왼쪽 포크를 놓는다.단순히 모든 철학자가 양손에 포크를 들어 식사를 하면 될 것 같습니다. 그러나 모든 철학자가 포크를 사용하려고 하면 문제가 발생합니다. 모두가 왼쪽 포크를 집게 된다면 어느 누구도 오른쪽 포크를 집을 수 없게 됩니다. 각자 오른쪽 포..