본문 바로가기
컴퓨터공학기초 개념/운영체제

18. 프로세스 - IPC의 개념

by devraphy 2021. 4. 21.

1. IPC(Inter-Process Communication) 배경지식

- 운영체제에서 프로세스 간의 직접적인 커뮤니케이션(= 통신) 방법은 존재하지 않는다. 

- 그러나 프로세스 간의 커뮤니케이션이 필요할 때, 사용할 수 있는 방법을 IPC라고 한다. 

 

 

a) 프로세스간 통신이 불가능한 이유

  • 프로세스는 다른 프로세스의 공간을 접근할 수 없다.
  • 이는 프로세스의 데이터나 코드가 바뀔 가능성을 없애기 위함이다. (프로세스 데이터 변경가능 = 해킹 위험성) 

 

b) 프로세스간 통신이 필요한 이유

  • 요즘 CPU는 코어를 적게는 8개, 많게는 64개까지 갖고있다. 
  • CPU의 효율/성능을 높이기 위해 여러 코어를 동시에 활용하도록 다수의 프로세스를 동시에 실행시킨다.  
  • 다양한 프로세스를 동시에 실행시키는 경우, 프로세스간의 상태를 확인하기 위하여 프로세스간 데이터 통신을 필요로 한다. 

 

c) 코어와 CPU 효율 및 성능에 관하여 

  • 코어는 CPU의 핵심적인 연산처리장치라고 할 수 있다. 코어 1개당 1개의 프로세스를 맡아서 처리할 수 있다. 
  • 각 1초씩 걸리는 프로세스 8개를 실행한다면, 이를 처리하는데 코어 1개의 CPU는 8초가 걸리고 코어 8개의 CPU는 1초가 걸린다.

 2. 프로세스의 공간에 대한 이해 

- 하나의 프로세스는 4GB의 크기를 갖는다. 

- 그렇다면 8기가 RAM 사양의 컴퓨터는 동시에 2개 프로세스를 실행하는 것이 한계일 것이다.

- 하지만, 실제로는 그렇지 않다. 프로세스는 가상 메모리와 물리 메모리로 나뉘기 때문이다.

- 여기에 대해서 알아보자.   

 

 

a) 가상 메모리와 물리 메모리에 대한 이해

  • 가상 메모리 또는 가상 주소는 이름 그대로 물리적인 저장공간을 의미하지 않는다. 
  • 실제 저장공간은 물리 메모리 또는 물리 주소가 담당한다. 
  • 프로세스 내부적으로 가상 주소를 물리 주소로 변환하는 기능을 갖고 있다. 이 부분에 대해서는 추후에 다시 언급하도록 하겠다.  

 

 

b) 그래서 가상 주소 또는 가상메모리란 무엇인가?

  • 프로세스가 4GB의 크기를 갖는다고 4GB만큼의 물리공간을 사용하는 것은 아니다. 
  • 실제로는 프로세스가 4GB 범위에 해당되는 메모리 주소 값을 사용할 수 있다는 의미다.
  • 그렇기 때문에 가상 주소라는 명칭이 붙는 것이다.  

 

 

  • 위의 그림에서 처럼, 프로세스의 가상 주소는 다음과 같이 구분된다. 
  • 3GB ~ 4GB 사이의 가상 주소는 운영체제 코드가 사용하는 부분이다. (= 커널 영역)
  • 0GB ~ 3GB 사이의 가상 주소는 프로그램 코드 즉, 소스코드가 사용하는 부분이다. (= 사용자 영역)  

 

c) 커널 영역은 공유한다. 

  • 각 프로세스마다 가상메모리에 커널영역이 있다면, 운영체제 코드(= 시스템 콜)가 반복적으로 사용된다는 것이다.
  • 프로그래밍 또는 코드의 효율성에 대해 생각해본다면, 굉장히 비효율적이라는 것을 알 수 있다.
  • 그렇기 때문에, 프로세스의 가상 메모리 상에는 프로세스 마다 운영체제 코드가 올라가 있는 것처럼 보일지라도 실제 물리 메모리를 확인해보면 동일한 물리 주소값을 할당받는 것을 확인할 수 있다.

- 즉, 프로세스는 커널 영역을 공유하는 것이다.   

 


3. 요약정리

  • CPU 하드웨어의 발전으로 멀티코어의 등장으로 인해, 여러 프로세스의 동시실행하여 성능을 개선 및 향상이 가능해졌다. 
  • 다중 프로세스의 동시실행을 위해서는 프로세스간의 통신을 필요로 한다.
  • 하지만, 프로세스 간의 공간은 완전히 분리되어 있어 통신이 불가능 하다. 
  • 이런 환경에서 프로세스간 통신을 위해 사용되는 기법이 IPC(Inter-Process Communication)다.  
  • 대부분의 IPC 기법은 프로세스의 공유 영역인 커널공간을 활용한다. 

댓글