- 프로세스들 사이에서 서로 데이터를 주고받는 행위 또는 그 방법을 의미한다.
- 각 프로세스는 독립적인 메모리 공간을 가지고 있어 별도의 메커니즘을 사용해야만 서로 통신이 가능하다.
사진 출처: https://jwprogramming.tistory.com/54
원래 프로세스는 위 그림과 같이 독립적으로 동작하는 실행 객체이다. 이 독립성은 다른 프로세스의 영향을 받지 않는 장점을 가지지만, 동시에 별도의 설비 없이는 다른 프로세스와의 통신이 어렵다는 단점도 있다. 이러한 상황에서 IPC(Inter-Process Communication) 모델을 사용하면 프로세스 간 데이터 교환과 통신을 효율적으로 수행할 수 있다.
오늘은 IPC 모델 중 Shared Memory에 자세히 살펴볼 예정이다!!
- 하나의 컴퓨터 시스템 내에서 다수의 프로세스가 데이터를 공유할 수 있는 메커니즘
- 여러 장치(CPU)나 여러 프로세스가 공동으로 사용하는 메모리
구현이 간단
하다.프로세스간에 직접 접근
할 수 있기 때문에 데이터 공유가 빠르고 효율적이다. 하나의 메모리를 공유해서 접근
하기 때문에 불필요한 오버헤드가 발생할 확률이 적다.이렇게 Shared Memory를 정리해봤는데 그럼 이 공유 메모리는 도대체 어떤 상황에서 사용되는걸까??
멀티 프로세스 환경에서의 데이터 공유
프로세스 간 데이터 전송의 오버헤드 감소
이처럼 공유 메모리는 데이터 접근 속도가 빠르고 구현이 간단하여 다양한 멀티 프로세스 환경에서 유용하게 사용된다.
하지만 여기서 주의할 점은 공유 메모리를 사용하면 데이터를 공유하는 것이기 때문에 동기화 이슈
가 발생한다. 이를 해결하기 위해 데이터 접근의 동기화
가 필요한데, 이 때 세마포어(Semaphore) 등의 동기화 메커니즘을 함께 사용할 수 있다.
- 프로세스 간 메시지 전송이나 공유 메모리를 통해 특정 데이터를 공유하는 경우 발생할 수 있는 문제를 해결하는 도구
- 여러 프로세스가 동시에 공유 자원에 접근하면 안 되고, 오직 한 번에 하나의 프로세스만이 접근할 수 있도록 제어할 때 사용
공유 메모리 내의 데이터 접근을 동기화하여 데이터 일관성을 유지
하기 위해 세마포어가 사용된다. 임계 영역을 설정하고, 프로세스가 이 영역에 들어갈 수 있도록 허용하는 방식으로 동작하는데, 이렇게 함으로써 여러 프로세스가 동시에 공유 메모리에 접근할 때 발생할 수 있는 경쟁 상태나 데이터 불일치 문제를 방지할 수 있다.
공유 메모리와 세마포어는 IPC 기법으로 중요한 역할을 한다. 공유 메모리는 여러 프로세스 간에 데이터를 신속하게 교환하고 공유할 수 있는 장점을 가지고 있다. 그러나 이러한 장점을 활용하기 위해서는 데이터 접근의 동기화가 필수적인데, 이를 위해 세마포어와 같은 동기화 메커니즘이 사용되어야 한다.
세마포어는 공유 자원에 대한 접근을 제어함으로써 데이터 일관성을 유지하고 경쟁 상태를 방지하기 때문에 공유 메모리를 사용할 때는 반드시 이러한 동기화 메커니즘이 함께 고려되어야 한다.