상세 컨텐츠

본문 제목

Process 와 Thread

똑똑한 개발/Algorithm 과 Data Structure

by 성댕쓰 2022. 2. 6. 12:59

본문

Process 와 Thread를 이해하고 차이점을 알아보자.


1. Process와 Thread 정의


Process는 메모리 할당, PID를 부여받고 실행중인 프로그램의 인스턴스이다.

Thread는 Process가 하나 이상 가지고 있는 실행 단위이다.

 

Process는 고유의 Code, Data, Heap, Stack 메모리를 할당 받는다.

Thread는 Code, Data, Heap 메모리는 공유하고 Stack 메모리는 각각 할당 받는다.

 

Process는 공유 메모리가 없기 때문에 IPC를 이용하여 서로 데이터를 주고 받아야 한다.

Thread는 공유 메모리 관리가 어렵기 때문에 잘 관리해야 한다.

 

한 어플리케이션에 대한 작업을 동시에 하기 위한 방법은 멀티 프로세스, 멀티 스레드 2 가지 방법이 있다.



2. Multi-process와 Multi-thread


Multi-process는 하나의 어플리케이션에 대한 작업을 다수의 process가 처리하는 방식이다.

각 프로세스는 독립적이다. 따라서 동기화 작업이 필요없고 IPC를 사용하여 통신해야 한다.

하지만 개별 메모리를 차지하기 메모리 관리입장에서 소모적이다. 또한 process가 context switching 비용이 thread보다 크다. 캐시된 모든 메모리를 저장하고 내린 뒤 이후 다시 복구해야 하기 때문이다.  어떠한 process의 장애가 전체 application에 critical한 영향을 미치지 않는 장점이 있다.

 

Multi-thread는 하나의 어플리케이션에 대한 작업을 다수의 thread가 처리하는 방식이다.

thread가 공유하는 메모리 영역이 있으므로 별도의 통신이 필요없고 메모리 관리면에서 효율적이다. 하지만 공유 자원을 잘 관리해야 하는 부담이 있다. context switching 비용은 Multi-process에 비해 적다. 어떠한 thread의 장애는 전체 application에 치명적인 영향을 미치는 단점이 있다.


참조 : [10분 테코톡] 🌷 코다의 Process vs Thread - YouTube

'똑똑한 개발 > Algorithm 과 Data Structure' 카테고리의 다른 글

OSI 7 계층  (0) 2022.02.06
Dead-lock과 해결 방법  (0) 2022.02.06
가상 메모리 기본  (0) 2022.02.05
Clustered, Non-Clustered Index  (0) 2022.02.05
Database Index 알아보기  (0) 2022.02.05

관련글 더보기

댓글 영역