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

도니·2022년 4월 12일
0
post-custom-banner

프로세스 : 실제 메모리에서 실행되고 있는 프로그램
스레드 : 프로세스 안에서 동시에 실행되고 있는 작업들

프로세스

프로세스는 자신만의 메모리 공간을 가지어 사용될 수 있는 상태 혹은 실행 중인 상태라고 말 할 수 있다. 기본적으로 프로세스는 최소 1개의 스레드를 보유하고 있다.

프로세스 공간

  • Code: 컴파일된 소스 코드가 저장되어있는 영역
  • Data: 전역 변수/초기화된 데이터가 있는 영역
  • Heap: 임시 데이터들이 저장되는 영역
  • Stack: 동적으로 생성되는 데이터들이 있는 영역

스레드

프로세스가 할당 받은 자원을 이용하는 실행의 단위로 프로세스 내의 Heap, Data, Code 영역을 공유하여 사용한다. Stack은 쓰레드 별로 존재

멀티 프로세스 (Multi Process)

멀티 프로세스는 말 그대로 여러개의 프로세스가 동시에 처리되는 것을 의미한다.
장점으로는 프로세스 별로 메모리 공간을 가지고 있기 때문에 안정성이 있지만 여러가지의 프로세스가 많아지면 많아질 수록 Context Switching으로 인한 성능 저하가 발생 할 수 있다.

멀티 스레드 (Multi Thread)

멀티 스레드는 하나의 프로세스 안에서 여러개의 스레드가 처리되는 것을 의미한다.
장점으로는 프로세스 내의 메모리를 공유해서 사용하기 때문에 시간과 자원손실이 적고 작업전환도 빠르다.
단점으로는 자원들이 공유되기 때문에 안정성의 문제가 발생할 수 있는데 이때는 Critical Section 기법을 사용해 이를 처리한다.

profile
세상만사에 호기심
post-custom-banner

0개의 댓글