운영체제 위에서 연속적으로 실행되고 있는 프로그램을 말한다.
프로세스는 여러개가 동시에 돌 수 있고 프로세스에 문제가 발생하면 문제가 발생한 프로세스만 죽게된다.
=> 프로세스는 운영체제 위에서 독립적으로 메모리에서 실행되고 있는 프로그램을 말한다.
각각의 프로세스는 사용할 수 있는 메모리나 데이터가 지정되어있다.
프로세스 안에는 프로그램을 실행하기 위한 CODE
가 들어 있고 CODE
의 함수들이 어떤 순서로 실행되어야 하는지 그리고 이 함수가 끝나면 어디로 다시 돌아가야 되는지에 대한 정보를 저장하고 있는 STACK
도 들어 있고 오브젝트를 생성하거나 데이터를 만들 때 그 데이터들이 저장되는 공간인 HEAP
도 있고 마지막으로 HEAP
에는 동적으로 할당된 변수들이 저장되는 반면 전역 변수나 스태틱 변수들이 할당되는 DATA
가 있다.
쓰레드는 한 프로세스 안에서 여러 개가 동작할 수 있다.
쓰레드는 각각 해야 되는 업무를 배정 받는다.
그래서 일꾼이라고도 불린다.
쓰레드는 자기들이 수행해야 되는 함수의 호출을 기억해야 되기 때문에 쓰레드마다 스택이 할당되어져 있다.
쓰레드는 동시다발적으로 발생할 수 있기 때문에 프로세스가 더 효울적으로 일을 할 수 있도록 도움을 준다.
CODE
, HEAP
, DATA
와 같은 공통 자원은 프로세스에 있기 때문에 쓰레드들은 이 프로세스에 공통적으로 할당된 자원에 동시다발적으로 접속해서 동시다발적으로 업데이트 해야 돼서 서로 공유하면서 사용한다.