Welcome! Everything is fine.

#15. 멀티 프로세스와 멀티 스레드 본문

CS 스터디

#15. 멀티 프로세스와 멀티 스레드

개발곰발 2024. 3. 7.
728x90

Multithreading VS Multiprocessing VS Asyncio (With Code examples) (linkedin.com)

동시성과 병렬성

멀티 프로세스와 멀티 스레드 개념을 잘 이해하려면 동시성과 병렬성에 대해 알아야 한다.

  • 동시성(concurrency) : 하나의 코어(싱글 코어)에서 여러 작업을 번갈아 가면서 처리하는 방식
    • CPU는 한 번에 하나의 작업만 처리할 수 있어서 여러 작업을 돌아가며 처리 Context Switching
    • Context Switching의 비용은 프로세스 > 스레드이다. 스레드는 stack 영역을 제외한 모든 영역을 공유하기 때문!
  • 병렬성(parallelism) : CPU가 여러 개(멀티코어) 있어 각 CPU에서 각 작업을 동시에 처리하는 방식

멀티 프로세스

  • 응용 프로그램 하나를 여러 프로세스로 구성하는 것을 의미
  • 장점 : 한 프로세스가 죽어도 다른 프로세스에 영향을 주지 않아 안정적
  • 단점 : 시간과 메모리 공간을 많이 사용, Context Switching에서의 오버헤드 많이 발생, IPC를 통해 자원을 공유 → 직접 참조하는 것보다 비효율적

멀티 스레드

  • 응용 프로그램 하나를 여러 스레드로 구성하는 것을 의미
  • 장점 : Context Switching에서의 오버헤드 적게 발생, 메모리와 시스템 자원 소모 감소
  • 단점 : 서로 다른 스레드가 Code, Data, Heap 영역 공유   다른 스레드에서 사용 중인 변수나 자료구조에 접근해 엉뚱한 값을 불러올 수 있음(동기화 문제), 한 스레드에 문제가 생기면 다른 스레드에도 영향을 미칠 수 있음

'CS 스터디' 카테고리의 다른 글

#17. HTTPS란?  (0) 2024.03.19
#16. 인덱스(Index)란? 인덱스의 목적, 장단점  (0) 2024.03.12
#14. 힙(Heap)  (0) 2024.02.27
#13. 트리(Tree)  (1) 2024.02.27
#12. 배열(Array)과 연결 리스트(LinkedList)  (0) 2024.02.20