Computer Science/테크톡 정리

[CS 정리]프로세스 ( Process ) vs 쓰레드 ( Thread )

미스터로즈 2021. 8. 20. 09:06

우아한 테크톡 관련된 유튜브 강의 정리 내용입니다.

정확한 내용을 학습하고 싶으면 강의 링크를 참고하시면 됩니다.


실행 단위

cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념

 

프로세스

하나의 스레드만 가지고 있는 단일 스레드 프로세스

 

동시성

한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것


프로그램이 프로세스가 되면서 일어나는 건?

프로세스가 필요로 하는 것이 메모리에 올라갑니다.

이런 메모리는 4가지 영역으로 나눠져 있습니다.

 

PCB 블럭

 

여러 프로세스의 작업 진행

 

PCB 가 돌아가면서 진행을 하는데 이게 바로 컨텍스트 스위칭입니다.

 


이런 복잡함을 해결하기 위해 경량화된 프로세스 버전인 스레드입니다.

 

스레드는 코드 데이터 힙 영역을 공통된 자원으로 사용을 합니다.

각 스레드는 스택 부분만 따로 가지고 있습니다.

 

공유되는 자원이 있기 때문에 컨텍스트 스위칭이 일어날 때 캐싱 적중률이 올라갑니다.

모두 다 빼고 다시 다 넣을 필요가 없습니다....


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

이 두가지 개념 모두 처리방식의 일종입니다.

 

한 어플리 케이션이 여러 가지 일을 처리 해야 합니다.

fork를 통해서 자식 프로세스를 생성합니다.

자식 프로세스는 부모와 별개의 메모리 영역을 확보하게 됩니다.

 

특징

  • 각 프로세스는 독립적입니다.
  • IPC를 사용한 통신을 합니다.
  • 자원 소모적이며, 개별 메모리를 차지 합니다.
  • Context Switching 비용이 큽니다.
  • 동기화 작업이 필요하지 않습니다.

 

 

스레드는 한 프로세스 내에서 구분지어진 실행 단위입니다.

 

  • Thread 끼리 긴밀하게 연결되어 있습니다.
  • 공유된 자원으로 통신 비용이 절감됩니다.
  • 공유된 자원으로 메모리가 효율적입니다.
  • Context Switching 비용이 적습니다.
  • 공유 자원 관리를 해야합니다.

  • 프로세스는 프로그램이 실행된 것입니다.
  • 스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위입니다.
  • 한 어플리케이션에 대한 작업을 동시에 하기 위해서는 멀티프로세스, 멀티 스레드가 있습니다.
  • 동시에 실행이 되는 것처럼 보이기 위해서 실행 단위는 시분할로 cpu를 점유하며 context switching을 합니다.
  • 멀티 프로세스는 독립적인 메모리를 가지고 있지만 멀티 스레드는 자원을 고유합니다. 
  • 멀티 코어는 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세스가 있는 것입니다.