본문/내용
1. counter 프로그램
카운터 프로그램은 프로세스 동기화 문제를 해결하기 위한 클래식한 예시이다. 이 프로그램은 두 개 이상의 프로세스가 공유 자원을 안전하게 사용하도록 하는 방법을 보여준다. 카운터라는 변수가 여러 프로세스에 의해 접근되며, 이 프로세스들이 카운터의 값을 동시에 증가시키려고 할 때 발생할 수 있는 문제를 다룬다. 이 경우에는 각 프로세스가 카운터 값에 접근하고 변경하는 로직을 포함하므로, 동기화가 필요하다. 카운터 프로그램에서 기본적인 목표는 여러 프로세스가 공유된 카운터 값을 안전하게 증가시키는 것이다. 만약 동기화 없이는 하나의 프로세스가 카운터 값을 읽은 후 업데이트하기 전에 다른 프로세스가 카운터 값을 업데이트하면, 최종 결과가 예상치 못한 값으로 나올 수 있다. 이를 해결하기 위해 몇 가지 방법이 있는데, 당시 가장 흔하게 사용되는 기술 중 하나가 상호 배제를 보장하는 방법이다. 주로 세마포어나 뮤텍스를 사용하여 카운터를 안전하게 증가시킬 수 있다. 각각의 프로세스는 카운터에 접근하기 전에 동기화 객체인 뮤텍스를 잠금을 통해 소유해야 한다. 프로세스가 카운터를 읽고 업데이트한 후에는 반…