컴퓨터에는 더블클릭하면 기능을 실행할 수 있는 아이콘들이 있다.
처음에는 이 아이콘들은 마냥 신기하기만 한 존재였다. 아무 것도 들어가있지 않아보이지만 기능들을 가지고 있으니까.
공부하다보니 알 수 있었다. 이 아이콘 하나하나가 프로그램이라는 사실을.
프로그램은 일련의 작업을 실행할 수 있는 파일을 의미한다.
프로그램 자체는 더블클릭하기 전까지는 그저 코드와 데이터의 묶음일 뿐이다. 하지만 프로그램을 실행하면 메모리에 할당이 되게 된다. 그러면 프로그램은 메모리 안에서 실행되고 있는 프로그램으로써 작업이 진행됩니다.
즉, 프로세스는 메모리가 할당되어 컴퓨터 안에서 실행되고 있는 프로그램이라고 할 수 있다.
프로그램을 실행하면 프로세스는 독립된 개체로 코드, 스텍, 힙, 데이터를 할당받습니다.
코드를 통해 프로그램이 작동된다.
데이터는 전역변수와 정적인 변수가 할당된다.
힙은 동적인 변수가 할당된다.
스텍은 함수의 실행 순서에 관한 정보가 포함되어있다.
각각의 프로세스는 서로를 침범할 수 없고(그래서 독립적이라는 것이다) 프로세스 하나가 작동이 안되면 프로세스 하나만 종료되게 된다.
스레드는 프로세스에서 실행되는 여러 흐름의 단위로 정의한다.
예를 들어 멜론 플레이어는 음악을 플레이어하는 기능과 음악을 불러오는 기능을 가지고 있다. 그렇다면 멜론 플레이어는 음악을 플레이하는 스레드와 음악을 불러오는 스레드를 가지고 있다는 것이다. 이렇듯 한 프로세스는 최소 한개의 스레드가 배정되게 된다.
스레드의 가장 큰 특징은 공유라고 할 수 있다.
프로세스가 할당한 함수(작업)의 순서를 스레드는 기억해야 하기 때문에 스레드는 스택을 포함하고 있다.
그러면서 하나의 프로세스의 작동을 위해 스레드는 공통된 코드, 데이터, 힙을 공유한다.
공유를 통하여서 프로세스는 응답시간을 단축시키고 자원소모를 줄일 수 있게 된다.