세마포어

프로세스 동기화 도구에는 크게 뮤텍스 락과 세마포어가 있다.  둘 차이를 간단하게만 말해보면, 뮤텍스 락은 공유 자원에 하나의 스레드가 접근가능하고 세마포어는 공유자원에 여러 스레드가 접근 가능하다는 것이다.    지금까지 너무 얕게만 이해하고 있었다는 생각을 했다. 세마포어는 여러 스레드도 접근 가능하고, 뮤텍스 락을 대체할 수도 있기 때문에, 세마포어가 좋은 거 아닌가 라는 생각을 막연하게 해왔었다.  하지만 내부 동작 방식을 살펴보면 이야기는 달라진다. 문맥 교환이라는 오버헤드를 배제한 설명이기 때문이다. 이게 무슨 말인지 한번 살펴보자.   1. 뮤텍스락 뮤텍스락은 공유 자원에 접근하기 위해 뮤텍스를 획득해야하고, 자원 사용이 끝나면 뮤텍스를 해제하는 방식이다. 그리고 하나의 스레드만 뮤텍스를 획..
프로세스 동기화와 관련된 고전적인 문제는 세 가지 정도가 있습니다. Bounded-Buffer Problem (Producer-Consumer Problem)Readers and Writers ProblemDining - Philosophers Problem오늘은 이 세 가지 문제들에 대해 포스팅하겠습니다.  1. Bounded-Buffer Problem (Producer-Consumer Problem)  버퍼(Buffer)란 데이터를 임시로 저장하는 공간입니다. Bounded-Buffer Problem은 버퍼의 크기가 유한한 환경에서의 문제가 발생하는 것입니다.  위 사진에서는 버퍼가 크기가 유한한 원형 형태로 구성이 되어있습니다. 그리고 프로세스가 생산자(Producer)와 소비자(Consumer)의..
1. Semaphores (세마포어) 세마포어는 일종의 추상 자료형입니다. 여기서 추상 자료형이란, Object와 Operation으로 구성된 개념적인 모델을 말합니다. 만약 정수 추상 자료형이라고 한다면 덧셈, 뺄셈 등의 연산을 할 수 있는걸 알듯이 어떤 자료를 어떤 방식으로 다룰지에 대한 논리적인 정의, 즉 어떤 연산을 수행할 수 있는지만 알면 되는 것입니다.    여기서의 세마포어도 마찬가지입니다. Semaphore S라는 세마포어 변수 S가 있다고 하면 S에는 정수 값을 가질 수 있고, 연산은 P연산과 V연산 두 가지가 정의됩니다. P 연산은 공유 데이터를 획득하는 과정이고 V 연산은 자원을 다 사용하고 반납하는 과정입니다. 세마포어의 변수는 자원의 갯수를 나타냅니다. 만약 세마포어 변수 값이 5..
동구름이
'세마포어' 태그의 글 목록