세마포어
[Unix Programming] Shared Memory
[Unix Programming] Shared Memory
2021.12.13Shared Memory는 여러 process가 동시에 접근할 수 있는 메모리로, 두 개 이상의 process가 물리적 메모리의 일부를 공유한다. 여기서 주의할 점은 아무 process가 접근할 수 있는 것이 아니라, 잘 제어된 함수를 통해 요청한 process만 접근이 가능하다. Shared Memory는 앞에서 봤던 IPC 기법들 중에서 가장 빠르고 효율적이다. Shared Memory 기법의 사용 방법에 대해 간략히 살펴보면, 먼저 shmget 함수를 통해 접근 가능한 메모리 공간 할당을 요청한다. 그다음 shmat 함수를 통해 논리 메모리에 shmget을 통해 얻은 물리 메모리를 mapping 시켜준다. 마지막으로 사용하지 않으면 shmdt 함수를 호출하여 논리 메모리를 통해 물리 메모리에 접근하..
[Unix Programming] Semaphore
[Unix Programming] Semaphore
2021.12.04synchronization 기법 중 하나인 semaphore에 대해 알아본다. Semaphore는 공유된 자원에 대한 접근을 제어 하는 방식으로 1개의 공유되는 자원에 제한된 개수의 process나 thread가 접근할 수 있도록 한다. 다시 말해서, process간의 message 전송 또는 shared memory를 통해 특정 데이터를 공유하게 되는 경우 여러 개의 process가 동시에 접근하면서 문제가 발생할 수 있는데 이 접근을 제어하는 것이 semaphore이다. 이는 mutex와 유사한 기능을 수행하지만, 다음과 같은 차이가 있다. 하나의 process/thread의 접근을 제어하는 mutex와 달리, semaphore는 공유자원에 접근할 수 있는 process/thread의 수를 나타내는..
[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은 파일 이름을 키..