스레드(Thread)

goyo·2022년 12월 29일

프로세스(Process)와 스레드(Thread)

프로세스(Process)

실행 중인 애플리케이션을 의미하며, 데이터, 컴퓨터 자원, 스레드로 구성됩니다.애플리케이션을 실행하면 운영체제로부터
실행에 필요한 만큼의 메모리를 할당 받아 프로세스가 됩니다.

 

스레드(Thread)

데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행합니다.
즉, 스레드는 하나의 코드 실행 흐름이라고 볼 수 있다.

 

메인 스레드(Main thread)

애플리케이션을 실행 시 가장 먼저 실행되는 main 메서드, 메인 스레드가
main 메서드를 실행시켜줍니다. main메서드의 코드를 처음부터 끝까지 순처적으로 실행시키고 코드의 끝을 만나거나 return 문을 만나면 실행 종료

 


멀티 스레드(Multi-Thread)

하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이를 멀티 스레드 프로세스라 하며 여러 개의 스레드를 가진다는 것은 여러 스레드가 동시에 작업을 수행할 수 있음을 의미합니다.
멀티 스레딩은 하나의 애플리케이션 내에서 여러 작업을 동시에 수행하는 멀티 태스킹을 구현하는 데에 핵심적인 역할을 수행합니다.

예를 들어 여러분들의 메신저 프로그램을 사용할 때, 상대방에게 보낼 사진을 업로드하면서 동시에 메세지를 주고받을 수 있습니다.
이처럼 메신저 프로그램이 여러 가지 작업을 동시에 수행하려면,작업을 동시에 실행해줄 스레드가 추가적으로 필요합니다.

 

프로세스와 스레드의 차이?

프로세스는 메모리 상에서 실행중인 프로그램을 말하고,
스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말함.
프로세스는 최소 하나의 스레드를 보유하고 있으며, 각각 별도의
주소공간을 독립적으로 할당받는다.(code,heap,stack)
스레드는 이중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유합니다

 

프로세스의 문제점

  • 프로세스 생성에 큰 오버헤드가 있다.(프로세스를 생성할 때 많은 시간을 소요)
  • 프로세스 컨텍스트 스위칭의 비효율성,오버헤드가큼
  • 프로세스 사이에 통신이 어렵다는 점(IPC사용해야함)

스레드의 출현 목적

  • 프로세스보다 크기가 작은 실행 단위 필요
  • 프로세스의 생성 및 소멸에 따른 오버헤드 감소
  • 빠른 컨텍스트 스위칭
  • 프로세스들의 통신 시간,방법 어려움 해소

0개의 댓글