공유 메모리 프로세스 간 통신 메커니즘은 주로 프로세스 간에 대량의 데이터를 전송하는 데 사용됩니다. 다음 그림은 공유 메모리를 사용하여 프로세스 간에 대량의 데이터를 전송하는 개략도를 보여줍니다.
공유 메모리는 메모리 내에서 별도로 오픈되는 메모리 공간입니다. 이 메모리 공간은 접근 권한, 크기, 최근 접근 시간 등 고유한 데이터 구조를 가지고 있습니다. 데이터 구조는 다음과 같이 정의됩니다:
으아악
두 프로세스가 이 공유 메모리 공간을 사용하기 전에 프로세스 주소 공간과 공유 메모리 공간 사이에 연결을 설정해야 합니다. 즉, 공유 메모리 공간을 프로세스에 마운트해야 합니다.시스템은 공유 메모리에 다음과 같은 제한 사항을 적용합니다.
으아악
* 첫 번째 매개변수는 일반적으로 ftok() 함수에 의해 생성되는 키 값입니다
* 두 번째 매개변수는 생성할 공유 메모리 세그먼트의 크기(바이트 단위)
* 세 번째 매개변수는 공유 메모리 세그먼트의 생성 식별자를 식별하는 데 사용됩니다
*/
으아악
* 첫 번째 파라미터는 연산할 공유 메모리 식별자입니다
* 두 번째 매개변수는 수행할 연산입니다
* 세 번째 파라미터는 shmid_ds 구조체의 임시 공유 메모리 변수 정보입니다
*/
으아악
으아악
/*
* 첫 번째 파라미터는 연산할 공유 메모리 식별자입니다
* 두 번째 매개변수는 공유 메모리의 매핑된 주소를 지정하는 데 사용됩니다. 0이 아닌 경우 이 매개변수는 시스템에 의해 할당됩니다
* 세 번째 매개변수는 공유 메모리 세그먼트의 액세스 권한 및 매핑 조건을 지정하는 데 사용됩니다
*/
으아악
으아악
/*
* 매개변수는 할당된 공유 메모리의 첫 번째 주소입니다
*/
으아악
2. 새 프로그램을 실행하기 위해 exec()가 호출되면 마운트된 모든 공유 메모리가 자동으로 마운트 해제됩니다.
3. 프로세스에서 exit() 함수가 호출되면 마운트된 모든 공유 메모리가 현재 프로세스에서 연결 해제됩니다.
으아악
/* 공유 메모리 신청 */으아악
/* 프로세스 주소 공간에 공유 메모리 매핑 */으아악
/* 매핑 해제 */으아악
/* 공유 메모리 삭제 */으아악
출력 결과:
위 내용은 Linux 프로세스 간에 메모리를 공유하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!