시스템 V IPC의 리눅스 구현은 Krishna balasubramanian(balasub@cis.ohio-state.edu)에 의해 기술되었다.
확인자의 유일성은 문제의 객체 타입(type)과 관계 있다. 이를 설명하기 위해, "12345"라는 수치 확인자를 가정하자. 같은 확인자를 같는 두개의 메세지 큐는 없으므로, 같은 수치 확인자를 가진 공유 메모리 세그먼트와 메세지 큐를 구별할 수 있는 가능성이 존재한다.
당신이 누군가에게 전화를 하고자 할 때는 전화번호를 알고 있어야 한다. 게다가 전화 회사는 당신에게서 나가는 전화를 마지막 목적지까지 어떻게 중계할 것인지 알고 있어야 한다. 반대편이 전화에 응답해야 연결이 이루어 진다.
시스템 V IPC 설비의 경우, 전화는 사용되는 객체의 타입을 가지고 직접적인 관련이 있다. 전화 회사나 라우팅 방법(routing method)은 IPC 키(key)와 적접 연관되어 진다.
키는 응용프로그램에서 키값을 하드코딩함으로써 항상 같은 값을 가질 수 있다. 이것은 키가 이미 사용된 것일 수 있다는 단점이 있다. 종종 ftok() 함수는 클라이언트와 서버 모두에 의해 키값을 발생시키는데 사용된다.
LIBRARY FUNCTION: ftok(); PROTOTYPE: key_t ftok ( char *pathname, char proj ); RETURNS: new IPC key value if successful -1 if unsuccessful, errno set to return of stat() call
ftok()로 부터 반환된 키값은 첫번째 아규먼트인 파일로 부터 inode 번호, minor 장치번호와 두번째 아규먼트인 한글자 프로젝트 확인자의 조합에 의해 발생한다. 이것은 유일성을 보장하지 않지만, 응용프로그램은 충돌을 체크하여 키를 다시 발생시킬 수 있다.
key_t mykey; mykey = ftok("/tmp/myapp",'a');
위의 예에서, 디렉토리 "/tmp/myapp"는 'a'라는 한글자와 조합된다. 또 다른 일반적인 예는 현재 디렉토리를 사용하는 것이다.
key_t mykey; mykey = ftok(".",'a');
사용되는 키 발생 알고리즘은 전적으로 응용프로그램 프로그래머의 마음에 달려 있다. 측정이 데드락(deadlocks), 경쟁상태의 방지등에 있는 한, 어떤 방법이든 나타날 수 있다. 예제의 목적은 ftok()의 사용에 있다. 만약 각 클라이언트 프로세스가 각기 유일한 홈 디렉토리로 부터 수행될 것이라고 가정한다면, 발생되는 키는 우리의 필요를 충족시켜야 한다.
얻어진 키값은 IPC 객체를 만들고 접근하기 위해 일련의 IPC 시스템 호출에서 사용된다.
ipcs -q: 메세지 큐(message queues)만을 보여준다. ipcs -s: 세마퍼(semaphore)만을 보여준다. ipcs -m: 공유 메모리(shared memory)만을 보여준다 ipcs --help: 부가적인 아규먼트(arguments)
디폴트로 세가지 객체의 종류가 모두 보여진다. 다음의 간단한 ipcs의 출력을 살펴보자:
------ Shared Memory Segments -------- shmid owner perms bytes nattch status ------ Semaphore Arrays -------- semid owner perms nsems status ------ Message Queues -------- msqid owner perms used-bytes messages 0 root 660 5 1
여기서 우리는 "0"이라는 확인자(Identifier)를 가진 단일 메세지 큐(single message queue)를 볼 수 있다. 그것의 주인은 root 사용자이고, 660(-rw-rw--)의 8진 허가사항을 가지고 있다. 큐에는 한개의 메세지가 있고, 메세지의 총 크기는 5바이트이다.
ipcs 명령어는 IPC 객체에 대해 커널의 저장 조직을 엿볼 수 있는 가장 강력한 도구이다.
ipcrm <msg | sem | shm> <IPC ID>
지울 객체가 메세지 큐(msg)인지 세마퍼(sem)인지 공유 메모리(shm)인지를 간단히 지정한다. IPC ID는 ipcs 명령어로 구할 수 있다. 확인자는 같은 타입안에서만 유일함으로 객체의 타입을 지정해 주어야만 한다. (앞의 내용을 상기하라)
Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved
Email To:Webmaster ,
Another address
LAST UPDATE Nov 18,1997
Created Nov 17,1997