728x90
Process
- 메모리에 올라와 현재 실행되고 있는 프로그램의 인스턴스
- 운영체제로부터 독립된 메모리를 할당받는다.
- 프로세스들은 독립적이기 때문에 통신을 위한 IPC가 요구된다.
- 각 프로세스는 최소 1개의 Thread를 가지고 있다.
IPC : 프로세스 간 통신(Inter-Process Communication, IPC)이란 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다.
Thread
- 프로세스 내에서 할당받은 자원을 이용해 동작하는 흐름의 실행 단위
- 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.
- 스레드는 프로세스의 자원을 공유하기 때문에 다른 스레드에 의한 결과를 즉시 확인 가능하다.
- 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용하여 실행된다.
Stack을 분리하는 이유 : Stack에는 함수의 호출 정보가 저장되는데, Stack을 공유하면 LIFO(후입선출) 구조에 의해 실행 순서가 복잡해지기 때문에 실행 흐름을 원활하게 하기 위함이다.
Multi Process
- 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(Task)을 처리하도록 하는 것이다.
- 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용한다.
- 독립된 구조로서 안정성이 높다.
- 독립된 구조이다보니 작업량이 많을 시 오버헤드가 발생해 시스템 성능에 영향을 끼칠 가능성이 있다.
Multi Thread
- 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것이다.
- 시스템 자원 소모 감소, 시스템 처리율 향상, 프로그램 응답 시간 단축의 장점이 있다.
- 하지만 자원 공유 시 동기화 문제 발생 가능성이 있고, 설계와 디버깅이 난해하다. 또한 하나의 프로세스에 문제가 생기면 전체가 영향을 받는다는 단점이 있다.
728x90