2.2.9 호출 스택
호출 스택(call stack)은 함수의 반환 주소를 저장해 호출된 함수의 실행이 완료되면 반환할 위치를 알려주는 데이터 구조이다. 스레드당 호출 스택 하나를 가진다.
모든 애플리케이션은 하나 이상의 개별 프로세스에서 실행된다. 프로세스를 통해 메모리와 리소스를 분리할 수 있다. 모든 프로세스는 하나 이상의 스레드를 갖는다. 스레드는 실행 단위를 의미하며, 모든 스레드는 운영 체제에서 서로 병렬로 실행되므로 멀티스레딩이라는 용어를 사용한다. 4코어 CPU 컴퓨터로도 운영 체제는 스레드 수천 개를 병렬로 실행할 수 있다. 대부분의 스레드는 다른 스레드가 완료되기를 기다렸다가 빈 슬롯에 스레드를 채우는 식으로 동작하기 때문에 모든 스레드가 병렬로 실행되는 것처럼 느껴진다. 이는 단일 CPU에서도 멀티태스킹이 가능하도록 한다.
이전의 유닉스 시스템에서는 프로세스가 애플리케이션 리소스를 위한 컨테이너이자 실행 단위였다. 이런 방식은 단순하면서도 훌륭했지만 좀비 프로세스와 같은 문제를 야기했다. 스레드는 실행 수명과 바로 연결되기 때문에 좀 더 가벼우며 이러한 문제가 없다.