한 프로그램 안에서 다수의 프로세서가 동작할 때 공유(데이터)메모리를 사용하게 된다.
그럴때 임계영역에서 서로 경쟁하다가 동시에 충돌 나거나 순서가 뒤바뀌는 상황이 발생된다.
이러한 문제를 해결하기 위해서 만들어진게 세마포어다 . 역할은 한번에 하나의 프로세서만 접근을
가능하게 만들어주는 것이다.
철도의 까치발 신호기 또는 해군의 수기 신호라는 뜻으로, 복수의 작업을 동시에 병행하여 수행하는 운영 체제(또는 프로그래밍)에서 공유 자원에 대한 접속을 제어하기 위하여 사용되는 신호.
병행 내지 병렬로 동작되는 둘 이상의 프로세스 사이에서 마이크로프로세서 시간이나 입출력 접속구(port)와 같은 공유 자원을 동시에 사용할 수 없기 때문에, 한 프로세스가 사용하고 있는 동안에 세마포어를 세워서 다른 프로세스를 대기시키고 사용이 끝나면 해제시키는 방법으로 사용한다.
[네이버 지식백과] 세마포어 [semaphore] (IT용어사전, 한국정보통신기술협회)
세마포어는 지하철 화장실처럼 화장실 칸의 개수가 여러개 유한하게 있는 곳의 열쇠의 갯수이다.
뮤텍스는 1개의 화장실에 대해서 다룬다면, 세마포어는 여러개의 화장실로 다루게 되고
화장실을 쓰기위해 열쇠를 하나 가져가면 P, 열쇠를 반납하면 V라고 한다.
만약 열쇠를 계속 가져가서(P) 열쇠가 0개가 되면, 다음 사람은 줄을 서서 기다려야한다.
화장실을 다 쓴다음 열쇠를 반납하게되면(V) 다음 사람이 들어갈 수 있다.
'프로그래밍 > 윈도우시스템' 카테고리의 다른 글
뮤텍스 예제 (0) | 2019.12.04 |
---|---|
뮤텍스에 대한 이해 (Mutex) (0) | 2019.12.04 |
프로세스(Process)와 스레드(Thread)의 개념 (0) | 2019.12.04 |