세마포어
From Wikipedia, the free encyclopedia
세마포어(Semaphore)는 에츠허르 데이크스트라가 고안한, 두 개의 원자적 함수로 조작되는 정수 변수로서, 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법으로 사용된다. 이는 철학자들의 만찬 문제의 고전적인 해법이지만 모든 교착 상태를 해결하지는 못한다.
다른 뜻에 대해서는 세마포어 (동음이의) 문서를 참고하십시오.
실제 시스템에서 사용되는 세마포어를 생각하는 유용한 방법은 특정 리소스의 몇 단위를 사용할 수 있는지에 대한 기록과 해당 레코드를 안전하게 조정하는 작업(즉, 경쟁 조건을 피하기 위해)을 결합하는 것이다. 획득하거나 무료가 되며, 필요한 경우 리소스 단위를 사용할 수 있을 때까지 기다린다.
세마포어는 경쟁 조건을 방지하는 데 유용하지만, 경쟁 조건이 없다고 보장하지는 않는다. 임의의 자원 수를 허용하는 세마포어를 카운팅 세마포라고 하며, 값 0과 1(또는 잠김/잠금 해제, 사용 불가능/사용 가능)로 제한되는 세마포를 이진 세마포라고 하며 잠금을 구현하는 데 사용된다.
세마포어 개념은 데이크스트라와 그의 팀이 일렉트롤로지카(Electrologica) X8용 운영체제를 개발하던 1962년 또는 1963년에 네덜란드 컴퓨터 과학자 에츠허르 데이크스트라에 의해 발명되었다. 이 시스템은 결국 다중 프로그래밍 시스템으로 알려지게 되었다.