본문 바로가기

복습/etc

[etc] 프로세스와 쓰레드의 차이

process_thread

Process 와 Thread 의 차이

Process 와 Thread 의 차이를 설명해주세요

신입이나 인턴의 기술면접 단골질문 중 하나인데 제대로 개념이 잡혀있지않다면 당황할 수 밖에 없다.
당황하기 싫어서 해당 글에서 정리를 해보려고한다.

먼저 개념부터 정리해보면

프로세스(Process) 란?

프로세스란 운영체제로부터 자원을 할당받는 작업 의 단위

쓰레드(Thread) 란?

프로세스가 할당받은 자원을 이용하는 실행 의 단위

하나의 프로세스가 실행되면 기본적으로 하나의 스레드가 생성이되는데 이를 메인스레드 라고 한다

그래서요?

정리하면, 어떤 프로그램을 실행을 하면 프로세스는 운영체제로부터 자원을 할당받는다. 해당 프로세스는 메인 스레드를 통해 코드를 실행하게된다.

여기까지 살펴본다면 각자의 프로세스는 각자의 필요한 자원들을 운영체제로부터 할당받고,
쓰레드는 각 프로세스에서 하나의 자원을 가지고 실행하는것이다.

프로세스와 스레드

공통점

멀티프로세서와 멀티쓰레드 모두 여러 흐름이 동시에 진행

차이점

멀티프로세서는 각자의 메모리를 가지고 있지만 멀티쓰레드는 해당 프로세스의 자원을 공유하며 사용한다.

프로세스간 전환보다 쓰레드간 전환이 속도가 더빠르고 효율적이다.


그렇기때문에 멀티프로세스를 멀티쓰레드로 변경

효율적으로 사용하기위해 멀티쓰레드로 바꾸게된다.

장점 은 다음과 같다.

  • 프로세스를 생성해 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
  • 프로세스간 통신비용보다 쓰레드간 통신비용이 적다.

단점 도 존재한다.

  • 메모리를 공유하므로 쓰레드간 통신 시 충돌 문제가 발생하지않도록 동기화문제 를 해결해야한다.

참고문서

프로세스와 스레드의 차이 - 강관우
프로세스와 스레드의 차이 - JayB Kim

'복습 > etc' 카테고리의 다른 글

[etc] REST API 를 알아보자  (0) 2018.07.21
[etc] 동기와 비동기, 블로킹과 논블로킹 정리  (0) 2018.07.02