COMPUTER SCIENCE

멀티 프로세서의 프로세스 커뮤니케이션(IPC) 이해

우진하다 2023. 6. 8. 14:46

 

프로세스 제어 블록.

프로세스 제어 블록(Process Control Block, PCB)은 운영체제가 각 프로세스를 관리하기 위해 유지하는 데이터 구조입니다. PCB는 프로세스에 대한 중요한 정보를 저장하고, 프로세스의 상태 및 동작을 제어하는 데 사용됩니다. 

프로세스 식별자(Process ID).
각 프로세스를 식별하는 고유한 번호입니다.

프로세스 상태(Process State).
프로세스의 상태를 나타내며, 대기(waiting), 실행(running), 준비(ready), 종료(terminated) 등의 상태가 포함될 수 있습니다.

레지스터 상태(Register State).
프로세스가 실행될 때 레지스터에 저장되는 데이터를 포함합니다. 이는 프로그램 카운터(PC), 스택 포인터(SP), 누산기(accumulator), 인덱스 레지스터 등을 포함할 수 있습니다.

프로세스 우선순위(Priority).
프로세스의 우선순위를 나타내는 값으로, 스케줄링 알고리즘에서 사용됩니다.

프로세스 관리 정보(Process Management Information).
프로세스를 관리하기 위해 필요한 정보를 포함합니다.
예를 들면 프로세스가 사용하는 메모리 영역, 파일 디스크립터, 자원 할당 정보 등이 있습니다.

스케줄링 정보(Scheduling Information).
프로세스의 스케줄링과 관련된 정보를 포함합니다.
예를 들면 프로세스의 실행 우선순위, 스케줄링 알고리즘에 사용되는 타이머 값 등이 있습니다.

PCB는 운영체제가 프로세스를 관리하고, 프로세스 간의 전환과 제어를 가능하게 합니다. 프로세스의 생성, 종료, 중단, 일시 정지 등의 작업에서 PCB는 중요한 역할을 수행합니다. 각 프로세스마다 하나의 PCB가 할당되며, PCB는 프로세스의 상태 변화 및 실행 정보를 추적하고 관리함으로써 효율적인 프로세스 관리를 가능하게 합니다.

 

프로세스 커뮤니케이션(InterProcess Communication, IPC).

프로세스는 다른 프로세스 공간을 접근할 수 없어 성능을 높이 위해 여러 프로세스를 만들어 동시 실행합니다.
이 때 프로세스간 상태 확인 및 데이터 송수신이 필요합니다. 이것이 프로세스 커뮤니케이션입니다.

프로세스 커뮤니케이션(IPC, Inter-Process Communication)은 운영체제에서 실행 중인 여러 프로세스 간에 데이터를 교환하고 상호 작용하는 메커니즘입니다. 프로세스 간에 데이터를 전송하거나 공유하기 위해 IPC 메커니즘을 사용할 수 있습니다. 이를 통해 프로세스들은 서로 통신하고 작업을 조율할 수 있습니다.

IPC는 다양한 방식으로 구현될 수 있으며, 주요한 IPC 기법으로는 다음과 같은 것들이 있습니다:

파이프(Pipe).
파이프는 일방향으로 데이터를 전송하는 방식의 IPC 메커니즘입니다.
보통 한 프로세스에서 다른 프로세스로의 단방향 통신에 사용됩니다.

메시지 큐(Message Queue).
메시지 큐는 메시지를 전송하는 방식의 IPC 메커니즘으로, FIFO(First-In-First-Out) 원칙에 따라 메시지를 전달합니다. 메시지를 보내는 프로세스는 메시지 큐에 메시지를 넣고, 수신하는 프로세스는 해당 큐에서 메시지를 가져와 처리합니다.

공유 메모리(Shared Memory).
공유 메모리는 여러 프로세스가 동일한 물리적인 메모리 영역을 공유하는 방식의 IPC 메커니즘입니다. 이를 통해 프로세스 간에 데이터를 직접 공유하고 효율적으로 통신할 수 있습니다.

세마포어(Semaphore).
세마포어는 프로세스 간의 상호 배제와 동기화를 위한 동기화 객체입니다. 세마포어를 사용하여 임계 영역에 대한 접근을 제어하거나 여러 프로세스 간의 작업 조율을 가능하게 합니다.

소켓(Socket).
소켓은 네트워크를 통해 프로세스 간에 통신하는 방식의 IPC 메커니즘입니다. 네트워크를 통해 다른 호스트의 프로세스와 데이터를 주고받을 수 있습니다.

이러한 IPC 메커니즘을 사용하여 프로세스들은 데이터를 교환하고 상호 작용함으로써 병렬 처리, 작업 분산, 데이터 공유 등의 기능을 구현할 수 있습니다. 각 IPC 기법은 특정한 상황과 요구사항에 맞게 선택되고 사용됩니다.

대부분의 IPC 기법은 결국 굥유할 수 있는 커널 공간을 활용해 구현됩니다.