- 프로세서, 코어, 프로그램, 프로세스, 스레드의 개념 파악
- 동시성과 병렬성의 차이 이해
컴퓨터 운영을 위해 기본적인 명령어들을 처리하고 반응하기 위한 논리회로이다.
대표적으로 CPU(중앙처리장치)
를 말하며 컴퓨터의 기억, 연산, 제어의 3대 기능을 종합하는 역할이다. 이러한 CPU의 기능을 보조하는 프로세서는 보조프로세서라고 한다.
코어는 각종 연산을 담당하는 연산회로이며 CPU의 핵심요소이다. 싱글코어는 연산회로가 하나인 것을 말하고 듀얼코어는 연산회로가 2개가 내장되어있음을 뜻한다. 마찬가지로 멀티코어는 여러개의 연산회로를 내장함(일반적을 3개 이상의 코어)을 말한다.
동시에 여러개의 프로세스를 운용하는 것을 멀티태스킹
이라 하며 이는 운영체제에서 담당하게된다. 반면에 하나의 프로세스에서 다수의 스레드를 운용하는 것을 멀티스레딩
이라 한다.
멀티태스킹 vs 멀티스레딩
멀티태스킹 : 하나의 프로세서 상에서 운영체제가 여러 개의 프로세스를 번갈아가며 하나의 프로그램의 기능들을 수행해나가는 개념. 여기서 프로세서가 여러 프로세스를 돌아가며 작업을 처리하는 과정을Context Switching
이라 한다.
// Context Switching : 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다
멀티스레딩 : 하나의 프로세스를 다수의 스레드로 구분하여 프로세스의 자원을 공유하며 기능수행 능력을 향상시키는 개념
공통점 : 아주 짧은 시간 간격을 두고 여러 개의 작업 흐름들을 번갈아 실행하므로 동시에 여러 개의 작업들이 실행되어지는 것처럼 보인다.(동시성 프로그래밍)
차이점
1. 멀티태스킹은 동시에 여러 개의 프로그램을 실행시키는 것처럼 보이고, 멀티스레딩은 하나의 프로그램을 여러 개의 기능으로 나누어 이를 동시에 실행시시는 것처럼 보인다는 점이 다르다.
2. 멀티태스킹은 운영체제가 알아서 관리해주지만, 멀티스레딩은 프로그래머가 프로그램 설계시에 직접 구현을 해야한다.
3. 멀티태스킹은 각각의 프로세스가 독립적인 메모리와 공간을 가지지만 멀티스레딩은 각각의 스레드가 공통된 프로세스의 자원들을 공유한다.
프로그램의 주 실행 흐름을 멈추어서 기다리는 부분 없이 바로 다음 작업을 실행할 수 있게 하는 방식이다.
즉, 코드의 실행 결과처리를 별도의 공간에 맡겨둔 뒤 결과를 기다리지 않고 바로 다음 코드를 실행하는 병렬처리 방식.
논리적인 용어이며 싱글코어 환경에서 멀티태스킹을 위해 시간을 분할해서 여러 프로세스와 스레드를 번갈아가며 실행한다. 이 과정이 너무 빠르다 보니 동시에 실행되는 것처럼 보이는 것을 말한다. 싱글 코어(멀티 코어에서도 가능)에서 멀티스레드를 동작시키키 위한 방식이다.
물리적으로 정확히 동시에 실행이 되는 것을 말한다. 멀티 코어에서 멀티 스레드를 실행시키는 방식이다.
동시성 프로그래밍과 병렬성 프로그래밍 모두 비동기로 동작을 구현할 수 있지만, 그 동작 원리가 다릅니다.