세마포어, 공유 메모리와 IPC
세마포어, 공유 메모리와 IPC
System V IPC 계열 함수들을 PHP에서 쓸 수 있게 감싼 모듈이에요. 세마포어, 공유 메모리, 프로세스 간 메시지 전달(IPC)을 모두 포함합니다.
본문
이 모듈들은 System V IPC 계열 함수들의 래퍼입니다. 세마포어(semaphores), 공유 메모리(shared memory), 프로세스 간 메시지 전달(IPC)을 포함해요.
세마포어는 현재 머신의 리소스에 대한 배타적 접근을 보장하거나, 동시에 특정 리소스를 사용할 수 있는 프로세스 수를 제한하는 데 쓸 수 있습니다.
이 모듈은 System V 공유 메모리를 사용하는 공유 메모리 함수도 제공해요. 공유 메모리는 전역 변수에 접근하는 용도로 쓸 수 있습니다. 서로 다른 httpd 데몬이나 심지어 Perl, C 같은 다른 프로그램도 이 데이터에 접근해 전역 데이터 교환을 할 수 있어요. 다만 공유 메모리는 동시 접근에 안전하지 않다는 점을 잊지 말아야 합니다. 동기화가 필요하면 세마포어를 사용하세요.
유닉스 OS가 공유 메모리에 두는 제한은 다음과 같아요.
SHMMAX— 공유 메모리의 최대 크기. 보통 131072 바이트SHMMIN— 공유 메모리의 최소 크기. 보통 1 바이트SHMMNI— 시스템의 공유 메모리 세그먼트 최대 개수. 보통 100SHMSEG— 프로세스당 공유 메모리 세그먼트 최대 개수. 보통 6
메시지 함수들은 다른 프로세스와 메시지를 주고받는 데 씁니다. 유닉스 도메인 소켓을 별도로 설정할 필요 없이, 프로세스 간 데이터를 교환하는 간단하고 효과적인 수단을 제공해요.
플랫폼별 제약도 기억할 필요가 있어요. Windows에서는 공유 메모리 함수와 ftok()만 사용할 수 있고, 세마포어와 프로세스 간 메시지 함수는 지원되지 않습니다.