HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏪
TS Store
/
🔖
프로세스 vs 쓰레드
🔖

프로세스 vs 쓰레드

Person
완료율%
상태
완료
나의 블로그
Think Sharing (TS)
🥇
프로세스 vs 쓰레드
프로세스 & 스레드프로세스프로세스의 구조멀티 태스킹스레드결론멀티 프로세스 & 멀티 스레드멀티 프로세스멀티 프로세스의 특징멀티 스레드멀티 스레드의 특징REF
 

프로세스 & 스레드

프로세스

  • 프로그램이 실행되면 프로세스 인스턴스가 생성된다.
    • 인스턴스가 생성된다는 의미는 프로그램 실행에 필요한 내용이 메모리(Ram)에 적재된다는 뜻
  • 즉 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태
    • 프로그램 : 어떤 작업을 하기 위해 실행할 수 있는 파일 또는 프로그램
    • notion image
  • 아래 그림과 같이 운영체제를 통해 여러 프로세스(프로그램)을 실행하고 관리할 수 있는데, 이를 멀티태스킹 이라고 한다.
notion image
 

프로세스의 구조

notion image
  • 코드 영역 : 프로그래머가 작성한 프로그램이 코드 영역에 저장됨
  • 데이터 영역 : 코드가 실행되면서 사용한 변수나 파일들의 각종 데이터들이 모여있다.
  • 스택 영역 : 호출한 함수가 종료되면 되돌아올 메모리의 주소를 스택에 저장하거나 변수 사용 범위에 영향을 미치는 영역을 구현할 때 사용된다.
  • 힙 영역 : 동적으로 할당되는 데이터들을 위해 존재하는 공간이다.
🔥
원칙적으로 서로 다른 프로세스간의 메모리 공간 접근은 허용하지 않는다. 만약 프로세스간 서로 다른 자원에 접근하려면 프로세스간의 통신을 해야한다.
  • Tip
    • CPU는 사실 한번에 한가지 명령어밖에 처리하지 못한다.
    • 즉 동시가 아닌 재빠르게 프로세스를 번갈아가며 실행하고, 관리하는 것이다.
    • CPU는 아주 빠르기 때문에 프로세스들을 번갈아 가며 실행하고 관리하는 것이 마치 동시에 하는 것처럼 보일 뿐이다.

멀티 태스킹

  • 멀티태스킹이란 OS를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드간에 나누는 행위를 말한다.
    • 이를 통해 여러 프로그램을 동시에 열고 작업할 수 있다는 장점이 있다.
 

스레드

  • 스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.
  • 일반적으로 하나의 애플리케이션은 하나 이상의 프로세스를 가지고 있고, 하나의 프로세스는 반드시 하나 이상의 스레드를 갖는다.
    • 즉 프로세스를 생성하면 기본적으로 하나의 메인스레드가 생성되는 것이다.
notion image
  • 스레드는 프로세스 내에서 각각 Stack만 할당받고, Code, Data, Heap 영역은 공유하게 된다.
  • 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유한다.
    • 하지만 프로세스는 다른 프로세스의 메모리에 접근할 수 없다 !
  • 한 스레드가 프로세스 자원을 변경하면 다른 이웃 스레드도 그 변경 결과를 즉시 확인할 수 있다.
 

결론

  • 프로세스는 자원을 공유하지 않지만 스레드는 자원을 공유한다.
 

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

멀티 프로세스

  • 멀티 프로세스란 하나의 애플리케이션을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다.
 

멀티 프로세스의 특징

  1. 안정성이 좋다. 여러개의 자식 프로세스 중 하나에 문제가 발생해도 다른 자식 프로세스에 영향이 확산되지 않는다.
  1. 구현이 비교적 간단하고, 각 프로세스들이 독립적으로 동작하며 자원의 서로 다르게 할당된다.
  1. 프로세스 간 통신을 하기 위해서는 IPC 를 통해야한다.
  1. 메모리 사용량이 많다.
  1. 스케쥴링에 따른 Context Switch가 만아지고 성능 저하의 우려가 있다.
 

멀티 스레드

  • 멀티 스레드란 하나의 애플리케이션을 여러 개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다.
  • 일반적으로 멀티스레드를 사용하는 이유는 사용자와 상호작용하는 애플리케이션에서 단일 스레드로 Network 또는 DB와 같은 긴 작업을 수행하는 경우 해당 작업을 처리하는 동안 사용자와 상호작용이 불능인 상태가 될 수 있기때문이다.
 

멀티 스레드의 특징

  1. 응답성이 좋다. 프로그램의 일부분이 오류 또는 긴 작업으로 인해 중단되어도 프로그램이 계속 수행된다.
  1. 자원 공유가 쉽다. 스레드들은 부모 프로세스의 자원과 메모리를 공유할 수 있다.
  1. 프로세스를 할당하는 것보다 스레드를 할당하는 것이 비용이 작다.
  1. 멀티프로세서 구조에서 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있다.
  1. 구현 및 테스트, 디버깅이 어렵다
  1. 너무 많은 스레드 사용은 오버헤드를 발생시킨다.
  1. 동기화 그리고 교착상태가 발생하지 않도록 주의해야 한다.
  1. 자식 스레드 중 하나에 문제가 생긴 경우 프로세스 전체에 영향을 줄 수 있다.
 

REF

👩‍💻 프로세스 vs 쓰레드 차이 정리
프로세스라는 명칭은 낯설수 있는데, 프로그램은 친숙하리라 생각된다. 우리가 흔히 말하는 프로그램이 실행되면 프로세스 인스턴스가 생성된다. 인스턴스가 생성된다는 의미는 프로그램 실행에 필요한 내용이 컴퓨터 메모리(Ram)에 적재 된다는 뜻이다. 일반적으로 프로세스와 프로그램을 같은 개념으로 이야기할 때가 많다. 하지만 엄밀히 따지면 이 둘은 다른 개념이다.
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4
👩‍💻 프로세스 vs 쓰레드 차이 정리