유형이 동일한 많은 수의 컴퓨터를 빠른 네트워크를 통해 하나의 시스템으로 묶은 단위다.
세계적으로 흩어져 있는 여러 컴퓨터를 일반 네트워크를 통해 하나의 시스템으로 묶은 단위다. 컴퓨터 간의 물리적인 거리가 길고 각 컴퓨터의 유형이 다를 수 있다.
인터넷을 통해 여러 기기의 컴퓨팅 자원을 공유하는 개념이다. 여기서 Cloud
는 인터넷을 비유한 말이다. 사용자는 인터넷에 접속되어 있는 아무 기기를 통해 다른 기기의 컴퓨팅 자원을 이용할 수 있다.
20세기 말 컴퓨터는 다음과 같이 발전했다.
따라서 프로그램이 순차적(sequential
)으로 실행돼도 프로그램의 성능이 높아질 수 있었다.
하지만 2000년대 들어서 컴퓨터의 클럭 속도를 높이는데 한계가 왔다. 클럭 속도를 4~5GHz에서 더 높일 수록 발열과 전력 소모가 심해졌기 때문이다. 따라서 이때부터 컴퓨터의 아래와 같은 요소를 중점적으로 개발하기 시작했다.
하이퍼스레딩은 인텔이 처음 개발한 기술로서 하나의 물리 코어에 2개 이상의 스레드를 할당하는 방법이다. 프로그램이 시작해 프로세스의 스레드가 실행되면 CPU의 각 코어는 스레드를 처리한다. 이때 대부분의 스레드가 CPU의 자원을 100% 사용하진 않는다는 점을 이용하여 CPU의 남는 자원을 다음 스레드에게 할당한다. 즉, 1번의 클럭 사이클에 2개 이상의 스레드를 실행해서 CPU의 성능을 향상시키는 기술이다.
따라서 이제는 프로그램이 CPU의 모든 코어를 효율적으로 사용해야 성능이 높아질 수 있게 됐다. 하이퍼스레딩과 멀티 코어 CPU는 기존 순차적 프로그램 성능 향상에 영향을 주지 않는다. 기껏해야 스레드 인터리빙을 방지해 프로그램이 제 성능을 낼 수 있게 해줄 뿐이다. 즉, 기존 순차적 프로그래밍으론 프로그램의 성능을 높이기 힘들어졌다.
병렬처리가 가능한 부분을 각 스레드에 효율적으로 분배하는 것이 중요하다. 그에 따라 병렬처리를 지원하는 프로그래밍 언어가 등장했다. 자바는 기본으로 지원해왔고, C++은 C++11부터 thread
라이브러리를 통해 지원한다.