PROCESS
- 프로세스는 운영 체제에서 실행 중인 프로그램을 의미합니다. 각각의 프로세스는 독립된 메모리 공간, 실행 흐름, 시스템 자원을 가지고 있습니다.
- 각각의 프로세스는 자체적인 주소 공간을 할당받고 서로 다른 메모리공간(VirtualMemory 물리 메모리 아님) 다른 프로세스의 자원에 접근하려면 운영 체제의 *IPC 통신을 을 사용해야 합니다.
- 프로세스는 독립적으로 실행되며, 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않습니다. → pid도 다릅니다.
- 프로세스 간에는 오버헤드가 발생하며 context switching이 필요하므로 비용이 높습니다.
Thread
- Thread는 프로세스 내에서 실행되는 실행 흐름의 단위입니다. 한 프로세스 내에서 여러 개의 스레드가 동시에 실행될 수 있습니다. → 한 프로세스에는 무조건 한개의 쓰레드는 존재합니다.
- 스레드는 프로세스 내의 메모리를 공유하며, 동일한 자원에 접근할 수 있습니다
- 스레드는 프로세스 내에서 동시에 실행되기 때문에 한 스레드의 오류가 다른 스레드와 전체 프로세스에 영향을 줄 수 있습니다.
- 스레드 간의 전환은 프로세스 간 전환보다 빠르고, 비용이 낮습니다.
Process는 독립된 실행 단위로서 각각의 메모리 공간과 자원을 가지며, IPC를 통해 통신합니다.
Thread는 한 프로세스 내에서 실행되는 실행 흐름의 단위로서 메모리와 자원을 공유합니다
*IPC 통신이란?
사실 프로세스는 두가지 유형이 존재합니다
- Independent Process → 독립적인 프로세스
- Co-operating Process → 협력 프로세스
대부분의 프로세스가 독립적이라고 생각하지만, Co-operating하는 경우가 많습니다. (예를 들면 모듈화, 연산 속도 증가, 편의성(멀티 태스킹), 정보 공유 등). 위에 적었다시피 프로세스 간에는 서로 다른 독립적인 공간을 가지고 있기 때문에, 보통 Inter Process Comunication(줄여서 IPC)를 하게 됩니다.