프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고, 스레드는 할당 받은 자원을 이용하는 실행의 단위이다.
스레드는 프로세스 내에 여러개가 생길 수 있다.
어플리케이션 하나가 프로세스이고, 그안에서의 분기 처리가 스레드가 되는 셈이다.
multi procss는 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것이다.
-장점 : 하나의 프로세스가 잘못되어도 프로그램은 동작한다.
-단점 : context switching 비용 발생
multi thread 는 프로그램을 여러개의 쓰레드로 구성하고 각 스레드가 작업을 처리하는 것이다.
-장점 : 시스템 자원 소모 감소, 처리 비용 감소(실행 속도 향상), 스레드간 자원 공유
-단점 : 디버깅 어려움, 동기화 이슈발생, 하나의 스레드의 오류로 전체 프로세스에 문제 발생
thread safe란 여러 스레드가 동시에 사용되어도 안전하다는 것을 뜻한다.
특정 함수 A와 변수 AA 가 여러 스레드에서 호출되어도 하나의 스레드에서 호출했을 때와 같은 결과가 보장되어야 한다는 의미.
(함수가 전역변수를 참조하게 된다면 그 함수는 Thread Safe 하지 않은 결과가 나올 수 있다.)
CPU 에서 여러 프로세스를 돌아가면서 작업을 처리하는데 이 과정을 Context Switching 이라고 한다.
동작중인 프로세스가 대기를 하면서 해당 프로세스의 상태(context)를 보관하고 대기하고 있다가 다시 실행시 복구하는 비용(시간)을 뜻한다.