실행 단위 : CPU Core에서 실행되는 하나의 단위로 프로세스 혹은 스레드
(부연 설명이 없는) 프로세스 : 하나의 스레드만 가지고 있는 단일 스레드 프로세스
Context Switching : CPU에서 여러 프로세스가 돌아가면서 작업을 처리하는 과정
Code : 컴파일된 소스코드가 저장되는 영역
Data : 전역변수, static 변수가 저장되는 영역
Heap : 동적으로 생성되는 데이터가 저장되는 영역
Stack : 호출된 함수 혹은 지역변수가 저장되는 영역
멀티 프로세스와 멀티 스레드는 한개의 어플리케이션에 대한 다른 두 가지 '처리방식'
멀티 프로세스는 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)를 처리하는 것이다.
각 프로세스는 독립적
IPC를 사용한 통신
자원 소모적, 개별 메모리 차지
Context Switching 비용이 큼
동기화 작업이 필요하지 않음
멀티 프로세스와 멀티 스레드는 한개의 어플리케이션에 대한 다른 두 가지 '처리방식'
멀티 스레드는 프로그램을 여러 개의 스레드로 구성하고 각 스레드가 작업(task)를 처리하는 것
Thread끼리 긴밀하게 연결되어 있음
공유된 자원으로 통신 비용 절감
공유된 자원으로 메모리가 절감
Context Switching 비용이 적음
공유 자원 관리를 해야함
멀티 스레드의 경우 긴밀하게 연결되어 있기 때문에 한 스레드에 문제가 발생하면 전체 프로세스에 영향이 간다.
반면 멀티 프로세스는 독립적이기 때문에 영향을 덜 받는다.
멀티 프로세스 사용예시 : 구글 크롬
https://brunch.co.kr/@babosamo/100
https://www.youtube.com/watch?v=1grtWKqTn50&list=WL&index=1&t=827s