프로세스 (Process)

  1. 정의: 프로세스는 실행 중인 프로그램의 인스턴스입니다. 하나의 프로그램은 여러 프로세스로 실행될 수 있습니다.
  2. 독립성: 각 프로세스는 독립적인 메모리 공간을 갖고, 다른 프로세스와 메모리를 공유하지 않습니다.
  3. 자원 할당: 프로세스는 CPU 시간, 메모리 등 시스템 자원을 할당받습니다.
  4. 안전성: 하나의 프로세스가 오류가 발생해도 다른 프로세스에는 영향을 미치지 않습니다.
  5. 통신: 프로세스 간 통신(IPC)은 복잡하고, 메시지 패싱, 파이프, 소켓 등을 사용합니다.

스레드 (Thread)

  1. 정의: 스레드는 프로세스 내에서 실행되는 작업의 단위입니다. 하나의 프로세스는 여러 스레드를 가질 수 있습니다.
  2. 공유성: 같은 프로세스 내의 스레드는 메모리 공간과 자원을 공유합니다.
  3. 자원 할당: 스레드는 프로세스 내에서 할당된 자원을 공유합니다. 추가적으로 독립적인 자원 할당이 필요하지 않습니다.
  4. 성능: 스레드 간 전환은 프로세스 간 전환보다 빠르고, 메모리 공유로 인해 더 효율적인 통신이 가능합니다.
  5. 안전성: 스레드 간 메모리를 공유하기 때문에 하나의 스레드가 오류를 발생시키면 같은 프로세스 내 다른 스레드에도 영향을 미칠 수 있습니다.

요약

이해를 돕기 위한 그림:

프로세스
----------------------
| 프로세스 1          |
| ------------------  |
| | 스레드 1-1     |  |
| | 스레드 1-2     |  |
| | 스레드 1-3     |  |
| ------------------  |
----------------------

프로세스
----------------------
| 프로세스 2          |
| ------------------  |
| | 스레드 2-1     |  |
| | 스레드 2-2     |  |
| ------------------  |
----------------------