passing
[Unix Programming] Message Passing
[Unix Programming] Message Passing
2021.12.04Message Passing은 IPC 기법 중 하나로 memory protection을 위해 커널의 도움을 받아 message를 전달한다. 여기서 message는 문자나 byte의 열이라고 생각하면 된다. Message Passing의 방식은 한 process가 msgsnd를 하게되면 사용자의 주소 공간으로부터 message queue에 message가 저장되고, 다른 process가 msgrcv를 하게되면 message queue에 있는 message를 사용자의 주소 공간으로 가져오게된다. 앞에서 본 것과 같이 Message Passing은 커널에 message queue를 만들어서 통신을 한다. message queue는 msgget 함수를 통해 만들어지며 message의 임시 버퍼로 쓰인다. 그럼 ..
[Unix Programming] IPC 기본 개념
[Unix Programming] IPC 기본 개념
2021.12.03IPC 기법에는 여러가지의 종류가 있는데 우선 다음의 기법에 대해 알아보도록 하자. - message passing - shared memory - pipe 우선 위 기법에 대해 알아보기 전, facility key와 get 연산에 대해 먼저 알아야 한다. IPC에는 facility key라는 것이 있는데 이것은 IPC 객체를 유일하게 식별하기 위해 사용되는 수이다. 소켓 통신을 할 때 IP와 Port 번호로 소켓을 유일하게 식별하는 것처럼, IPC 통신에서는 facility key를 사용하여 객체를 식별하는 것이다. facility key 값을 integer 형식의 숫자로 부여해도 되지만 숫자는 중복될 가능성이 높기 때문에 이 위험을 방지하기 위해 ftok이라는 함수를 쓴다. ftok은 파일 이름을 키..