본문 바로가기
프로그래밍/CS

프로세스 vs 스레드 차이

by 숙님 2023. 3. 15.
728x90

0. 용어 정리 

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

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

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

 

 

1. Process & Thread 

[프로그램과 프로세스 차이]

프로그램: 치킨 레시피, 코드가 구현되어 있는 파일 

프로세스: 치킨, 코드가 운영되는 서비스 상태  

-> 프로그램이 프로세스가 됨 

 

[프로그램이 프로세스가 되는 과정 짤]

프로그램이 프로세스가 되는 과정 짤

 

[스레드가 나온 이유]

예를 들어 컴퓨터 코딩할 때 노래, vscode, 슬랙, 카카오톡을 사용함 

대부분의 사람이 하나의 프로세스만 사용하기보다는 여러 가지 동시에 사용을 원함 

원래 한 프로세스가 사용하기 위해 cpu를 점유하고 있으면 다른 프로세스는 실행상태에 있을 수가 없음 

동시에 사용하기 위해서 프로세스를 시분할, 짧은 텀으로 반복하면서 전환해서 실행을 함 이게 컨텍스트 스위칭임 

 

그래서 경량화 프로세스 버전인 ‘스레드’가 나옴 

하나의 프로세스 안에 다수 스레드가 있을 때 자원을 공유함 

컨텍스트 스위칭 시 캐싱 적중률이 올라감 

 

[컨텍스트 스위칭 비유]

회의실을 빌리는 상황

회의실 사용하는 사람은 모두 필요한 화면, 스피커, 리모컨들을 매번 치워 다음 예약자가 다시 설치 및 사용하는 것은 프로세스 방식이고,

타인도 것이니 놔두고 가서 다음 예약한 사람도 그대로 쓰는 것이 스레드컨텍스트스위칭임

 

2. Multi-process vs Multi-thread 

멀티 프로세스와 멀티 스레드 모두 한애플리케이션에대한 처리방식의 일종 

멀티 프로세스 / 멀티 쓰레드 장단점

익스플로러는 멀티 스레드를 이용

크롬은 멀티 프로세서를 이용 

 

 

3. 요약 

  • 프로세스는 프로그램이 실행된 것 
  • 스레드는 한 프로세스 내에서 나뉜 하나 이상의 실행단위
  • 한 애플리케이션에 대한 작업을 동시에 하기 위해서는 2가지 처리 방식(멀티 프로세스, 멀티 스레드)이 있음 
  • 동시에 실행되는 것처럼 보이기 하기 위해서 실행 단위는 시분할로 cpu를 점유하여 context switching을 함 
  • 멀티 프로세스는 독립적인 메모리를 가지고 있지만 멀티 스레드는 자원을 공유함, 각 장단점 존재 
  • 멀티 코어는 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 있도록 여러 프로세서가 있음 

 

 

출처

댓글