프로세스 vs 스레드

nyoung·2023년 7월 4일
2

cs

목록 보기
3/10

🖥️ 프로세스 (Process)

프로그램이란?

  • 프로그램은 컴퓨터에서 실행될 수 있는 명령어들의 집합을 의미한다. 즉, 우리가 자바나 C언어와 같은 언어를 이용해 작성한 코드의 집합이라는 것이다.
  • 프로그램은 실행되기 전까지는 정적인 상태이며, 하드 디스크, SSD, 서버 등의 저장 장치에 저장되어 있다.

프로세스란?

  • 프로세스는 운영 체제에서 실행 중인 프로그램의 인스턴스이며,프로그램이 메모리에 적재되어 실행되는 상태를 말한다.
  • 운영체제로부터 독립적인 메모리 공간을 할당받으며, 프로그램 코드, 데이터, 스택, 힙 등을 가진다.
  • 프로세스는 운영체제에 의해 관리되며, 실행 상태, 준비 상태, 대기 상태 등의 상태를 가진다.
  • 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다.
  • 각각의 프로세스는 독립된 메모리 공간, 실행 상태, 자원(파일, 네트워크 연결 등)을 가지고 있으며, 프로세스 간에 데이터를 주고 받기 위해서는 통신 방식을 사용해야 한다.



⌨️ 스레드 (Thread)

프로세스의 한계

과거에는 프로그램을 실행할 때 프로세스 하나만을 사용해서 이용했었다. 하지만 기술이 발전됨에 따라 프로그램이 복잡해지고 다채로워짐으로써 프로세스 작업 하나만을 사용해서 프로그램을 실행하기에는 한계가 있었다.

오늘날 컴퓨터는 파일을 다운 받으며 다른 일을 하는 멀티 작업은 너무 당연한 기능이라고 생각할지 모르겠지만, 과거에는 파일을 다운받으면 실행 시작부터 실행 끝까지 프로세스 하나만을 사용하기 때문에 다운이 완료될때까지 하루종일 기다려야 했다. 그렇다고 동일한 프로그램을 여러 개의 프로세스로 만들게 되면, 그만큼 메모리를 차지하고 CPU에서 할당받는 자원이 중복되게 될 것이다. 스레드(Thread)는 이러한 프로세스 특성의 한계를 해결하기 위해 탄생하였다.

스레드란?

  • 스레드는 프로세스 내에서 실행되는 실행 흐름 단위이다. 프로세스 내의 메모리 공간을 공유하며, 같은 자원을 함께 사용할 수 있다.
  • 하나의 프로세스 안에서 여러가지 작업들 흐름이 동시에 진행되는 것을 멀티(다중) 스레드 라고 부른다.
  • 프로세스의 4가지 메모리 영역(Code, Data, Heap, Stack) 중 스레드는 Stack만 할당받아 복사하고 Code, Data, Heap은 프로세스내의 다른 스레드들과 공유된다. 따라서 각각의 스레드는 별도의 stack을 가지고 있지만 heap 메모리는 고유하기 때문에 서로 다른 스레드에서 가져와 읽고 쓸 수 있게 된다.



🎛️ 멀티 프로세스와 멀티 스레드

멀티 프로세스란?

멀티프로세스는 여러 개의 독립적인 프로세스가 동시에 실행되는 것을 의미한다.
각 프로세스는 운영체제로부터 독립적인 메모리 공간을 할당받아 실행되게 된다.

  • 멀티 프로세스의 장점
    • 안정성이 높고 독립적인 환경 제공
    • 하나의 프로세스에 문제 발생 시 다른 프로세스에 영향을 주지 않음
    • 병렬 처리가 가능하여 성능 향상 기대 가능
  • 멀티 프로세스의 단점
    • 프로세스 간 통신을 위한 IPC 필요 (오버헤드 발생 가능)
    • 프로세스 간 자원 공유와 동기화가 복잡함
    • 메모리 사용량과 컨텍스트 스위칭 비용이 큼

멀티 스레드란?

멀티스레드는 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 것을 의미한다.
각 스레드는 프로세스 내의 메모리를 공유하고, 동일한 코드 영역을 실행하면서 각자의 작업을 수행한다다.

  • 멀티 스레드의 장점
    • 작업의 응답성 향상과 자원 효율성 높임
    • 통신과 데이터 공유가 간단하며 전역 변수에 접근 용이
  • 멀티 스레드의 단점
    • 스레드 간 동기화 문제에 주의해야 함
    • 하나의 스레드 예외 발생 시 전체 프로세스 종료 가능
    • 단일 CPU 시스템에서 병렬 처리 효과가 크지 않음

래퍼런스

완전히 정복하는 프로세스 vs 스레드 개념
프로세스와 스레드의 차이

profile
새싹 개발자

0개의 댓글