프로세스: 컴퓨터에서 실행중인 프로그램, 프로그램을 메모리 상에서 실행중인 작업
스레드: 프로세스 내에서 실행되는 흐름의 단위
여러 개의 프로세스를 동시에 실행하는 방식
프로세스는 독립된 메모리 공간을 가지고 있어 서로 다른 작업을 수행할 수 있다.
각각의 프로세스는 별도의 메모리 공간과 자원드을 가지고 있으므로 한 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 주지 않는다. -> (안전성이 높다.)
각 프로세스마다 독립적인 메모리 공간을 사용해 높은 자원 사용량과 오버헤드 발생, Context Switching으로 인한 성능 저하
Context Switching 이란?
운영체제의 스케줄러가 하나의 프로세스에서 다른 프로세스로 CPU 제어를 전환하는 과정
Context: 실행 중인 프로세스가 올바르게 동작하기 위해 필요한 모든 정보 (프로그램 카운터, 레지스터 값, 스택 포인터)
하나의 프로세스에서 스레드를 동시에 실행하는 방식
프로세스 내부에서 메모리를 공유하기 때문에 데이터 교환이 간단하다.
하나의 스레드가 데이터 공간을 망가뜨리면 모든 스레드가 작동이 불가하다. (메모리를 공유하기 때문)