20년 전에는 프로그래머조차도 두 개 이상의 처리 자원을 가진 컴퓨터를 마주할 일이 아주 적었다. 그러나 오늘날에는 우리가 항상 들고 다니는 휴대폰도 처리 자원을 두 개 이상 갖고 있다. 그런 만큼 현대의 프로그래머는 여러 프로세스를 서로 다른 처리 자원에서 동시에 실행하는 멘탈 모형을 갖추어야 한다.
동시 알고리즘을 묘사할 때 구현에 사용할 특정 프로그래밍 언어를 알 필요는 없다. 오히려 알고리즘을 실행할 컴퓨터 시스템의 특징을 알아야 한다. 가장 효율적인 동시 알고리즘을 구축하려면 컴퓨터 시스템의 하드웨어를 가장 잘 활용하는 유형의 연산을 선택해야 한다. 그러려면 각 하드웨어 아키텍처의 능력을 이해할 필요가 있다.
병렬적인 하드웨어를 사용하는 이유는 당연히 성능이다. 목적이 목적이니만큼 코드의 효율성도 중요하다. 바꾸어 생각하면 프로그램을 실행할 하드웨어를 잘 알고 있어야 한다. 3장에서는 이후 소프트웨어를 잘 설계하는 데 도움이 되는 병렬적 하드웨어의 대략적인 사항을 알아본다.