Process vs Thread

깡깡·2021년 8월 18일
0

코다님의 10분 테코톡 Process vs Thread 영상을 보고 정리한 글 입니다.

Process?

프로그램을 메모리 상에서 실행중인 작업(실행이 되어서 사용되는 무언가)

구성요소
-Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
-Data : 전역변수, 정적변수, 배열 등 (초기화된 데이터)
-Heap : 동적 할당 시 사용 (new(), mallock() 등)
-Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)

Multi Process?

여러개의 일을 처리할 때 부모 프로세스가 자식 프로세스를 fork하여 일을 나눠 처리함.

-이때 각 프로세스는 독립적이므로 자원과 메모리를 많이 사용함 but 안전함.
-Context Switching 비용이 큼.
-동기화 작업이 필요하지 않음.

Context Switching?

프로세스의 상태 정보를 저장하고 복원하는 일련의 과정

다수의 프로세스를 동시에 실행하기 위해 여러 개 프로세스를 짧은 텀을 반복하면서(시분할) 전환해서 실행시키는 것

Thread?

프로세스 안에서 실행되는 여러 흐름 단위

-스레드는 Process의 스택 영역을 할당받고 나머지 영역은 공유한다.

Multi Thread?

프로세스 내에서 실행 단위가 여러 개의 스레드로 나뉘어지는 것.

-Thread끼리 긴밀하게 연결되어 있음.
-공유된 자원으로 통신 비용을 절감할 수 있고 메모리를 효율적으로 사용할 수 있음.
but 하나의 스레드가 공유된 자원을 망가트리면 모든 스레드에 영향을 끼침(Critical Section 기법을 사용하여 보완할 수 있다고 함)
-Context Swithing 비용이 적음.

Multi Core?

물리적으로 여러 코어를 사용해서 다수의 실행 단위를 한순간에 처리할 수 있게 하는 것(병렬 처리)

Process vs Thread?

프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하지만, 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용한다.

profile
개발세발자

0개의 댓글