shared memory

    shared memory with mutex

    많은 분들이 pthread의 mutex를 thread 기반 프로그래밍에서만 사용할 수 있다고 생각합니다. 공유메모리를 사용하는 멀티 프로세스 환경에서도 Lock, Unlock을 위해 pthread_mutex를 사용할 수 있습니다. 아래 코드는 master와 slave로 나눠 2개의 프로세스가 공유메모리에 대해 접근하기 위한 방법입니다. 공유메모리에 pthread_mutex_t와 int형 변수를 가진 구조체를 올려두고 각 프로세스에선 mmap으로 매핑하여 사용합니다. 이때 자원을 함께 접근하여 사용하기 위해서는 pthread_mutex_t가 2개의 프로세스가 공유해야 하는데요, 그러긴 위해선 mutex의 attribute를 PTHREAD_PROCESS_SHARED로 설정해줘야 합니다. 아래 코드 중 69,..

    shared memory with semaphore

    앞서 'shared memory with mutex' 에서는 2개 이상의 프로세스에서 공유 메모리를 이용해 데이터를 공유할 때 Lock / Unlock을 위해 mutex를 사용하는 방법에 대해 살펴보았습니다. 이번 글에서는 공유메모리를 이용해 데이터를 공유할 때 여러 프로세스들이 semaphore을 이용해 Lock / Unlock 하는 방법에 대해 알아보겠습니다. 앞서 'shared memory with mutex'를 보신 분들이라면 쉽게 이해 하실 수 있는데요, 코드 중 mutex 관련된 코드 대신 semaphore 코드로 대체해 주는 것 밖에 없습니다. 저는 semaphore을 POSIX Spinlock API들을 사용하였습니다. semaphore는 커널에서 관리해주는 정수로서 0이하의 음수 값으로는..