본문 바로가기
공부/CS

프로세스 vs 스레드를 비교해보자

by JERO__ 2022. 9. 8.

프로세스 vs 스레드

1. 프로세스

프로세서에 의해 실행되는 프로그램

  • disk의 프로그램을 실행하면 ram에 프로세스로 올라간다.
  • 프로세스 내에 스레드가 실행된다.
  • 모든 프로세스는 하나 이상의 스레드를 가진다.
  • jvm은 단일 프로세스가 실행된다.
  • 구조: Code, Data, Heap, Stack

2. 스레드

  • 프로세스와 같이 실행환경을 제공한다.
  • 프로세스를 새로 만드는 것보다 스레드는 새로 만드는 것이 적은 리소스
  • 프로세스의 리소스를 공유한다.

멀티 Tasking

  • CPU(프로세서)는 한 순간에 하나의 프로세스만 실행
  • OS가 짧은 시간에 실행하는 프로세스를 교체하기에 동시에 하고 있다고 느끼는 것(Context Switching)

Context Swiching

  • 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽는 과정
  • PCB를 통해 Task의 정보를 읽음 (Process Control Block)

멀티 프로세스 vs 멀티 스레드

  1. 멀티 프로세스
  • 같은 프로그램이라면 같은 데이터(Code, Data, Heap)을 다시 CPU에 적재해야 함
  • IPC(inter Process Communication), Context Switching 속도가 느림
  1. 멀티 스레드
  • 같은 데이터를 다시 CPU에 올려도 되지 않기 때문에 Context Swiching 비용이 적음
  • 스레드가 동시에 같은 데이터에 접근할 경우 문제가 발생할 수 있음

병렬 처리 종류

  1. 하이퍼 스레딩: 코어 하나에 파이프라인을 두개로 쪼개어 병렬적으로 수행
  2. 멀티 코어: 하나의 CPU에 코어가 여러개
  3. 멀티 CPU: 성능 좋지만 가격이 비쌈

멀티 코어

코어 : CPU에서 작업을 수행하는 주체(파이프라인에 들어온 명령어를 수행해주는 주체)

  • 프로세스 작업을 동시에 수행

스레드 풀(Thread Pool)이란?

스레드를 미리 생성해두고 사용한다.

  • 매번 생성 및 수거 요청이 올 때마다 스레드를 생성하고 수거하지 않는다
  • 작업큐에 들어온 Task를 Tread에 할당한다.

스레드 풀을 사용할 때 장단점을 알아보자

장점

  1. 성능 저하 방지 : 스레드를 새로 생성하거나 수거하면 성능이 저하될 수 있다.
  2. 다수의 요청을 처리하는데 유리: 속도가 빨라지기 때문

단점

  1. 스레드를 너무 만들어 놓으면 메모리 낭비만 발생한다.
  2. 놀고있는 스레드가 발생할 수 있다.

자바에서의 Thread Pool

스레드 풀 구현체를 만들어서 사용할 수 있도록 다음을 제공한다.

  • ExecutorService : 인터페이스
  • Executors : 클래스

댓글