Tech for good

[Python] 01. Difference between Process and Thread 본문

IT/Computer Science

[Python] 01. Difference between Process and Thread

Diana Kang 2022. 10. 2. 15:06

1. 프로세스(Process)

- 운영체제 -> 할당 받는 자원 단위 (실행 중인 프로그램)

Mac의 경우 Alt + Space 클릭하여, Search 창에 Activity Monitor 켜서 확인 가능

- CPU 동작 시간, 주소 공간 (독립적)

- Code, Data, Stack, Heap -> 독립적

- 최소 1개의 메인 스레드 보유

- 파이프, 파일, 소켓 등을 사용해서 프로세스간 통신 (Cost 높음) => Context Switching

 

2. 스레드(Thread)

- 프로세스(Process) 내에 실행 흐름 단위

- 프로세스의 자원 사용

- Stack만 별도 할당, 나머지는 공유(Code, Data, Heap)

- 메모리 공유(변수 공유)

- 한 스레드의 결과가 다른 스레드에 영향 끼침

- 동기화 문제는 정말 주의해야 함(디버깅이 어렵기 때문)

 

3. 멀티 스레드(Multi Thread)

- 한 개의 단일 어플리케이션(응용프로그램) -> 여러 스레드로 구성 후 작업 처리

- 시스템 자원 소요 감소(효율성), 처리량 증가(Cost 감소)

- 통신 부담 감소, 디버깅 어려움, 단일 프로세스에는 효과 미약, 자원 공유 문제(교착 상태;Deadlock), 프로세스 영향

 

3. 멀티 프로세스(Multi Process)

- 한 개의 단일 어플리케이션(응용프로그램) -> 여러 프로세스로 구성 후 작업 처리

- 한 개의 프로세스 문제 발생은 확산 없음 (프로세스 Kill)

- 캐시 체인지, Cost 비용 매우 높음(오버헤드), 복잡한 통신 방식 사용

 

 

 

 

 

* 아래 무료 샘플 강의를 듣고 정리한 내용입니다.

https://www.inflearn.com/course/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%99%84%EC%84%B1-%EC%9D%B8%ED%94%84%EB%9F%B0-%EC%98%A4%EB%A6%AC%EC%A7%80%EB%84%90#curriculum

 

고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Origi

기술면접 대비를 위해 OS 지식을 기반으로 멀티 스레딩 및 멀티프로세싱, 병렬성, 병행성 등의 문법을 다루기 위한 과정입니다. 다수의 자원으로 실행 효율을 높이는 방법에 대한 기반 지식을 학

www.inflearn.com