Process and Thread - 프로세스와 스레드, 싱글/멀티 스레드

Allong·2023년 12월 8일
0

프로세스(Process)

  • 운영체제(OS)로부터 리소스를 할당 받은 작업의 단위를 의미
  • 프로그램이 하나의 코드 덩어리라면, 프로세스는 프로그램을 실행시켜 정적이었던 프로그램이 동적으로 변해 “프로그램이 돌아가고 있는 상태”를 의미
  • 즉, 컴퓨터에서 작업 중인 프로그램을 의미

스레드(Thread)

  • 프로세스가 할당받은 리소스를 이용하는 실행 흐름의 단위를 의미
  • 복잡해진 지금의 프로그램에서 프로세스 한 덩어리를 사용하기 위해 소요되는 시간을 줄이고 효율을 높이기 위해 등장한 개념
  • 즉 프로세스 특성의 한계를 극복하기 위한 방안
  • 스레드는 하나의 프로세스 내에서 동시에 진행되는 작업의 갈래, 흐름의 단위를 의미
  • 하나의 프로세스 안에서 스레드가 많을 수록 프로그램의 속도도 동시에 진행되는 작업이 많아 성능이 올라감

프로세스와 스레드의 차이

  • 프로세스
  1. 프로세스는 프로그램이 실행되어 프로세스가 만들어지면 Stack, Code, Data, Heap 으로 구성된 메모리 영역으로 구성되어 할당 받음
  2. 프로세스는 메모리에 별도의 주소 공간에서 실행되므로 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
  • 스레드
  1. 스레드는 프로세스의 4가지 메모리 영역 중 Stack 만 할당받아 복사하고 Code, Data, Heap 은 프로세스 내의 다른 스레드들과 공유됨
  2. 즉, 스레드는 별도의 Stack 을 가지지만 Heap 은 공유하므로 서로 다른 스레드에서 가져와 읽고 쓸 수 있음

싱글 스레드와 멀티 스레드

  • 멀티 스레드
    CPU의 최대 활용을 위해 프로그램의 둘 이상을 동시에 실행하는 기술
    이러한 작업은 컨텍스트 스위칭을 통해 이뤄짐
  • 싱글 스레드
    오직 하나의 스레드로만 실행하며, 하나의 레지스터와 스택으로 표현이 가능

싱글 스레드의 장점

  1. context-switch 작업을 요구하지 않는다.
  2. 자원 접근에 대한 동기화를 신경쓰지 않아도 된다.
  3. 단순히 CPU 만 사용하는 계산 작업이면 오히려 싱글스레드가 더 효율적이다.
  4. 프로그래밍 난이도가 쉽고, CPU 와 메모리를 적게 사용한다.

싱글 스레드의 단점

  1. 여러개의 CPU 를 잘 활용하지 못한다.
  2. 연산량이 많은 작업을 하는 경우, 그 작업이 완료되어야 다른 작업 수행이 가능하다.
  3. 싱글 스레드 모델은 에러 처리를 못하는 경우 멈춘다. 멀티 스레드는 에러 발생 시 새로운 스레드를 생성해 극복하지만 싱글 스레드는 그것이 불가능하기 때문.

멀티 스레드의 장점

  1. 응답성
    프로그램의 일부분(스레드 중 하나)이 중단되거나 긴 작업을 수행하더라도 프로그램의 수행이 계속되어 사용자에 대한 응답성이 증가한다. 다시 말해, 멀티 스레드 모델은 에러 발생 시 새로운 스래드를 생성해 극복한다. 단, 새로운 스레드 생성이나 놀고 있는 스레드 처리에는 비용이 발생한다.
  2. 경제성
    프로세스 내 자원들과 메모리를 공유하므로 시스템 자원 소모가 줄어든다. 스레드간 통신에도 쉽게 데이터 주고 받기가 가능하며, 프로세스의 context switching 과 달리 스레드 간의 context switching 은 캐시 메모리를 비울 필요가 없어 더 빠르다.
    멀티프로세서의 활용
  3. 다중 CPU 구조에서는 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있으므로 병렬성이 증가한다.

멀티 스레드의 단점

  1. context switching, 동기화 등의 이유로 싱글 코어 멀티 스레딩은 스레드 생성 시간이 오히려 오버헤드가 되어 싱글 스레드보다 느리다.
  2. 공유하는 자원에 동시 접근할 경우, 데이터와 힙 영역을 공유하므로 다른 스레드에서 사용중인 변수나 자료구조에 접근해 엉뚱한 값을 읽거나 수정할 수 있다. *그래서 동기화가 필요함
  3. 운영체제의 지원이 있어야 사용이 가능
  4. 프로그래밍 난이도가 높고, 스레드 수만큼 자원을 많이 사용한다.

0개의 댓글