포스트

프로세스와 스레드

프로세스와 스레드

멀티 태스킹

  • 단일 CPU에서 동시에 여러 작업을 수행하는 것을 의미
  • 소프트웨어 기반으로 CPU 시간을 분할하여 각 작업해 할당

CPU에서 어떤 프로그램이 얼마만큼 실행 될지는 운영체제가 결정하는데 이를 스케줄링 이라고 합니다.

멀티 프로세싱

  • 여러 CPU가 물리적으로 동시에 작업을 처리하는 것을 의미
  • 하드웨어 기반으로 성능을 향상

프로세스

  • 실행 중인 프로그램의 인스턴스
  • 각 프로세스는 독립적인 메모리 공간을 가짐

프로세스의 메모리 구성

  • 코드 섹션: 실행할 프로그램의 코드가 저장되는 부분
  • 데이터 섹션: 전역 변수 및 정적 변수가 저장되는 부분 (기타 부분)
  • 힙(Heap): 동적으로 할당되는 메모리 영역
  • 스택(Stack): 메서드 호출 시 생성되는 지역 변수와 반환 주소가 저장되는 영역 (스레드에 포함)

프로세서는 CPU를 의미합니다.

스레드(Thread)

  • 프로세스 내에서 실행되는 작은 단위
  • 실제 CPU에 의해 실행되는 단위

스레드의 메모리 구성

  • 공유 메모리: 같은 프로세스의 내의 자원을 공유
  • 개별 스택: 각 스레드는 자신의 스택을 가짐

스케줄링

  • CPU가 실행할 스레드를 배분하는 방법

컨텍스트 스위칭

  • 멀티 태스킹 과정에서 다른 스레드를 실행하기 전에 CPU에서 사용하던 값들을 메모리에 저장해 두고 다시 실행할 때 불러오는 과정

CPU 바운드 작업 vs I/O 바운드 작업

  • CPU 바운드 작업
    • CPU 연산 능력을 많이 요구하는 작업을 의미
    • 주로 계산, 데이터 처리, 알고리즘 실행 등
    • 스레드 생성
      • CPU + 1개
      • 거의 100% 사용하므로 최적화
  • I/O 바운드 작업
    • 디스크, 네트워크, 파일 시스템 등과 같은 입출력(I/O) 작업을 많이 요구하는 작업을 의미
    • I/O 작업 동안에는 CPU를 사용하지 않고 I/O 작업이 완료 될 때 까지 대기함
    • 스레드 생성
      • CPU 코어 수 보다 많이 생성
      • 너무 많이 생성하면 컨텍스트 스위칭 비용이 증가
      • 성능 테스트를 통해 적절한 스레드 개수를 찾는 것이 중요

웹 애플리케이션은 주로 I/O 작업이 많습니다.

참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.