Thread, Process, Core

Kkd·2024년 12월 12일
0

매일메일 개념정리

목록 보기
25/93

1. 스레드, 프로세스, 코어에 대한 개념

스레드 (Thread)

  • 정의:
    • 프로세스 내에서 실행되는 작업 단위.
    • 프로세스가 할당받은 자원을 공유하며, 병렬 처리를 가능하게 함.
  • 특징:
    • 한 프로세스에 여러 스레드가 존재 가능(멀티스레딩).
    • 같은 메모리 공간(힙, 코드)을 공유하지만, 각 스레드는 개별적인 스택을 가짐.
    • 데이터 공유는 쉽지만, 동기화 문제가 발생할 수 있음(예: Deadlock).

프로세스 (Process)

  • 정의:
    • 실행 중인 프로그램의 단위.
    • 운영체제(OS)가 자원을 할당하고 관리하는 독립적인 실행 단위.
  • 특징:
    • 고유의 메모리 공간(코드, 데이터, 힙, 스택)을 가짐.
    • 다른 프로세스와 독립적으로 동작.
    • 프로세스 간 데이터 공유는 어렵고 IPC(Inter-Process Communication)를 사용해야 함.

코어 (Core)

  • 정의:
    • CPU의 작업 처리 단위.
    • 코어 하나는 한 번에 하나의 스레드를 실행 가능(하이퍼스레딩 지원 시 두 개 이상 가능).
  • 특징:
    • 멀티코어 CPU는 여러 코어를 사용하여 다수의 스레드를 병렬로 처리.
    • 코어 수가 많을수록 동시 실행 가능한 작업 수가 증가.

2. 스레드, 프로세스, 코어 수는 많을수록 좋은가?

1) 스레드 수가 많을수록 좋은가?

  • 장점:

    • CPU가 유휴 상태로 있는 시간을 줄이고, 작업을 더 효율적으로 처리 가능.
    • I/O 작업 대기 시간 동안 다른 스레드가 CPU를 사용할 수 있음.
  • 단점:

    • 너무 많은 스레드는 컨텍스트 스위칭 비용 증가로 성능 저하 발생.
    • 동기화 문제가 발생할 가능성이 높아짐.
    • 적정 수준의 스레드 수 유지가 중요(코어 수 대비 적절히 설정).

2) 프로세스 수가 많을수록 좋은가?

  • 장점:

    • 각 프로세스는 독립적인 메모리 공간을 가지므로 하나의 프로세스 오류가 다른 프로세스에 영향을 주지 않음.
    • 분산 처리를 통해 효율성 증대 가능.
  • 단점:

    • 프로세스 간 데이터 공유가 어려움(IPC 필요).
    • 메모리와 CPU 자원 소모가 큼.
    • 시스템 성능을 초과하는 프로세스 실행 시 컨텍스트 스위칭메모리 부족 문제 발생.

3) 코어 수가 많을수록 좋은가?

  • 장점:

    • 작업을 병렬 처리할 수 있는 능력이 증가.
    • 멀티스레드/멀티프로세스 프로그램에서 성능 개선.
  • 단점:

    • 단일 스레드로 설계된 프로그램은 추가 코어를 활용하지 못함.
    • 코어 수가 늘어나도 메모리 대역폭이 부족하거나 I/O 병목이 있으면 성능 향상이 제한됨.
    • 물리적 코어 수 대비 효율적인 소프트웨어 설계가 중요.

결론

  1. 스레드 수는 많을수록 좋은 것이 아니라, 코어 수와 작업의 특성에 맞춰 적정 수준으로 조정해야 함.
  2. 프로세스 수는 리소스 한도 내에서 병렬 처리 이점을 얻을 수 있으나, 시스템 성능을 초과하면 성능이 하락할 수 있음.
  3. 코어 수는 병렬 처리 성능을 결정하지만, 하드웨어 성능과 소프트웨어 최적화의 조화를 고려해야 함.

따라서, 최적의 성능은 스레드, 프로세스, 코어 수 간의 균형과 작업 특성에 따라 달라집니다.


추가 학습 자료

profile
🌱

0개의 댓글