게시:
수정:

프로세스는 각자의 주소 공간(Address Space)를 갖고 수행되므로 독립적이고 경잭적이다. 이와 같은 이유로 원칙적으로는 하나의 프로세스가 다른 프로세스에게 영향을 미치지 못한다.

그러나 경우에 따라서 협력해야 효율적인 경우가 있을 수 있어 서로 정보를 주고 받으며 실행하게 되는데 이를 협력 프로세스(Cooperating Process)라고 하며 전자를 독립적 프로세스(Independent Process)라고 한다.

프로세스간 협력 메커니즘(IPC: Interprocess Communication)

프로세스는 원칙적으로 자기의 메모리 주소 공간만 볼 수 있고 서로에게 개입할 수 없어 직접 메시지를 주고 받을 수 없다. 이러한 이유로 몇 가지 편법적인 방법으로 메시지를 교류한다.

1. Shared Memory

서로 다른 프로세스 간에도 일부 주고 공간을 공유하게 하는 메커니즘이다. 각 Code, Data, Stack section은 따로 있으나 그것을 물리적 메모리에 매핑(to map memory)할 때 일부 영역이 공유되도록 매핑하는 것이다.

이 방식은 어느 한 쪽의 프로그램이 이상하면 잘못된 결과가 나올 수 있기 때문에 신뢰할 수 있는 프로그램에 대해서 적용해야 한다.

2. Message Passing

운영체제 커널(Kernel)을 통해 메시지를 전달하는 방법이다. 앞서 설명한 Shared Memory 방식과 달리 프로세스 사이에 공유 변수를 일체 사용하지 않고 통신하는 방법이다. 메일 박스 사용 여부에 따라서 방식을 구분한다.

Comparison of Message Passing and Shared Memory.
Message Passing 방식과 Shared Memory 방식 비교

2-1. Direct Communication

통신하려는 프로세스의 이름을 명시적으로 표시하는 방법이다. 이름을 봐선 프로세스간 직접 통신할 것 같지만 여기서 직접(Direct)은 메일 박스 없이 수신자를 직접 지정하여 전달하는 것을 의미한다. 물론 메시지는 커널이 전달한다.

2-2. Indirect Communication

Mailbox (또는 Port)를 통해서 메시지를 간접적으로 전달하는 방법이다. Direct 방식은 수신자를 명시하여 전달하지만 Indirect 방식은 메일박스에 전달하면 커널이 알아서 전달한다.

Comparison direct communication and indirect communication
Direct 및 Indirect communication 비교

Reference

반효경, “반효경 [운영체제] 9. Process Management 2” KOCW. 2014년 3월 25일. video, http://www.kocw.net/home/cview.do?lid=3a5437eaa6c9e5b0


OS 시리즈 모두보기 (펼치기)


댓글남기기